Home | History | Annotate | Line # | Download | only in irs
      1 /*	$NetBSD: dnsconf.h,v 1.1 2024/02/18 20:57:47 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      5  *
      6  * SPDX-License-Identifier: MPL-2.0
      7  *
      8  * This Source Code Form is subject to the terms of the Mozilla Public
      9  * License, v. 2.0.  If a copy of the MPL was not distributed with this
     10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
     11  *
     12  * See the COPYRIGHT file distributed with this work for additional
     13  * information regarding copyright ownership.
     14  */
     15 
     16 #ifndef IRS_DNSCONF_H
     17 #define IRS_DNSCONF_H 1
     18 
     19 /*! \file
     20  *
     21  * \brief
     22  * The IRS dnsconf module parses an "advanced" configuration file related to
     23  * the DNS library, such as trust anchors for DNSSEC validation, and creates
     24  * the corresponding configuration objects for the DNS library modules.
     25  *
     26  * Notes:
     27  * This module is very experimental and the configuration syntax or library
     28  * interfaces may change in future versions.  Currently, only static
     29  * key configuration is supported; "trusted-keys" and "trust-anchors"/
     30  * "managed-keys" statements will be parsed exactly as they are in
     31  * named.conf, except that "trust-anchors" and "managed-keys" entries will
     32  * be treated as if they were configured with "static-key", even if they
     33  * were actually configured with "initial-key".
     34  */
     35 
     36 #include <irs/types.h>
     37 
     38 /*%
     39  * A compound structure storing DNS key information mainly for DNSSEC
     40  * validation.  A dns_key_t object will be created using the 'keyname' and
     41  * 'keydatabuf' members with the dst_key_fromdns() function.
     42  */
     43 typedef struct irs_dnsconf_dnskey {
     44 	dns_name_t   *keyname;
     45 	isc_buffer_t *keydatabuf;
     46 	ISC_LINK(struct irs_dnsconf_dnskey) link;
     47 } irs_dnsconf_dnskey_t;
     48 
     49 typedef ISC_LIST(irs_dnsconf_dnskey_t) irs_dnsconf_dnskeylist_t;
     50 
     51 ISC_LANG_BEGINDECLS
     52 
     53 isc_result_t
     54 irs_dnsconf_load(isc_mem_t *mctx, const char *filename, irs_dnsconf_t **confp);
     55 /*%<
     56  * Load the "advanced" DNS configuration file 'filename' in the "dns.conf"
     57  * format, and create a new irs_dnsconf_t object from the configuration.
     58  *
     59  * Requires:
     60  *
     61  *\li	'mctx' is a valid memory context.
     62  *
     63  *\li	'filename' != NULL
     64  *
     65  *\li	'confp' != NULL && '*confp' == NULL
     66  */
     67 
     68 void
     69 irs_dnsconf_destroy(irs_dnsconf_t **confp);
     70 /*%<
     71  * Destroy the dnsconf object.
     72  *
     73  * Requires:
     74  *
     75  *\li	'*confp' is a valid dnsconf object.
     76  *
     77  * Ensures:
     78  *
     79  *\li	*confp == NULL
     80  */
     81 
     82 irs_dnsconf_dnskeylist_t *
     83 irs_dnsconf_gettrustedkeys(irs_dnsconf_t *conf);
     84 /*%<
     85  * Return a list of key information stored in 'conf'.
     86  *
     87  * Requires:
     88  *
     89  *\li	'conf' is a valid dnsconf object.
     90  */
     91 
     92 ISC_LANG_ENDDECLS
     93 
     94 #endif /* IRS_DNSCONF_H */
     95