*cfgp = NULL;
}
-static isc_result_t
-generate_salt(unsigned char *salt, size_t saltlen) {
- unsigned char text[512 + 1];
- isc_region_t r;
- isc_buffer_t buf;
- isc_result_t result;
-
- if (saltlen > 256U) {
- return (ISC_R_RANGE);
- }
-
- isc_nonce_buf(salt, saltlen);
-
- r.base = salt;
- r.length = (unsigned int)saltlen;
-
- isc_buffer_init(&buf, text, sizeof(text));
- result = isc_hex_totext(&r, 2, "", &buf);
- RUNTIME_CHECK(result == ISC_R_SUCCESS);
- text[saltlen * 2] = 0;
-
- isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
- NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
- "generated salt: %s", text);
-
- return (ISC_R_SUCCESS);
-}
-
isc_result_t
named_server_signing(named_server_t *server, isc_lex_t *lex,
isc_buffer_t **text) {
return (ISC_R_UNEXPECTEDEND);
}
strlcpy(iterbuf, ptr, sizeof(iterbuf));
-
n = snprintf(nbuf, sizeof(nbuf), "%s %s %s", hashbuf,
flagbuf, iterbuf);
if (n == sizeof(nbuf)) {
* configurable.
*/
saltlen = 8;
- CHECK(generate_salt(salt, saltlen));
+ CHECK(dns_nsec3_generate_salt(salt, saltlen));
} else if (strcmp(ptr, "-") != 0) {
isc_buffer_t buf;
* 'nsec' points to a valid rdataset of type NSEC3
*/
+isc_result_t
+dns_nsec3_generate_salt(unsigned char *salt, size_t saltlen);
+/*%
+ * Generate a salt with the given salt length.
+ */
+
isc_result_t
dns_nsec3_hashname(dns_fixedname_t *result,
unsigned char rethash[NSEC3_MAX_HASH_LENGTH],
#include <isc/buffer.h>
#include <isc/hex.h>
#include <isc/iterated_hash.h>
-#include <isc/log.h>
#include <isc/md.h>
+#include <isc/nonce.h>
#include <isc/safe.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/dbiterator.h>
#include <dns/diff.h>
#include <dns/fixedname.h>
+#include <dns/log.h>
#include <dns/nsec.h>
#include <dns/nsec3.h>
#include <dns/rdata.h>
return (present);
}
+isc_result_t
+dns_nsec3_generate_salt(unsigned char *salt, size_t saltlen) {
+ unsigned char text[255 * 2 + 1];
+ isc_region_t r;
+ isc_buffer_t buf;
+ isc_result_t result;
+
+ if (saltlen > 255U) {
+ return (ISC_R_RANGE);
+ }
+
+ isc_nonce_buf(salt, saltlen);
+
+ r.base = salt;
+ r.length = (unsigned int)saltlen;
+
+ isc_buffer_init(&buf, text, sizeof(text));
+ result = isc_hex_totext(&r, 2, "", &buf);
+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
+ text[saltlen * 2] = 0;
+
+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DNSSEC, DNS_LOGMODULE_DNSSEC,
+ ISC_LOG_INFO, "generated salt: %s", text);
+
+ return (ISC_R_SUCCESS);
+}
+
isc_result_t
dns_nsec3_hashname(dns_fixedname_t *result,
unsigned char rethash[NSEC3_MAX_HASH_LENGTH],