]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add functions to set CDS digest-type
authorMatthijs Mekking <matthijs@isc.org>
Mon, 30 Jan 2023 10:18:42 +0000 (11:18 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 28 Feb 2023 08:36:39 +0000 (09:36 +0100)
BIND dnssec-policy currently only supports CDS digest-type 2. Add
API functions to allow other digest-types.

lib/dns/include/dns/kasp.h
lib/dns/kasp.c

index b429494ca31900963f330fa9c4ba1a410faa2023..fb0af46bca4fa9e246c3c311df4cd8b4f8e83159 100644 (file)
@@ -82,6 +82,7 @@ struct dns_kasp {
        /* Configuration: Keys */
        dns_kasp_keylist_t keys;
        dns_ttl_t          dnskey_ttl;
+       unsigned int       cds_digesttype;
 
        /* Configuration: Denial of existence */
        bool                  nsec3;
@@ -309,6 +310,31 @@ dns_kasp_setdnskeyttl(dns_kasp_t *kasp, dns_ttl_t ttl);
  *\li   'kasp' is a valid, thawed kasp.
  */
 
+unsigned int
+dns_kasp_cdsdigesttype(dns_kasp_t *kasp);
+/*%<
+ * Get CDS digest-type.
+ *
+ * Requires:
+ *
+ *\li   'kasp' is a valid, frozen kasp.
+ *
+ * Returns:
+ *
+ *\li   CDS digest-type.
+ */
+
+void
+dns_kasp_setcdsdigesttype(dns_kasp_t *kasp, unsigned int digesttype);
+/*%<
+ * Set CDS digest-type.
+ * If 'digesttype' is not supported, this will not change the digest-type.
+ *
+ * Requires:
+ *
+ *\li   'kasp' is a valid, thawed kasp.
+ */
+
 uint32_t
 dns_kasp_purgekeys(dns_kasp_t *kasp);
 /*%<
index cdc70fd2d922c278e6228ad4d0e53b2da8113fd4..c08297c8f258f3dfaf841675d1eaeb2f345e5bf1 100644 (file)
@@ -27,6 +27,8 @@
 #include <dns/keyvalues.h>
 #include <dns/log.h>
 
+#include <dst/dst.h>
+
 isc_result_t
 dns_kasp_create(isc_mem_t *mctx, const char *name, dns_kasp_t **kaspp) {
        dns_kasp_t *kasp;
@@ -188,6 +190,24 @@ dns_kasp_setdnskeyttl(dns_kasp_t *kasp, dns_ttl_t ttl) {
        kasp->dnskey_ttl = ttl;
 }
 
+unsigned int
+dns_kasp_cdsdigesttype(dns_kasp_t *kasp) {
+       REQUIRE(DNS_KASP_VALID(kasp));
+       REQUIRE(kasp->frozen);
+
+       return (kasp->cds_digesttype);
+}
+
+void
+dns_kasp_setcdsdigesttype(dns_kasp_t *kasp, unsigned int digesttype) {
+       REQUIRE(DNS_KASP_VALID(kasp));
+       REQUIRE(!kasp->frozen);
+
+       if (dst_ds_digest_supported(digesttype)) {
+               kasp->cds_digesttype = digesttype;
+       }
+}
+
 uint32_t
 dns_kasp_purgekeys(dns_kasp_t *kasp) {
        REQUIRE(DNS_KASP_VALID(kasp));