summaryrefslogtreecommitdiffstats
path: root/contrib/bind9/lib/bind/dst/dst_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bind9/lib/bind/dst/dst_api.c')
-rw-r--r--contrib/bind9/lib/bind/dst/dst_api.c153
1 files changed, 73 insertions, 80 deletions
diff --git a/contrib/bind9/lib/bind/dst/dst_api.c b/contrib/bind9/lib/bind/dst/dst_api.c
index 417c31f..bc730dc 100644
--- a/contrib/bind9/lib/bind/dst/dst_api.c
+++ b/contrib/bind9/lib/bind/dst/dst_api.c
@@ -1,5 +1,5 @@
#ifndef LINT
-static const char rcsid[] = "$Header: /proj/cvs/prod/bind9/lib/bind/dst/dst_api.c,v 1.4.2.6.8.4 2006/03/10 00:17:21 marka Exp $";
+static const char rcsid[] = "$Header: /proj/cvs/prod/bind9/lib/bind/dst/dst_api.c,v 1.10.332.5 2006/03/10 00:20:08 marka Exp $";
#endif
/*
@@ -78,7 +78,7 @@ static DST_KEY *dst_s_get_key_struct(const char *name, const int alg,
const int flags, const int protocol,
const int bits);
-/*
+/*%
* dst_init
* This function initializes the Digital Signature Toolkit.
* Right now, it just checks the DSTKEYPATH environment variable.
@@ -124,7 +124,7 @@ dst_init()
dst_hmac_md5_init();
}
-/*
+/*%
* dst_check_algorithm
* This function determines if the crypto system for the specified
* algorithm is present.
@@ -143,7 +143,7 @@ dst_check_algorithm(const int alg)
return (dst_t_func[alg] != NULL);
}
-/*
+/*%
* dst_s_get_key_struct
* This function allocates key structure and fills in some of the
* fields of the structure.
@@ -163,7 +163,7 @@ dst_s_get_key_struct(const char *name, const int alg, const int flags,
{
DST_KEY *new_key = NULL;
- if (dst_check_algorithm(alg)) /* make sure alg is available */
+ if (dst_check_algorithm(alg)) /*%< make sure alg is available */
new_key = (DST_KEY *) malloc(sizeof(*new_key));
if (new_key == NULL)
return (NULL);
@@ -183,7 +183,7 @@ dst_s_get_key_struct(const char *name, const int alg, const int flags,
return (new_key);
}
-/*
+/*%
* dst_compare_keys
* Compares two keys for equality.
* Parameters
@@ -209,8 +209,7 @@ dst_compare_keys(const DST_KEY *key1, const DST_KEY *key2)
return (key1->dk_func->compare(key1, key2));
}
-
-/*
+/*%
* dst_sign_data
* An incremental signing function. Data is signed in steps.
* First the context must be initialized (SIG_MODE_INIT).
@@ -236,8 +235,8 @@ dst_compare_keys(const DST_KEY *key1, const DST_KEY *key2)
* sig_len Length of the signature field in bytes.
* Return
* 0 Successfull INIT or Update operation
- * >0 success FINAL (sign) operation
- * <0 failure
+ * &gt;0 success FINAL (sign) operation
+ * &lt;0 failure
*/
int
@@ -257,8 +256,7 @@ dst_sign_data(const int mode, DST_KEY *in_key, void **context,
return (UNKNOWN_KEYALG);
}
-
-/*
+/*%
* dst_verify_data
* An incremental verify function. Data is verified in steps.
* First the context must be initialized (SIG_MODE_INIT).
@@ -300,8 +298,7 @@ dst_verify_data(const int mode, DST_KEY *in_key, void **context,
signature, sig_len));
}
-
-/*
+/*%
* dst_read_private_key
* Access a private key. First the list of private keys that have
* already been read in is searched, then the key accessed on disk.
@@ -330,7 +327,7 @@ dst_read_key(const char *in_keyname, const u_int16_t in_id,
char keyname[PATH_MAX];
DST_KEY *dg_key = NULL, *pubkey = NULL;
- if (!dst_check_algorithm(in_alg)) { /* make sure alg is available */
+ if (!dst_check_algorithm(in_alg)) { /*%< make sure alg is available */
EREPORT(("dst_read_private_key(): Algorithm %d not suppored\n",
in_alg));
return (NULL);
@@ -373,7 +370,7 @@ dst_write_key(const DST_KEY *key, const int type)
if (key == NULL)
return (0);
- if (!dst_check_algorithm(key->dk_alg)) { /* make sure alg is available */
+ if (!dst_check_algorithm(key->dk_alg)) { /*%< make sure alg is available */
EREPORT(("dst_write_key(): Algorithm %d not suppored\n",
key->dk_alg));
return (UNSUPPORTED_KEYALG);
@@ -390,19 +387,19 @@ dst_write_key(const DST_KEY *key, const int type)
return (priv+pub);
}
-/*
+/*%
* dst_write_private_key
* Write a private key to disk. The filename will be of the form:
- * K<key->dk_name>+<key->dk_alg>+<key->dk_id>.<private key suffix>.
+ * K&lt;key-&gt;dk_name&gt;+&lt;key-&gt;dk_alg+&gt;&lt;key-d&gt;k_id.&gt;&lt;private key suffix&gt;.
* If there is already a file with this name, an error is returned.
*
* Parameters
* key A DST managed key structure that contains
* all information needed about a key.
* Return
- * >= 0 Correct behavior. Returns length of encoded key value
+ * &gt;= 0 Correct behavior. Returns length of encoded key value
* written to disk.
- * < 0 error.
+ * &lt; 0 error.
*/
static int
@@ -417,8 +414,7 @@ dst_s_write_private_key(const DST_KEY *key)
if (key == NULL)
return (-1);
if (key->dk_KEY_struct == NULL)
- return (0); /* null key has no private key */
-
+ return (0); /*%< null key has no private key */
if (key->dk_func == NULL || key->dk_func->to_file_fmt == NULL) {
EREPORT(("dst_write_private_key(): Unsupported operation %d\n",
key->dk_alg));
@@ -450,12 +446,12 @@ dst_s_write_private_key(const DST_KEY *key)
return (len);
}
-/*
+/*%
*
* dst_read_public_key
* Read a public key from disk and store in a DST key structure.
* Parameters
- * in_name K<in_name><in_id>.<public key suffix> is the
+ * in_name K&lt;in_name&gt;&lt;in_id&gt;.&lt;public key suffix&gt; is the
* filename of the key file to be read.
* Returns
* NULL If the key does not exist or no name is supplied.
@@ -484,7 +480,7 @@ dst_s_read_public_key(const char *in_name, const u_int16_t in_id, int in_alg)
/*
* Open the file and read it's formatted contents up to key
* File format:
- * domain.name [ttl] [IN] KEY <flags> <protocol> <algorithm> <key>
+ * domain.name [ttl] [IN] KEY &lt;flags&gt; &lt;protocol&gt; &lt;algorithm&gt; &lt;key&gt;
* flags, proto, alg stored as decimal (or hex numbers FIXME).
* (FIXME: handle parentheses for line continuation.)
*/
@@ -531,7 +527,7 @@ dst_s_read_public_key(const char *in_name, const u_int16_t in_id, int in_alg)
while ((c = getc(fp)) != EOF)
if (!isspace(c))
break;
- ungetc(c, fp); /* return the charcter to the input field */
+ ungetc(c, fp); /*%< return the charcter to the input field */
/* Handle hex!! FIXME. */
if (fscanf(fp, "%d %d %d", &flags, &proto, &alg) != 3) {
@@ -574,8 +570,7 @@ dst_s_read_public_key(const char *in_name, const u_int16_t in_id, int in_alg)
return dst_buffer_to_key(in_name, alg, flags, proto, deckey, dlen);
}
-
-/*
+/*%
* dst_write_public_key
* Write a key to disk in DNS format.
* Parameters
@@ -629,8 +624,7 @@ dst_s_write_public_key(const DST_KEY *key)
return (1);
}
-
-/*
+/*%
* dst_dnskey_to_public_key
* This function converts the contents of a DNS KEY RR into a DST
* key structure.
@@ -651,10 +645,10 @@ dst_dnskey_to_key(const char *in_name, const u_char *rdata, const int len)
int alg ;
int start = DST_KEY_START;
- if (rdata == NULL || len <= DST_KEY_ALG) /* no data */
+ if (rdata == NULL || len <= DST_KEY_ALG) /*%< no data */
return (NULL);
alg = (u_int8_t) rdata[DST_KEY_ALG];
- if (!dst_check_algorithm(alg)) { /* make sure alg is available */
+ if (!dst_check_algorithm(alg)) { /*%< make sure alg is available */
EREPORT(("dst_dnskey_to_key(): Algorithm %d not suppored\n",
alg));
return (NULL);
@@ -691,8 +685,7 @@ dst_dnskey_to_key(const char *in_name, const u_char *rdata, const int len)
return (key_st);
}
-
-/*
+/*%
* dst_public_key_to_dnskey
* Function to encode a public key into DNS KEY wire format
* Parameters
@@ -714,7 +707,7 @@ dst_key_to_dnskey(const DST_KEY *key, u_char *out_storage,
if (key == NULL)
return (-1);
- if (!dst_check_algorithm(key->dk_alg)) { /* make sure alg is available */
+ if (!dst_check_algorithm(key->dk_alg)) { /*%< make sure alg is available */
EREPORT(("dst_key_to_dnskey(): Algorithm %d not suppored\n",
key->dk_alg));
return (UNSUPPORTED_KEYALG);
@@ -727,7 +720,7 @@ dst_key_to_dnskey(const DST_KEY *key, u_char *out_storage,
out_storage[loc++] = (u_char) key->dk_proto;
out_storage[loc++] = (u_char) key->dk_alg;
- if (key->dk_flags > 0xffff) { /* Extended flags */
+ if (key->dk_flags > 0xffff) { /*%< Extended flags */
val = (u_int16_t)((key->dk_flags >> 16) & 0xffff);
dst_s_put_int16(&out_storage[loc], val);
loc += 2;
@@ -748,8 +741,7 @@ dst_key_to_dnskey(const DST_KEY *key, u_char *out_storage,
return (-1);
}
-
-/*
+/*%
* dst_buffer_to_key
* Function to encode a string of raw data into a DST key
* Parameters
@@ -761,19 +753,19 @@ dst_key_to_dnskey(const DST_KEY *key, u_char *out_storage,
* NON-NULL the DST key
*/
DST_KEY *
-dst_buffer_to_key(const char *key_name, /* name of the key */
- const int alg, /* algorithm */
- const int flags, /* dns flags */
- const int protocol, /* dns protocol */
- const u_char *key_buf, /* key in dns wire fmt */
- const int key_len) /* size of key */
+dst_buffer_to_key(const char *key_name, /*!< name of the key */
+ const int alg, /*!< algorithm */
+ const int flags, /*!< dns flags */
+ const int protocol, /*!< dns protocol */
+ const u_char *key_buf, /*!< key in dns wire fmt */
+ const int key_len) /*!< size of key */
{
DST_KEY *dkey = NULL;
int dnslen;
u_char dns[2048];
- if (!dst_check_algorithm(alg)) { /* make sure alg is available */
+ if (!dst_check_algorithm(alg)) { /*%< make sure alg is available */
EREPORT(("dst_buffer_to_key(): Algorithm %d not suppored\n", alg));
return (NULL);
}
@@ -810,8 +802,7 @@ dst_key_to_buffer(DST_KEY *key, u_char *out_buff, int buf_len)
return (0);
}
-
-/*
+/*%
* dst_s_read_private_key_file
* Function reads in private key from a file.
* Fills out the KEY structure.
@@ -885,14 +876,14 @@ dst_s_read_private_key_file(char *name, DST_KEY *pk_key, u_int16_t in_id,
"dst_s_read_private_key_file(): Keyfile %s version higher than mine %d.%d MAY FAIL\n",
name, file_major, file_minor));
- while (*p++ != '\n') ; /* skip to end of line */
+ while (*p++ != '\n') ; /*%< skip to end of line */
if (!dst_s_verify_str((const char **) (void *)&p, "Algorithm: "))
goto fail;
if (sscanf((char *)p, "%d", &alg) != 1)
goto fail;
- while (*p++ != '\n') ; /* skip to end of line */
+ while (*p++ != '\n') ; /*%< skip to end of line */
if (pk_key->dk_key_name && !strcmp(pk_key->dk_key_name, name))
SAFE_FREE2(pk_key->dk_key_name, strlen(pk_key->dk_key_name));
@@ -925,34 +916,34 @@ dst_s_read_private_key_file(char *name, DST_KEY *pk_key, u_int16_t in_id,
return (0);
}
-
-/*
- * dst_generate_key
+/*%
* Generate and store a public/private keypair.
* Keys will be stored in formatted files.
+ *
* Parameters
- * name Name of the new key. Used to create key files
- * K<name>+<alg>+<id>.public and K<name>+<alg>+<id>.private.
- * bits Size of the new key in bits.
- * exp What exponent to use:
- * 0 use exponent 3
- * non-zero use Fermant4
- * flags The default value of the DNS Key flags.
- * The DNS Key RR Flag field is defined in RFC 2065,
+ &
+ *\par name Name of the new key. Used to create key files
+ *\li K&lt;name&gt;+&lt;alg&gt;+&lt;id&gt;.public and K&lt;name&gt;+&lt;alg&gt;+&lt;id&gt;.private.
+ *\par bits Size of the new key in bits.
+ *\par exp What exponent to use:
+ *\li 0 use exponent 3
+ *\li non-zero use Fermant4
+ *\par flags The default value of the DNS Key flags.
+ *\li The DNS Key RR Flag field is defined in RFC2065,
* section 3.3. The field has 16 bits.
- * protocol
- * Default value of the DNS Key protocol field.
- * The DNS Key protocol field is defined in RFC 2065,
+ *\par protocol
+ *\li Default value of the DNS Key protocol field.
+ *\li The DNS Key protocol field is defined in RFC2065,
* section 3.4. The field has 8 bits.
- * alg What algorithm to use. Currently defined:
- * KEY_RSA 1
- * KEY_DSA 3
- * KEY_HMAC 157
- * out_id The key tag is returned.
+ *\par alg What algorithm to use. Currently defined:
+ *\li KEY_RSA 1
+ *\li KEY_DSA 3
+ *\li KEY_HMAC 157
+ *\par out_id The key tag is returned.
*
* Return
- * NULL Failure
- * non-NULL the generated key pair
+ *\li NULL Failure
+ *\li non-NULL the generated key pair
* Caller frees the result, and its dk_name pointer.
*/
DST_KEY *
@@ -966,7 +957,7 @@ dst_generate_key(const char *name, const int bits, const int exp,
if (name == NULL)
return (NULL);
- if (!dst_check_algorithm(alg)) { /* make sure alg is available */
+ if (!dst_check_algorithm(alg)) { /*%< make sure alg is available */
EREPORT(("dst_generate_key(): Algorithm %d not suppored\n", alg));
return (NULL);
}
@@ -974,7 +965,7 @@ dst_generate_key(const char *name, const int bits, const int exp,
new_key = dst_s_get_key_struct(name, alg, flags, protocol, bits);
if (new_key == NULL)
return (NULL);
- if (bits == 0) /* null key we are done */
+ if (bits == 0) /*%< null key we are done */
return (new_key);
if (new_key->dk_func == NULL || new_key->dk_func->generate == NULL) {
EREPORT(("dst_generate_key_pair():Unsupported algorithm %d\n",
@@ -997,12 +988,11 @@ dst_generate_key(const char *name, const int bits, const int exp,
return (new_key);
}
-
-/*
- * dst_free_key
+/*%
* Release all data structures pointed to by a key structure.
+ *
* Parameters
- * f_key Key structure to be freed.
+ *\li f_key Key structure to be freed.
*/
DST_KEY *
@@ -1028,13 +1018,14 @@ dst_free_key(DST_KEY *f_key)
return (NULL);
}
-/*
- * dst_sig_size
+/*%
* Return the maximim size of signature from the key specified in bytes
+ *
* Parameters
- * key
+ *\li key
+ *
* Returns
- * bytes
+ * \li bytes
*/
int
dst_sig_size(DST_KEY *key) {
@@ -1052,3 +1043,5 @@ dst_sig_size(DST_KEY *key) {
return -1;
}
}
+
+/*! \file */
OpenPOWER on IntegriCloud