Electroneum
Loading...
Searching...
No Matches
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
41
42#ifndef VALIDATOR_VAL_UTILS_H
43#define VALIDATOR_VAL_UTILS_H
45#include "sldns/pkthdr.h"
46struct query_info;
47struct reply_info;
48struct val_env;
49struct module_env;
50struct module_qstate;
52struct key_entry_key;
53struct regional;
54struct val_anchors;
55struct rrset_cache;
56struct sock_list;
57
82
95 struct query_info* origqinf, struct query_info* qinf,
96 struct reply_info* rep, size_t skip);
97
113 struct query_info* qinf, struct reply_info* rep,
114 size_t cname_skip, uint8_t** signer_name, size_t* signer_len);
115
129enum 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
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
264
284 size_t* wc_len);
285
294int val_chase_cname(struct query_info* qchase, struct reply_info* rep,
295 size_t* cname_skip);
296
311void 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
319void val_reply_remove_auth(struct reply_info* rep, size_t index);
320
329void val_check_nonsecure(struct module_env* env, struct reply_info* rep);
330
340 struct val_anchors* anchors, struct rrset_cache* r,
341 struct module_env* env);
342
351void val_mark_insecure(struct reply_info* rep, uint8_t* kname,
352 struct rrset_cache* r, struct module_env* env);
353
361size_t val_next_unchecked(struct reply_info* rep, size_t skip);
362
370 size_t* slen);
371
378
389void val_blacklist(struct sock_list** blacklist, struct regional* region,
390 struct sock_list* origin, int cross);
391
398int val_has_signed_nsecs(struct reply_info* rep, char** reason);
399
406
424struct 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 */
sec_status
enum sldns_enum_pkt_section sldns_pkt_section
Definition pkthdr.h:126
unsigned short uint16_t
Definition stdint.h:125
unsigned char uint8_t
Definition stdint.h:124
Definition dns.h:61
Definition val_kentry.h:55
uint8_t * name
Definition val_kentry.h:59
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)
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)
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)
int val_dsset_isusable(struct ub_packed_rrset_key *ds_rrset)
int val_rrset_wildcard(struct ub_packed_rrset_key *rrset, uint8_t **wc, size_t *wc_len)
val_classification
Definition val_utils.h:61
@ VAL_CLASS_UNTYPED
Definition val_utils.h:63
@ VAL_CLASS_UNKNOWN
Definition val_utils.h:65
@ VAL_CLASS_POSITIVE
Definition val_utils.h:67
@ VAL_CLASS_CNAME
Definition val_utils.h:69
@ VAL_CLASS_NAMEERROR
Definition val_utils.h:73
@ VAL_CLASS_CNAMENOANSWER
Definition val_utils.h:76
@ VAL_CLASS_ANY
Definition val_utils.h:80
@ VAL_CLASS_NODATA
Definition val_utils.h:71
@ VAL_CLASS_REFERRAL
Definition val_utils.h:78
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)
int val_favorite_ds_algo(struct ub_packed_rrset_key *ds_rrset)
void val_mark_indeterminate(struct reply_info *rep, struct val_anchors *anchors, struct rrset_cache *r, struct module_env *env)
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)
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)
size_t val_next_unchecked(struct reply_info *rep, size_t skip)
int val_chase_cname(struct query_info *qchase, struct reply_info *rep, size_t *cname_skip)
void val_find_rrset_signer(struct ub_packed_rrset_key *rrset, uint8_t **sname, size_t *slen)
int val_has_signed_nsecs(struct reply_info *rep, char **reason)
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)
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_mark_insecure(struct reply_info *rep, uint8_t *kname, struct rrset_cache *r, struct module_env *env)
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)
void val_reply_remove_auth(struct reply_info *rep, size_t index)
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)
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)