*/
saltlen = 8;
CHECK(dns_nsec3_generate_salt(salt, saltlen));
+ dns_nsec3_log_salt(
+ named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
+ NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
+ salt, saltlen, "generated salt:");
} else if (strcmp(ptr, "-") != 0) {
isc_buffer_t buf;
#include <isc/iterated_hash.h>
#include <isc/lang.h>
+#include <isc/log.h>
#include <dns/db.h>
#include <dns/diff.h>
isc_result_t
dns_nsec3_generate_salt(unsigned char *salt, size_t saltlen);
-/*%
+/*%<
* Generate a salt with the given salt length.
*/
+void
+dns_nsec3_log_salt(isc_log_t *lctx, isc_logcategory_t *category,
+ isc_logmodule_t *module, int level, unsigned char *salt,
+ size_t saltlen, const char *fmt, ...);
+/*%<
+ * Utility to log the salt.
+ */
+
isc_result_t
dns_nsec3_hashname(dns_fixedname_t *result,
unsigned char rethash[NSEC3_MAX_HASH_LENGTH],
#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>
isc_result_t
dns_nsec3_generate_salt(unsigned char *salt, size_t saltlen) {
+ if (saltlen > 255U) {
+ return (ISC_R_RANGE);
+ }
+ isc_nonce_buf(salt, saltlen);
+ return (ISC_R_SUCCESS);
+}
+
+void
+dns_nsec3_log_salt(isc_log_t *lctx, isc_logcategory_t *category,
+ isc_logmodule_t *module, int level, unsigned char *salt,
+ size_t saltlen, const char *fmt, ...) {
+ va_list ap;
+
+ char message[4096];
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);
+ if (!isc_log_wouldlog(dns_lctx, level)) {
+ return;
}
- isc_nonce_buf(salt, saltlen);
+ va_start(ap, fmt);
+
+ vsnprintf(message, sizeof(message), fmt, ap);
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);
+ if (result == ISC_R_SUCCESS) {
+ text[saltlen * 2] = 0;
+ } else {
+ text[0] = 0;
+ }
+ isc_log_write(lctx, category, module, level, "%s %s", message, text);
- return (ISC_R_SUCCESS);
+ va_end(ap);
}
isc_result_t