63 *salt_len = (uint8_t) strlen(salt_str);
64 if (*salt_len == 1 && salt_str[0] ==
'-') {
68 }
else if (*salt_len % 2 != 0) {
69 ods_log_error(
"[%s] invalid salt %s", nsec3_str, salt_str);
71 return ODS_STATUS_ERR;
74 salt_tmp = (uint8_t*) calloc(*salt_len / 2,
sizeof(uint8_t));
76 ods_log_error(
"[%s] construct salt data for %s failed", nsec3_str,
79 return ODS_STATUS_MALLOC_ERR;
81 for (c = 0; c < *salt_len; c += 2) {
82 if (isxdigit((
int) salt_str[c]) && isxdigit((
int) salt_str[c+1])) {
83 salt_tmp[c/2] = (uint8_t) ldns_hexdigit_to_int(salt_str[c]) * 16 +
84 ldns_hexdigit_to_int(salt_str[c+1]);
86 ods_log_error(
"[%s] invalid salt %s", nsec3_str, salt_str);
87 free((
void*)salt_tmp);
89 return ODS_STATUS_ERR;
92 *salt_len = *salt_len / 2;
142 uint16_t iter,
const char* salt, ldns_rr* rr,
const char* version)
147 fprintf(fd,
";;Nsec3parameters: salt %s algorithm %u optout %u "
148 "iterations %u\n", ((salt&&strlen(salt))?salt:
"-"), (
unsigned) algo,
149 (unsigned) flags, (
unsigned) iter);
150 if (strcmp(version, ODS_SE_FILE_MAGIC_V2) == 0) {
152 (void)util_rr_print(fd, rr);
154 fprintf(fd,
";;Nsec3done\n");
void nsec3params_backup(FILE *fd, uint8_t algo, uint8_t flags, uint16_t iter, const char *salt, ldns_rr *rr, const char *version)