2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

Clean up the implementation cleanup mechanism. Also remove ->issymmetric,

since it's easier to just do it in dst_api.c.
This commit is contained in:
Brian Wellington
2001-11-06 20:47:59 +00:00
parent 04f158ce9a
commit ba45e16a66
7 changed files with 46 additions and 76 deletions

View File

@@ -19,7 +19,7 @@
/*
* Principal Author: Brian Wellington
* $Id: dst_api.c,v 1.91 2001/11/06 18:08:07 bwelling Exp $
* $Id: dst_api.c,v 1.92 2001/11/06 20:47:52 bwelling Exp $
*/
#include <config.h>
@@ -156,18 +156,15 @@ dst_lib_init(isc_mem_t *mctx, isc_entropy_t *ectx, unsigned int eflags) {
void
dst_lib_destroy(void) {
int i;
RUNTIME_CHECK(dst_initialized == ISC_TRUE);
dst_initialized = ISC_FALSE;
dst__hmacmd5_destroy();
for (i = 0; i < DST_MAX_ALGS; i++)
if (dst_t_func[i] != NULL && dst_t_func[i]->cleanup != NULL)
dst_t_func[i]->cleanup();
#ifdef OPENSSL
dst__opensslrsa_destroy();
dst__openssldsa_destroy();
dst__openssldh_destroy();
dst__openssl_destroy();
#endif
#ifdef GSSAPI
dst__gssapi_destroy();
#endif
if (dst_memory_pool != NULL)
isc_mem_detach(&dst_memory_pool);
@@ -893,6 +890,25 @@ read_public_key(const char *filename, isc_mem_t *mctx, dst_key_t **keyp) {
return (ret);
}
static isc_boolean_t
issymmetric(const dst_key_t *key) {
REQUIRE(dst_initialized == ISC_TRUE);
REQUIRE(VALID_KEY(key));
switch (key->key_alg) {
case DST_ALG_RSAMD5:
case DST_ALG_RSASHA1:
case DST_ALG_DSA:
case DST_ALG_DH:
return (ISC_FALSE);
case DST_ALG_HMACMD5:
case DST_ALG_GSSAPI:
return (ISC_TRUE);
default:
return (ISC_FALSE);
}
}
/*
* Writes a public key to disk in DNS format.
*/
@@ -944,7 +960,7 @@ write_public_key(const dst_key_t *key, const char *directory) {
if ((fp = fopen(filename, "w")) == NULL)
return (DST_R_WRITEERROR);
if (key->func->issymmetric()) {
if (issymmetric(key)) {
access = 0;
isc_fsaccess_add(ISC_FSACCESS_OWNER,
ISC_FSACCESS_READ | ISC_FSACCESS_WRITE,

View File

@@ -17,7 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dst_internal.h,v 1.38 2001/08/28 03:58:25 marka Exp $ */
/* $Id: dst_internal.h,v 1.39 2001/11/06 20:47:53 bwelling Exp $ */
#ifndef DST_DST_INTERNAL_H
#define DST_DST_INTERNAL_H 1
@@ -86,7 +86,6 @@ struct dst_func {
const dst_key_t *key2);
isc_result_t (*generate)(dst_key_t *key, int parms);
isc_boolean_t (*isprivate)(const dst_key_t *key);
isc_boolean_t (*issymmetric)(void);
void (*destroy)(dst_key_t *key);
/* conversion functions */
@@ -94,6 +93,9 @@ struct dst_func {
isc_result_t (*fromdns)(dst_key_t *key, isc_buffer_t *data);
isc_result_t (*tofile)(const dst_key_t *key, const char *directory);
isc_result_t (*fromfile)(dst_key_t *key, const char *filename);
/* cleanup */
void (*cleanup)(void);
};
/*
@@ -112,12 +114,6 @@ isc_result_t dst__gssapi_init(struct dst_func **funcp);
*/
void dst__openssl_destroy(void);
void dst__hmacmd5_destroy(void);
void dst__opensslrsa_destroy(void);
void dst__openssldsa_destroy(void);
void dst__openssldh_destroy(void);
void dst__gssapi_destroy(void);
/*
* Memory allocators using the DST memory pool.
*/

View File

@@ -16,7 +16,7 @@
*/
/*
* $Id: gssapi_link.c,v 1.7 2001/03/21 20:45:55 bwelling Exp $
* $Id: gssapi_link.c,v 1.8 2001/11/06 20:47:54 bwelling Exp $
*/
#ifdef GSSAPI
@@ -182,12 +182,6 @@ gssapi_isprivate(const dst_key_t *key) {
return (ISC_TRUE);
}
static isc_boolean_t
gssapi_issymmetric(const dst_key_t *key) {
UNUSED(key);
return (ISC_TRUE);
}
static void
gssapi_destroy(dst_key_t *key) {
UNUSED(key);
@@ -205,12 +199,12 @@ static dst_func_t gssapi_functions = {
NULL, /* paramcompare */
gssapi_generate,
gssapi_isprivate,
gssapi_issymmetric,
gssapi_destroy,
NULL, /* todns */
NULL, /* fromdns */
NULL, /* tofile */
NULL, /* fromfile */
NULL, /* cleanup */
};
isc_result_t
@@ -220,10 +214,6 @@ dst__gssapi_init(dst_func_t **funcp) {
return (ISC_R_SUCCESS);
}
void
dst__gssapi_destroy(void) {
}
#else
int gssapi_link_unneeded = 1;
#endif

View File

@@ -19,7 +19,7 @@
/*
* Principal Author: Brian Wellington
* $Id: hmac_link.c,v 1.54 2001/09/15 00:01:52 bwelling Exp $
* $Id: hmac_link.c,v 1.55 2001/11/06 20:47:55 bwelling Exp $
*/
#include <config.h>
@@ -156,11 +156,6 @@ hmacmd5_isprivate(const dst_key_t *key) {
return (ISC_TRUE);
}
static isc_boolean_t
hmacmd5_issymmetric(void) {
return (ISC_TRUE);
}
static void
hmacmd5_destroy(dst_key_t *key) {
HMAC_Key *hkey = key->opaque;
@@ -272,12 +267,12 @@ static dst_func_t hmacmd5_functions = {
NULL, /* paramcompare */
hmacmd5_generate,
hmacmd5_isprivate,
hmacmd5_issymmetric,
hmacmd5_destroy,
hmacmd5_todns,
hmacmd5_fromdns,
hmacmd5_tofile,
hmacmd5_fromfile,
NULL, /* cleanup */
};
isc_result_t
@@ -286,7 +281,3 @@ dst__hmacmd5_init(dst_func_t **funcp) {
*funcp = &hmacmd5_functions;
return (ISC_R_SUCCESS);
}
void
dst__hmacmd5_destroy(void) {
}

View File

@@ -19,7 +19,7 @@
/*
* Principal Author: Brian Wellington
* $Id: openssldh_link.c,v 1.39 2001/09/15 00:01:53 bwelling Exp $
* $Id: openssldh_link.c,v 1.40 2001/11/06 20:47:57 bwelling Exp $
*/
#ifdef OPENSSL
@@ -170,11 +170,6 @@ openssldh_isprivate(const dst_key_t *key) {
return (ISC_TF(dh != NULL && dh->priv_key != NULL));
}
static isc_boolean_t
openssldh_issymmetric(void) {
return (ISC_FALSE);
}
static void
openssldh_destroy(dst_key_t *key) {
DH *dh = key->opaque;
@@ -513,6 +508,13 @@ BN_fromhex(BIGNUM *b, const char *str) {
RUNTIME_CHECK(out != NULL);
}
void
openssldh_cleanup(void) {
BN_free(&bn2);
BN_free(&bn768);
BN_free(&bn1024);
}
static dst_func_t openssldh_functions = {
NULL, /* createctx */
NULL, /* destroyctx */
@@ -524,12 +526,12 @@ static dst_func_t openssldh_functions = {
openssldh_paramcompare,
openssldh_generate,
openssldh_isprivate,
openssldh_issymmetric,
openssldh_destroy,
openssldh_todns,
openssldh_fromdns,
openssldh_tofile,
openssldh_fromfile,
openssldh_cleanup,
};
isc_result_t
@@ -545,11 +547,4 @@ dst__openssldh_init(dst_func_t **funcp) {
return (ISC_R_SUCCESS);
}
void
dst__openssldh_destroy(void) {
BN_free(&bn2);
BN_free(&bn768);
BN_free(&bn1024);
}
#endif /* OPENSSL */

View File

@@ -17,7 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: openssldsa_link.c,v 1.5 2001/09/15 00:01:54 bwelling Exp $ */
/* $Id: openssldsa_link.c,v 1.6 2001/11/06 20:47:58 bwelling Exp $ */
#ifdef OPENSSL
@@ -206,11 +206,6 @@ openssldsa_isprivate(const dst_key_t *key) {
return (ISC_TF(dsa != NULL && dsa->priv_key != NULL));
}
static isc_boolean_t
openssldsa_issymmetric(void) {
return (ISC_FALSE);
}
static void
openssldsa_destroy(dst_key_t *key) {
DSA *dsa = key->opaque;
@@ -424,12 +419,12 @@ static dst_func_t openssldsa_functions = {
NULL, /* paramcompare */
openssldsa_generate,
openssldsa_isprivate,
openssldsa_issymmetric,
openssldsa_destroy,
openssldsa_todns,
openssldsa_fromdns,
openssldsa_tofile,
openssldsa_fromfile,
NULL, /* cleanup */
};
isc_result_t
@@ -439,8 +434,4 @@ dst__openssldsa_init(dst_func_t **funcp) {
return (ISC_R_SUCCESS);
}
void
dst__openssldsa_destroy(void) {
}
#endif /* OPENSSL */

View File

@@ -17,7 +17,7 @@
/*
* Principal Author: Brian Wellington
* $Id: opensslrsa_link.c,v 1.14 2001/11/06 17:59:50 bwelling Exp $
* $Id: opensslrsa_link.c,v 1.15 2001/11/06 20:47:59 bwelling Exp $
*/
#ifdef OPENSSL
@@ -243,11 +243,6 @@ opensslrsa_isprivate(const dst_key_t *key) {
return (ISC_TF(rsa != NULL && rsa->d != NULL));
}
static isc_boolean_t
opensslrsa_issymmetric(void) {
return (ISC_FALSE);
}
static void
opensslrsa_destroy(dst_key_t *key) {
RSA *rsa = key->opaque;
@@ -507,12 +502,12 @@ static dst_func_t opensslrsa_functions = {
NULL, /* paramcompare */
opensslrsa_generate,
opensslrsa_isprivate,
opensslrsa_issymmetric,
opensslrsa_destroy,
opensslrsa_todns,
opensslrsa_fromdns,
opensslrsa_tofile,
opensslrsa_fromfile,
NULL, /* cleanup */
};
isc_result_t
@@ -522,8 +517,4 @@ dst__opensslrsa_init(dst_func_t **funcp) {
return (ISC_R_SUCCESS);
}
void
dst__opensslrsa_destroy(void) {
}
#endif /* OPENSSL */