Electroneum
val_utils.h
Go to the documentation of this file.
1 /*
2  * validator/val_utils.h - validator utility functions.
3  *
4  * Copyright (c) 2007, NLnet Labs. All rights reserved.
5  *
6  * This software is open source.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * Neither the name of the NLNET LABS nor the names of its contributors may
20  * be used to endorse or promote products derived from this software without
21  * specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 
42 #ifndef VALIDATOR_VAL_UTILS_H
43 #define VALIDATOR_VAL_UTILS_H
44 #include "util/data/packed_rrset.h"
45 #include "sldns/pkthdr.h"
46 struct query_info;
47 struct reply_info;
48 struct val_env;
49 struct module_env;
50 struct module_qstate;
51 struct ub_packed_rrset_key;
52 struct key_entry_key;
53 struct regional;
54 struct val_anchors;
55 struct rrset_cache;
56 struct sock_list;
57 
81 };
82 
95  struct query_info* origqinf, struct query_info* qinf,
96  struct reply_info* rep, size_t skip);
97 
112 void val_find_signer(enum val_classification subtype,
113  struct query_info* qinf, struct reply_info* rep,
114  size_t cname_skip, uint8_t** signer_name, size_t* signer_len);
115 
129 enum sec_status val_verify_rrset(struct module_env* env, struct val_env* ve,
130  struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* keys,
131  uint8_t* sigalg, char** reason, sldns_pkt_section section,
132  struct module_qstate* qstate);
133 
146  struct val_env* ve, struct ub_packed_rrset_key* rrset,
147  struct key_entry_key* kkey, char** reason, sldns_pkt_section section,
148  struct module_qstate* qstate);
149 
167  struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset,
168  struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason,
169  struct module_qstate* qstate);
170 
189  struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset,
190  struct ub_packed_rrset_key* ta_ds,
191  struct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason,
192  struct module_qstate* qstate);
193 
218 struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region,
219  struct module_env* env, struct val_env* ve,
220  struct ub_packed_rrset_key* dnskey_rrset,
221  struct ub_packed_rrset_key* ds_rrset, int downprot, char** reason,
222  struct module_qstate* qstate);
223 
224 
249  struct module_env* env, struct val_env* ve,
250  struct ub_packed_rrset_key* dnskey_rrset,
251  struct ub_packed_rrset_key* ta_ds_rrset,
252  struct ub_packed_rrset_key* ta_dnskey_rrset,
253  int downprot, char** reason, struct module_qstate* qstate);
254 
263 int val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset);
264 
283 int val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t** wc,
284  size_t* wc_len);
285 
294 int val_chase_cname(struct query_info* qchase, struct reply_info* rep,
295  size_t* cname_skip);
296 
311 void val_fill_reply(struct reply_info* chase, struct reply_info* orig,
312  size_t cname_skip, uint8_t* name, size_t len, uint8_t* signer);
313 
319 void val_reply_remove_auth(struct reply_info* rep, size_t index);
320 
329 void val_check_nonsecure(struct module_env* env, struct reply_info* rep);
330 
339 void val_mark_indeterminate(struct reply_info* rep,
340  struct val_anchors* anchors, struct rrset_cache* r,
341  struct module_env* env);
342 
351 void val_mark_insecure(struct reply_info* rep, uint8_t* kname,
352  struct rrset_cache* r, struct module_env* env);
353 
361 size_t val_next_unchecked(struct reply_info* rep, size_t skip);
362 
369 void val_find_rrset_signer(struct ub_packed_rrset_key* rrset, uint8_t** sname,
370  size_t* slen);
371 
377 const char* val_classification_to_string(enum val_classification subtype);
378 
389 void val_blacklist(struct sock_list** blacklist, struct regional* region,
390  struct sock_list* origin, int cross);
391 
398 int val_has_signed_nsecs(struct reply_info* rep, char** reason);
399 
405 int val_favorite_ds_algo(struct ub_packed_rrset_key* ds_rrset);
406 
424 struct dns_msg* val_find_DS(struct module_env* env, uint8_t* nm, size_t nmlen,
425  uint16_t c, struct regional* region, uint8_t* topname);
426 
427 #endif /* VALIDATOR_VAL_UTILS_H */
struct key_entry_key * val_verify_new_DNSKEYs_with_ta(struct regional *region, struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *dnskey_rrset, struct ub_packed_rrset_key *ta_ds_rrset, struct ub_packed_rrset_key *ta_dnskey_rrset, int downprot, char **reason, struct module_qstate *qstate)
struct key_entry_key * val_verify_new_DNSKEYs(struct regional *region, struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *dnskey_rrset, struct ub_packed_rrset_key *ds_rrset, int downprot, char **reason, struct module_qstate *qstate)
void val_find_signer(enum val_classification subtype, struct query_info *qinf, struct reply_info *rep, size_t cname_skip, uint8_t **signer_name, size_t *signer_len)
Definition: dns.h:61
void val_mark_insecure(struct reply_info *rep, uint8_t *kname, struct rrset_cache *r, struct module_env *env)
int val_has_signed_nsecs(struct reply_info *rep, char **reason)
enum val_classification val_classify_response(uint16_t query_flags, struct query_info *origqinf, struct query_info *qinf, struct reply_info *rep, size_t skip)
int val_dsset_isusable(struct ub_packed_rrset_key *ds_rrset)
struct dns_msg * val_find_DS(struct module_env *env, uint8_t *nm, size_t nmlen, uint16_t c, struct regional *region, uint8_t *topname)
const char * val_classification_to_string(enum val_classification subtype)
unsigned short uint16_t
Definition: stdint.h:125
enum sec_status val_verify_rrset_entry(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *rrset, struct key_entry_key *kkey, char **reason, sldns_pkt_section section, struct module_qstate *qstate)
unsigned char uint8_t
Definition: stdint.h:124
const char * name
int val_chase_cname(struct query_info *qchase, struct reply_info *rep, size_t *cname_skip)
val_classification
Definition: val_utils.h:61
void val_find_rrset_signer(struct ub_packed_rrset_key *rrset, uint8_t **sname, size_t *slen)
sec_status
Definition: packed_rrset.h:176
void val_mark_indeterminate(struct reply_info *rep, struct val_anchors *anchors, struct rrset_cache *r, struct module_env *env)
void val_check_nonsecure(struct module_env *env, struct reply_info *rep)
void val_blacklist(struct sock_list **blacklist, struct regional *region, struct sock_list *origin, int cross)
int val_favorite_ds_algo(struct ub_packed_rrset_key *ds_rrset)
enum sec_status val_verify_rrset(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *rrset, struct ub_packed_rrset_key *keys, uint8_t *sigalg, char **reason, sldns_pkt_section section, struct module_qstate *qstate)
void val_fill_reply(struct reply_info *chase, struct reply_info *orig, size_t cname_skip, uint8_t *name, size_t len, uint8_t *signer)
Definition: val_kentry.h:55
enum sec_status val_verify_DNSKEY_with_TA(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *dnskey_rrset, struct ub_packed_rrset_key *ta_ds, struct ub_packed_rrset_key *ta_dnskey, uint8_t *sigalg, char **reason, struct module_qstate *qstate)
void val_reply_remove_auth(struct reply_info *rep, size_t index)
enum sec_status val_verify_DNSKEY_with_DS(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *dnskey_rrset, struct ub_packed_rrset_key *ds_rrset, uint8_t *sigalg, char **reason, struct module_qstate *qstate)
int val_rrset_wildcard(struct ub_packed_rrset_key *rrset, uint8_t **wc, size_t *wc_len)
size_t val_next_unchecked(struct reply_info *rep, size_t skip)
enum sldns_enum_pkt_section sldns_pkt_section
Definition: pkthdr.h:126