ldns_buffer_free(sign_buf); /* restart for the next key */
}
+ ldns_rr_list_deep_free(rrset_clone);
return signatures;
}
ldns_rr_push_rdf(nsec, ldns_rdf_new_frm_data(LDNS_RDF_TYPE_NSEC, cur_data_size, data));
+ LDNS_FREE(bitmap);
+ LDNS_FREE(data);
return nsec;
}
uint16_t i;
ldns_rr_type cur_rrset_type;
- ldns_rr_list *next_rrset;
-
signed_zone = ldns_zone_new();
/* there should only be 1 SOA, so the soa record is 1 rrset */
ldns_rr_list_push_rr(soa_rrset, ldns_zone_soa(zone));
cur_rrsigs = ldns_sign_public(soa_rrset, key_list);
cur_dname = ldns_rr_owner(ldns_rr_list_rr(soa_rrset, 0));
+ ldns_rr_list_free(soa_rrset);
ldns_zone_set_soa(signed_zone, ldns_rr_clone(ldns_zone_soa(zone)));
ldns_zone_push_rr_list(signed_zone, cur_rrsigs);
+ ldns_rr_list_free(cur_rrsigs);
orig_zone_rrs = ldns_rr_list_clone(ldns_zone_rrs(zone));
signed_zone_rrs = ldns_rr_list_new();
- next_rrset = ldns_rr_list_pop_rrset(orig_zone_rrs);
- next_dname = ldns_rr_owner(ldns_rr_list_rr(next_rrset, 0));
/*
printf("UNSORTED:\n");
cur_rrsigs = ldns_sign_public(cur_rrset, key_list);
ldns_zone_push_rr_list(signed_zone, cur_rrset);
ldns_zone_push_rr_list(signed_zone, cur_rrsigs);
+ ldns_rr_list_free(cur_rrsigs);
} else {
/* push it unsigned? */
ldns_zone_push_rr_list(signed_zone, cur_rrset);
}
+ ldns_rr_list_free(cur_rrset);
cur_rrset = ldns_rr_list_pop_rrset(signed_zone_rrs);
}
-
+ ldns_rr_list_free(signed_zone_rrs);
return signed_zone;
}
ldns_key_set_inception(newkey, 0);
ldns_key_set_expiration(newkey, 0);
ldns_key_set_pubkey_owner(newkey, NULL);
+ ldns_key_set_rsa_key(newkey, NULL);
+ ldns_key_set_dsa_key(newkey, NULL);
+ ldns_key_set_hmac_key(newkey, NULL);
return newkey;
}
}
if (ldns_key_pubkey_owner(key)) {
ldns_rdf_deep_free(ldns_key_pubkey_owner(key));
}
+ switch(ldns_key_algorithm(key)) {
+ case LDNS_SIGN_RSASHA1:
+ case LDNS_SIGN_RSAMD5:
+ if (ldns_key_rsa_key(key)) {
+ RSA_free(ldns_key_rsa_key(key));
+ }
+ break;
+ case LDNS_SIGN_DSA:
+ if (ldns_key_dsa_key(key)) {
+ DSA_free(ldns_key_dsa_key(key));
+ }
+ break;
+ case LDNS_SIGN_HMACMD5:
+ break;
+ }
LDNS_FREE(key);
}
exit(1);
} else {
orig_zone = ldns_zone_new_frm_fp_l(zonefile, origin, ttl, class, &line_nr);
-
if (!orig_zone) {
fprintf(stderr, "Zone not read\n");
} else {
/*origin = ldns_rdf_new_frm_str(LDNS_RDF_TYPE_DNAME, ".");*/
origin = ldns_rr_owner(orig_soa);
}
-
+
keys = ldns_key_list_new();
} else {
fprintf(stderr, "Error signing zone.");
}
- ldns_zone_deep_free(orig_zone);
ldns_key_list_free(keys);
+
+ ldns_zone_deep_free(orig_zone);
return 0;
}