00001
00003 #ifndef LDNS_DNSSEC_SIGN_H
00004 #define LDNS_DNSSEC_SIGN_H
00005
00006 #include <ldns/dnssec.h>
00007
00008 #ifdef __cplusplus
00009 extern "C" {
00010 #endif
00011
00012
00013
00015 #define LDNS_SIGN_DNSKEY_WITH_ZSK 1
00016
00023 ldns_rr *
00024 ldns_create_empty_rrsig(ldns_rr_list *rrset,
00025 ldns_key *key);
00026
00034 ldns_rdf *
00035 ldns_sign_public_buffer(ldns_buffer *sign_buf, ldns_key *key);
00036
00043 ldns_rr_list *ldns_sign_public(ldns_rr_list *rrset, ldns_key_list *keys);
00044
00045 #if LDNS_BUILD_CONFIG_HAVE_SSL
00046
00052 ldns_rdf *ldns_sign_public_dsa(ldns_buffer *to_sign, DSA *key);
00053
00064 ldns_rdf *ldns_sign_public_evp(ldns_buffer *to_sign,
00065 EVP_PKEY *key,
00066 const EVP_MD *digest_type);
00067
00074 ldns_rdf *ldns_sign_public_rsasha1(ldns_buffer *to_sign, RSA *key);
00075
00082 ldns_rdf *ldns_sign_public_rsamd5(ldns_buffer *to_sign, RSA *key);
00083 #endif
00084
00099 ldns_status
00100 ldns_dnssec_zone_mark_and_get_glue(
00101 ldns_dnssec_zone *zone, ldns_rr_list *glue_list);
00102
00113 ldns_status
00114 ldns_dnssec_zone_mark_glue(ldns_dnssec_zone *zone);
00115
00124 ldns_rbnode_t *ldns_dnssec_name_node_next_nonglue(ldns_rbnode_t *node);
00125
00134 ldns_status ldns_dnssec_zone_create_nsecs(ldns_dnssec_zone *zone,
00135 ldns_rr_list *new_rrs);
00136
00140 ldns_status
00141 ldns_dnssec_zone_create_nsec3s(ldns_dnssec_zone *zone,
00142 ldns_rr_list *new_rrs,
00143 uint8_t algorithm,
00144 uint8_t flags,
00145 uint16_t iterations,
00146 uint8_t salt_length,
00147 uint8_t *salt);
00148
00163 ldns_dnssec_rrs *ldns_dnssec_remove_signatures(ldns_dnssec_rrs *signatures,
00164 ldns_key_list *key_list,
00165 int (*func)(ldns_rr *, void *),
00166 void *arg);
00167
00186 ldns_status ldns_dnssec_zone_create_rrsigs_flg(ldns_dnssec_zone *zone,
00187 ldns_rr_list *new_rrs,
00188 ldns_key_list *key_list,
00189 int (*func)(ldns_rr *, void*),
00190 void *arg,
00191 int flags);
00192
00206 ldns_status ldns_dnssec_zone_create_rrsigs(ldns_dnssec_zone *zone,
00207 ldns_rr_list *new_rrs,
00208 ldns_key_list *key_list,
00209 int (*func)(ldns_rr *, void*),
00210 void *arg);
00211
00237 ldns_status ldns_dnssec_zone_sign_flg(ldns_dnssec_zone *zone,
00238 ldns_rr_list *new_rrs,
00239 ldns_key_list *key_list,
00240 int (*func)(ldns_rr *, void *),
00241 void *arg,
00242 int flags);
00243
00260 ldns_status ldns_dnssec_zone_sign_nsec3_flg(ldns_dnssec_zone *zone,
00261 ldns_rr_list *new_rrs,
00262 ldns_key_list *key_list,
00263 int (*func)(ldns_rr *, void *),
00264 void *arg,
00265 uint8_t algorithm,
00266 uint8_t flags,
00267 uint16_t iterations,
00268 uint8_t salt_length,
00269 uint8_t *salt,
00270 int signflags);
00271
00291 ldns_status ldns_dnssec_zone_sign_nsec3_flg_mkmap(ldns_dnssec_zone *zone,
00292 ldns_rr_list *new_rrs,
00293 ldns_key_list *key_list,
00294 int (*func)(ldns_rr *, void *),
00295 void *arg,
00296 uint8_t algorithm,
00297 uint8_t flags,
00298 uint16_t iterations,
00299 uint8_t salt_length,
00300 uint8_t *salt,
00301 int signflags,
00302 ldns_rbtree_t **map
00303 );
00304
00305
00326 ldns_status ldns_dnssec_zone_sign(ldns_dnssec_zone *zone,
00327 ldns_rr_list *new_rrs,
00328 ldns_key_list *key_list,
00329 int (*func)(ldns_rr *, void *),
00330 void *arg);
00331
00347 ldns_status ldns_dnssec_zone_sign_nsec3(ldns_dnssec_zone *zone,
00348 ldns_rr_list *new_rrs,
00349 ldns_key_list *key_list,
00350 int (*func)(ldns_rr *, void *),
00351 void *arg,
00352 uint8_t algorithm,
00353 uint8_t flags,
00354 uint16_t iterations,
00355 uint8_t salt_length,
00356 uint8_t *salt);
00357
00364 ldns_zone *ldns_zone_sign(const ldns_zone *zone, ldns_key_list *key_list);
00365
00377 ldns_zone *ldns_zone_sign_nsec3(ldns_zone *zone, ldns_key_list *key_list, uint8_t algorithm, uint8_t flags, uint16_t iterations, uint8_t salt_length, uint8_t *salt);
00378
00379 #ifdef __cplusplus
00380 }
00381 #endif
00382
00383 #endif