]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a framework for dns__zone_updatesigs() unit tests
authorMichał Kępień <michal@isc.org>
Tue, 13 Mar 2018 13:06:11 +0000 (14:06 +0100)
committerMichał Kępień <michal@isc.org>
Wed, 9 May 2018 11:32:09 +0000 (13:32 +0200)
Add a new ATF test, sigs_test, containing everything required to start
defining test cases for dns__zone_updatesigs().  The framework is
written in a way which ensures that changes to zone database applied by
any dns__zone_updatesigs() invocation are preserved between subsequent
checks.

lib/dns/tests/Atffile
lib/dns/tests/Kyuafile
lib/dns/tests/Makefile.in
lib/dns/tests/sigs_test.c [new file with mode: 0644]
lib/dns/tests/testdata/master/master18.data [new file with mode: 0644]
lib/dns/tests/testkeys/Kexample.+008+20386.key [new file with mode: 0644]
lib/dns/tests/testkeys/Kexample.+008+20386.private [new file with mode: 0644]
lib/dns/tests/testkeys/Kexample.+008+37464.key [new file with mode: 0644]
lib/dns/tests/testkeys/Kexample.+008+37464.private [new file with mode: 0644]
util/copyrights

index e13b2dc39697b35c0448ec641839ebf5ea22c537..f27777eb464276259803d8e8c86dee73c10cc5f1 100644 (file)
@@ -27,6 +27,7 @@ tp: rdataset_test
 tp: rdatasetstats_test
 tp: resolver_test
 tp: rsa_test
+tp: sigs_test
 tp: time_test
 tp: tsig_test
 tp: update_test
index 52bd99a4c15944e96d18256b97309514646d62a5..cb2324d5ce41e949b9713a1ae852fe8339d86f8c 100644 (file)
@@ -26,6 +26,7 @@ atf_test_program{name='rdataset_test'}
 atf_test_program{name='rdatasetstats_test'}
 atf_test_program{name='resolver_test'}
 atf_test_program{name='rsa_test'}
+atf_test_program{name='sigs_test'}
 atf_test_program{name='time_test'}
 atf_test_program{name='tsig_test'}
 atf_test_program{name='update_test'}
index cfc33a0766e877aa3b746d5fe46c6ee79ad08102..75a8c3f8b6c0830d991f71f179c41bc2cf7f9534 100644 (file)
@@ -56,6 +56,7 @@ SRCS =                acl_test.c \
                rdatasetstats_test.c \
                resolver_test.c \
                rsa_test.c \
+               sigs_test.c \
                time_test.c \
                tsig_test.c \
                update_test.c \
@@ -88,6 +89,7 @@ TARGETS =     acl_test@EXEEXT@ \
                rdatasetstats_test@EXEEXT@ \
                resolver_test@EXEEXT@ \
                rsa_test@EXEEXT@ \
+               sigs_test@EXEEXT@ \
                time_test@EXEEXT@ \
                tsig_test@EXEEXT@ \
                update_test@EXEEXT@ \
@@ -225,6 +227,11 @@ rsa_test@EXEEXT@: rsa_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
                        rsa_test.@O@ dnstest.@O@ ${DNSLIBS} \
                        ${ISCLIBS} ${LIBS}
 
+sigs_test@EXEEXT@: sigs_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
+                       sigs_test.@O@ dnstest.@O@ ${DNSLIBS} \
+                       ${ISCLIBS} ${LIBS}
+
 time_test@EXEEXT@: time_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
        ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
                        time_test.@O@ dnstest.@O@ ${DNSLIBS} \
diff --git a/lib/dns/tests/sigs_test.c b/lib/dns/tests/sigs_test.c
new file mode 100644 (file)
index 0000000..885bbfa
--- /dev/null
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+/*! \file */
+
+#include <config.h>
+
+#include <atf-c.h>
+
+#include <dns/dnssec.h>
+#include <dns/rdatatype.h>
+#include <dns/zone.h>
+
+#include "../zone_p.h"
+
+#include "dnstest.h"
+
+/*%
+ * Structure characterizing a single diff tuple in the dns_diff_t structure
+ * prepared by dns__zone_updatesigs().
+ */
+typedef struct {
+       dns_diffop_t op;
+       const char *owner;
+       dns_ttl_t ttl;
+       const char *type;
+} zonediff_t;
+
+#define ZONEDIFF_SENTINEL { 0, NULL, 0, NULL }
+
+/*%
+ * Structure defining a dns__zone_updatesigs() test.
+ */
+typedef struct {
+       const char *description;        /* test description */
+       const zonechange_t *changes;    /* array of "raw" zone changes */
+       const zonediff_t *zonediff;     /* array of "processed" zone changes */
+} updatesigs_test_params_t;
+
+/*%
+ * Check whether the 'found' tuple matches the 'expected' tuple.  'found' is
+ * the 'index'th tuple output by dns__zone_updatesigs() in test 'test'.
+ */
+static void
+compare_tuples(const zonediff_t *expected, dns_difftuple_t *found,
+              const updatesigs_test_params_t *test, size_t index)
+{
+       char found_covers[DNS_RDATATYPE_FORMATSIZE] = { };
+       char found_type[DNS_RDATATYPE_FORMATSIZE] = { };
+       char found_name[DNS_NAME_FORMATSIZE];
+       isc_consttextregion_t typeregion;
+       dns_fixedname_t expected_fname;
+       dns_rdatatype_t expected_type;
+       dns_name_t *expected_name;
+       dns_rdata_rrsig_t rrsig;
+       isc_buffer_t typebuf;
+       isc_result_t result;
+
+       REQUIRE(expected != NULL);
+       REQUIRE(found != NULL);
+       REQUIRE(index > 0);
+
+       /*
+        * Check operation.
+        */
+       ATF_CHECK_EQ_MSG(expected->op, found->op,
+                        "test \"%s\": tuple %zu: "
+                        "expected op %d, found %d",
+                        test->description, index,
+                        expected->op, found->op);
+
+       /*
+        * Check owner name.
+        */
+       expected_name = dns_fixedname_initname(&expected_fname);
+       result = dns_name_fromstring(expected_name, expected->owner, 0, mctx);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       dns_name_format(&found->name, found_name, sizeof(found_name));
+       ATF_CHECK_MSG(dns_name_equal(expected_name, &found->name),
+                     "test \"%s\": tuple %zu: "
+                     "expected owner \"%s\", found \"%s\"",
+                     test->description, index,
+                     expected->owner, found_name);
+
+       /*
+        * Check TTL.
+        */
+       ATF_CHECK_EQ_MSG(expected->ttl, found->ttl,
+                     "test \"%s\": tuple %zu: "
+                     "expected TTL %u, found %u",
+                     test->description, index,
+                     expected->ttl, found->ttl);
+
+       /*
+        * Parse expected RR type.
+        */
+       typeregion.base = expected->type;
+       typeregion.length = strlen(expected->type);
+       result = dns_rdatatype_fromtext(&expected_type,
+                                       (isc_textregion_t*)&typeregion);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Format found RR type for reporting purposes.
+        */
+       isc_buffer_init(&typebuf, found_type, sizeof(found_type));
+       result = dns_rdatatype_totext(found->rdata.type, &typebuf);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Check RR type.
+        */
+       switch (expected->op) {
+       case DNS_DIFFOP_ADDRESIGN:
+       case DNS_DIFFOP_DELRESIGN:
+               /*
+                * Found tuple must be of type RRSIG.
+                */
+               ATF_CHECK_EQ_MSG(found->rdata.type, dns_rdatatype_rrsig,
+                                "test \"%s\": tuple %zu: "
+                                "expected type RRSIG, found %s",
+                                test->description, index,
+                                found_type);
+               if (found->rdata.type != dns_rdatatype_rrsig) {
+                       break;
+               }
+               /*
+                * The signature must cover an RRset of type 'expected->type'.
+                */
+               result = dns_rdata_tostruct(&found->rdata, &rrsig, NULL);
+               ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+               isc_buffer_init(&typebuf, found_covers, sizeof(found_covers));
+               result = dns_rdatatype_totext(rrsig.covered, &typebuf);
+               ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+               ATF_CHECK_EQ_MSG(expected_type, rrsig.covered,
+                                "test \"%s\": tuple %zu: "
+                                "expected RRSIG to cover %s, found covers %s",
+                                test->description, index,
+                                expected->type, found_covers);
+               break;
+       default:
+               /*
+                * Found tuple must be of type 'expected->type'.
+                */
+               ATF_CHECK_EQ_MSG(expected_type, found->rdata.type,
+                                "test \"%s\": tuple %zu: "
+                                "expected type %s, found %s",
+                                test->description, index,
+                                expected->type, found_type);
+               break;
+       }
+}
+
+/*%
+ * Perform a single dns__zone_updatesigs() test defined in 'test'.  All other
+ * arguments are expected to remain constant between subsequent invocations of
+ * this function.
+ */
+static void
+updatesigs_test(const updatesigs_test_params_t *test, dns_zone_t *zone,
+               dns_db_t *db, dst_key_t *zone_keys[], unsigned int nkeys,
+               isc_stdtime_t now)
+{
+       size_t tuples_expected, tuples_found, index;
+       dns_dbversion_t *version = NULL;
+       dns_diff_t raw_diff, zone_diff;
+       const zonediff_t *expected;
+       dns_difftuple_t *found;
+       isc_result_t result;
+
+       dns__zonediff_t zonediff = {
+               .diff = &zone_diff,
+               .offline = ISC_FALSE,
+       };
+
+       REQUIRE(test != NULL);
+       REQUIRE(test->description != NULL);
+       REQUIRE(test->changes != NULL);
+       REQUIRE(zone != NULL);
+       REQUIRE(db != NULL);
+       REQUIRE(zone_keys != NULL);
+
+       /*
+        * Create a new version of the zone's database.
+        */
+       result = dns_db_newversion(db, &version);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Create a diff representing the supplied changes.
+        */
+       result = dns_test_difffromchanges(&raw_diff, test->changes);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Apply the "raw" diff to the new version of the zone's database as
+        * this is what dns__zone_updatesigs() expects to happen before it is
+        * called.
+        */
+       dns_diff_apply(&raw_diff, db, version);
+
+       /*
+        * Initialize the structure dns__zone_updatesigs() will modify.
+        */
+       dns_diff_init(mctx, &zone_diff);
+
+       /*
+        * Check whether dns__zone_updatesigs() behaves as expected.
+        */
+       result = dns__zone_updatesigs(&raw_diff, db, version, zone_keys, nkeys,
+                                     zone, now - 3600, now + 3600, 0, now,
+                                     ISC_TRUE, ISC_FALSE, &zonediff);
+       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS,
+                        "test \"%s\": expected success, got %s",
+                        test->description, isc_result_totext(result));
+       ATF_CHECK_MSG(ISC_LIST_EMPTY(raw_diff.tuples),
+                     "test \"%s\": raw diff was not emptied",
+                     test->description);
+       ATF_CHECK_MSG(!ISC_LIST_EMPTY(zone_diff.tuples),
+                     "test \"%s\": zone diff was not created",
+                     test->description);
+
+       /*
+        * Ensure that the number of tuples in the zone diff is as expected.
+        */
+
+       tuples_expected = 0;
+       for (expected = test->zonediff;
+            expected->owner != NULL;
+            expected++)
+       {
+               tuples_expected++;
+       }
+
+       tuples_found = 0;
+       for (found = ISC_LIST_HEAD(zone_diff.tuples);
+            found != NULL;
+            found = ISC_LIST_NEXT(found, link))
+       {
+               tuples_found++;
+       }
+
+       ATF_REQUIRE_EQ_MSG(tuples_expected, tuples_found,
+                          "test \"%s\": "
+                          "expected %zu tuples in output, found %zu",
+                          test->description,
+                          tuples_expected, tuples_found);
+
+       /*
+        * Ensure that every tuple in the zone diff matches expectations.
+        */
+       expected = test->zonediff;
+       index = 1;
+       for (found = ISC_LIST_HEAD(zone_diff.tuples);
+            found != NULL;
+            found = ISC_LIST_NEXT(found, link))
+       {
+               compare_tuples(expected, found, test, index);
+               expected++;
+               index++;
+       }
+
+       /*
+        * Apply changes to zone database contents and clean up.
+        */
+       dns_db_closeversion(db, &version, ISC_TRUE);
+       dns_diff_clear(&zone_diff);
+       dns_diff_clear(&raw_diff);
+}
+
+ATF_TC(updatesigs);
+ATF_TC_HEAD(updatesigs, tc) {
+       atf_tc_set_md_var(tc, "descr", "dns__zone_updatesigs() tests");
+}
+ATF_TC_BODY(updatesigs, tc) {
+       dst_key_t *zone_keys[DNS_MAXZONEKEYS];
+       dns_zone_t *zone = NULL;
+       dns_db_t *db = NULL;
+       isc_result_t result;
+       unsigned int nkeys;
+       isc_stdtime_t now;
+       size_t i;
+
+       result = dns_test_begin(NULL, ISC_TRUE);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Prepare a zone along with its signing keys.
+        */
+
+       result = dns_test_makezone("example", &zone, NULL, ISC_FALSE);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = dns_test_loaddb(&db, dns_dbtype_zone, "example",
+                                "testdata/master/master18.data");
+       ATF_REQUIRE_EQ(result, DNS_R_SEENINCLUDE);
+
+       result = dns_zone_setkeydirectory(zone, "testkeys");
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_stdtime_get(&now);
+       result = dns__zone_findkeys(zone, db, NULL, now, mctx, DNS_MAXZONEKEYS,
+                                   zone_keys, &nkeys);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       ATF_REQUIRE_EQ(nkeys, 2);
+
+       /*
+        * Define the tests to be run.  Note that changes to zone database
+        * contents introduced by each test are preserved between tests.
+        */
+
+       const updatesigs_test_params_t *tests[] = {
+               NULL,
+       };
+
+       /*
+        * Run tests.
+        */
+       for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) {
+               updatesigs_test(tests[i], zone, db, zone_keys, nkeys, now);
+       }
+
+       /*
+        * Clean up.
+        */
+       for (i = 0; i < nkeys; i++) {
+               dst_key_free(&zone_keys[i]);
+       }
+       dns_db_detach(&db);
+       dns_zone_detach(&zone);
+
+       dns_test_end();
+}
+
+ATF_TP_ADD_TCS(tp) {
+       ATF_TP_ADD_TC(tp, updatesigs);
+
+       return (atf_no_error());
+}
diff --git a/lib/dns/tests/testdata/master/master18.data b/lib/dns/tests/testdata/master/master18.data
new file mode 100644 (file)
index 0000000..dddf04e
--- /dev/null
@@ -0,0 +1,10 @@
+$TTL 1000
+@              in      soa     localhost. postmaster.localhost. (
+                               1993050801      ;serial
+                               3600            ;refresh
+                               1800            ;retry
+                               604800          ;expiration
+                               3600 )          ;minimum
+
+$INCLUDE "testkeys/Kexample.+008+20386.key";
+$INCLUDE "testkeys/Kexample.+008+37464.key";
diff --git a/lib/dns/tests/testkeys/Kexample.+008+20386.key b/lib/dns/tests/testkeys/Kexample.+008+20386.key
new file mode 100644 (file)
index 0000000..3404dca
--- /dev/null
@@ -0,0 +1,5 @@
+; This is a key-signing key, keyid 20386, for example.
+; Created: 20000101000000 (Sat Jan  1 00:00:00 2000)
+; Publish: 20000101000000 (Sat Jan  1 00:00:00 2000)
+; Activate: 20000101000000 (Sat Jan  1 00:00:00 2000)
+example. IN DNSKEY 257 3 8 AwEAAZd7/hBRvMooz0sepkD/2r3Bp021f8lGzDj6sZEVbg1hcqZTzURc eGkS541wyOqjvJv2KBi5qLLE2HthmexmOBycjTQ7EiKd1P9bE8RgF8Et j73X/CHLiX6YL7cb93TXWiUvbRh4E6D2URgOmxMdMOXTuCvjvDaGVCOt Jc77UUosuBeurZzP8g8t/zccAUTzu2cdRyI5/ZxOBfJaDtc9TlRdWsaN Af+nT0C14ccH7QVlKjjaYV4lXueruDW3yTTzu9bQ1ikgegsCLi/tcD/1 dWTOI9whV06szs+ouhuJkZuhIjrGDtOHCpjPjIxOOrIZceU1YSY30kAR QNVzshJqyx8=
diff --git a/lib/dns/tests/testkeys/Kexample.+008+20386.private b/lib/dns/tests/testkeys/Kexample.+008+20386.private
new file mode 100644 (file)
index 0000000..d8cff93
--- /dev/null
@@ -0,0 +1,13 @@
+Private-key-format: v1.3
+Algorithm: 8 (RSASHA256)
+Modulus: l3v+EFG8yijPSx6mQP/avcGnTbV/yUbMOPqxkRVuDWFyplPNRFx4aRLnjXDI6qO8m/YoGLmossTYe2GZ7GY4HJyNNDsSIp3U/1sTxGAXwS2Pvdf8IcuJfpgvtxv3dNdaJS9tGHgToPZRGA6bEx0w5dO4K+O8NoZUI60lzvtRSiy4F66tnM/yDy3/NxwBRPO7Zx1HIjn9nE4F8loO1z1OVF1axo0B/6dPQLXhxwftBWUqONphXiVe56u4NbfJNPO71tDWKSB6CwIuL+1wP/V1ZM4j3CFXTqzOz6i6G4mRm6EiOsYO04cKmM+MjE46shlx5TVhJjfSQBFA1XOyEmrLHw==
+PublicExponent: AQAB
+PrivateExponent: aSkynrGfldfuz/9e+xCjEcg2FMRDCb+UVpnyWv29gJx9sunKPgLTtF3jUVVSpVE1xi+EdmWsry3n+v8uk+YCXhpwDCpV1KItE3huqIzs8LZoaypdZjieIrwTo9JOX1aAxf++hJYXSk60zTaWgRZqs6He4Nkf99oY3wt8i8v8CrkfQy76K/qK9xUVv5GHrEZzCGLfLv77eqDab/J84ANxc0kUtQvgt2/JTHofXmcA6/YDh5PWB8KRw1PjQTck61/xIgfI6ky/yIF1riCQCYXwTv7jcmMV/QvQ+dfN+HZ2CSGp7xcH2Yxe9OhAY823ZkmkOQ2YZPjIj6dEoRMmSiaagQ==
+Prime1: x2GMnpRPwvUhM+yPRa7nh5Jjl4mbofeOtVrxe1hEVy8l2UGFh+FDZCbyoLRNUTYDji00NHpGtmcAyoY9pLdOn7ci4zqGVnNJcIY75Ie4p6J7pPfDh9d+AGtJ5NpNhr1sjD0bFncJC2FGY9vj4eC0CkatMu/Qovrd2FwZ8VpDsAk=
+Prime2: woB8MYsEfSYGD0hZGtmgK6UQ+Oo9smxdPmahLYXnLSAdqtqZbZX+ABk/kFduT+XwlHOXmp3HMmUtQTRZBaQyBrsFWfWjOGevByEsT9aLQSZOEgnqy4xrc9XNwDs4/WkrEgw/TOVnZYdaCyLxsFl4bpTX8Fj3yVqg/tJvuUMWG+c=
+Exponent1: iQO7a9rF+VcVSyZ8yslIaL0r3Z5+Kk8CbhSiMD5XMIbA/sztI5SlCDVPtSpSm8V/qfvcjVeeMokUXRjlUcV6rX1f50F3wf8V79L/Y6v1NJYPXC273CU1fLo+HJv8fOS9rJ3teIGy4HQnuEYLE1WkxA8PxRpSiT3WqHGajmaWb2k=
+Exponent2: elMWSI5Wz2KXkwr8Rz+xVWGl7/ZZwRoX9oPTQG8jeiTlo6uBrQMVUPiQGnZyQTuq96JPKYWrXs11DbofdsXSVJtQfUhYU8QZtxEs7jVPNTUjCoNEMKnqdlpz4T8d03pOBTbApNruEVNz1OcwO6m5bUqdGGLLy838zOaKL2i6wec=
+Coefficient: q2mejAmT3A4H2C0rT1hm8XQFuISHjAAEyM9t09Q8tEeQ0lHi4gMVA3bXoAn9U21eBkFQDwvyB0vqlVSGgRqHovOKx9uXAU9eoDxGcJsFlGsM0aUsUjGVXv5kVmaw8a5PHBbvYAbgAZUmKqrVF0PWD3o+/DbzP9PCmlJcqxoAulU=
+Created: 20000101000000
+Publish: 20000101000000
+Activate: 20000101000000
diff --git a/lib/dns/tests/testkeys/Kexample.+008+37464.key b/lib/dns/tests/testkeys/Kexample.+008+37464.key
new file mode 100644 (file)
index 0000000..3dd0619
--- /dev/null
@@ -0,0 +1,5 @@
+; This is a zone-signing key, keyid 37464, for example.
+; Created: 20000101000000 (Sat Jan  1 00:00:00 2000)
+; Publish: 20000101000000 (Sat Jan  1 00:00:00 2000)
+; Activate: 20000101000000 (Sat Jan  1 00:00:00 2000)
+example. IN DNSKEY 256 3 8 AwEAAbxHOF8G0xw9ekCodhL8KivuZ3o0jmGlycLiXBjBN8c5R5fjLjUh D0gy3IDbDC+kLaPhHGF/MwrSEjrgSowxZ8nrxDzsq5ZdpeUsYaNrbQEY /mqf35T/9/Ulm4v06x58v/NTugWd05Xq04aAyfm7EViyGFzmVOVfPnll h9xQtvWEWoRWPseFw+dY5/nc/+xB/IsQMihoH2rO+cek/lsP3R9DsHCG RbQ/ks/+rrp6/O+QJZyZrzsONl7mlMDXNy3Pz9J4qMW2W6Mz702LN324 7/9UsetDGGbuZfrCLMpKWXzdsJm36DOk4aMooS9111plfXaXQgQNcL5G 021utpTau+8=
diff --git a/lib/dns/tests/testkeys/Kexample.+008+37464.private b/lib/dns/tests/testkeys/Kexample.+008+37464.private
new file mode 100644 (file)
index 0000000..ecc2ad0
--- /dev/null
@@ -0,0 +1,13 @@
+Private-key-format: v1.3
+Algorithm: 8 (RSASHA256)
+Modulus: vEc4XwbTHD16QKh2EvwqK+5nejSOYaXJwuJcGME3xzlHl+MuNSEPSDLcgNsML6Qto+EcYX8zCtISOuBKjDFnyevEPOyrll2l5Sxho2ttARj+ap/flP/39SWbi/TrHny/81O6BZ3TlerThoDJ+bsRWLIYXOZU5V8+eWWH3FC29YRahFY+x4XD51jn+dz/7EH8ixAyKGgfas75x6T+Ww/dH0OwcIZFtD+Sz/6uunr875AlnJmvOw42XuaUwNc3Lc/P0nioxbZbozPvTYs3fbjv/1Sx60MYZu5l+sIsykpZfN2wmbfoM6ThoyihL3XXWmV9dpdCBA1wvkbTbW62lNq77w==
+PublicExponent: AQAB
+PrivateExponent: AhR3VvVoV6OGOjiiNUt728hidEMoX4PJWtHNWqinyRek5tSnqgaXeKC3NuU0mUIjDvBps9oH4lK3yNa5fBr/nodwP4wNyTd3obR/z6JcLersxJjHi4nYX2ju8vjdsBSIulNudqlrsPhLJe0+Tff3FRfClSQmQ/JtakHo4lIx8zxiOJY8aWFeHGdWJDkAf6NStt3eVYyOyAwISfv3muaGPZKShiIOfLyTvqFqzwYFgdTWmvFqTdwgjIMc5XAwqw73WP2BPCN+fdCiMtrw0fCrhWzw/gfMJBHdOPH0diUZysAJhM0vdVKQzEi/g3YOo00fahZiPzaxNtZnLNj2mA54YQ==
+Prime1: 5YpfVjEtL1owW9gSFbIMx65POr+fiktxirgy1bc5fSsVqUgG6zhbaN/VpWcNZG0Zg5xd6S7C8V3djGlnJN8wZIyjIh7+Z3WWjqbOD9oY7rC1fR+W0OvbCmZiEzOpRJ5qoMOh1MzkkanhMy0/ICpaa8eQ9zEb80oTIQpFgoLn7K0=
+Prime2: 0fs3ncL5/2qzq2dmPXLYcOfc1EGSuESO0VpREP8EpTkyPKeVw5LaF9TgZRqPWlRf2T0LPoZ766xLAn090u0pLQ5fWM96NMas7kS+rxtRssat6MiQo3YfoU3ysk3xuPzrMBHyn/N42CjSG+bJEToHR7V16KsCT6dBIPkI3tj/Yos=
+Exponent1: Bdsp44ENrg+W/EDe9T69pLqFuvH4mAaktu1MHre198OJoe/8fTPK4ToUsUuXw+Akrn7mxnQy9QV4CYUG5KHtEiOkZdJ0mx8c4DbROwZNbImFl9OefWYHCJTkG6lNwDpqbf+PuWYgzraO0EdvPNrXw7grsqLGG8bgBg/FBjdgw2E=
+Exponent2: uV1pxW0fwGhzX3aR/ODrTRCCEyYn3V84LHvsYHKfqTOKs5zFSrbSrIMR7G676ePeESogSPvzXSLlvLbO4urVlJ7BcOcHXJuegWBSbMZTItzdHUgg1wwp8/2Zp+nC36j1/aN6adVG8ptmj5b2HKz7TERWaCS+j454oiD1wbQSDu0=
+Coefficient: JO6RxBIaoEd/Z4ITcsYT8TslP1KmIuAqdhMt3FSpqeogUDut7f3FZIEyNi4wsrSK5peIQSVmO2pQLupS+eRIPHXZ1vh5kcFAsgd7XBb7Fvsg26/WSjhB4wjx+wgWzVomK0519pfdtH854fePWPkdDKtLNL2zh0APne3GjwrbNEM=
+Created: 20000101000000
+Publish: 20000101000000
+Activate: 20000101000000
index 2779a8070a8e616c07ea206a7e6be2b5b59e7154..888aa61fbea7fb4c6b4b2fc780b76c6ed4d23ab8 100644 (file)
 ./lib/dns/tests/rdatasetstats_test.c           C       2012,2015,2016,2018
 ./lib/dns/tests/resolver_test.c                        C       2018
 ./lib/dns/tests/rsa_test.c                     C       2016,2018
+./lib/dns/tests/sigs_test.c                    C       2018
 ./lib/dns/tests/testdata/db/data.db            ZONE    2018
 ./lib/dns/tests/testdata/dbiterator/zone1.data ZONE    2011,2012,2016,2018
 ./lib/dns/tests/testdata/dbiterator/zone2.data X       2011,2018
 ./lib/dns/tests/testdata/master/master15.data  X       2012,2018
 ./lib/dns/tests/testdata/master/master16.data  X       2012,2018
 ./lib/dns/tests/testdata/master/master17.data  X       2012,2018
+./lib/dns/tests/testdata/master/master18.data  X       2018
 ./lib/dns/tests/testdata/master/master2.data   X       2011,2018
 ./lib/dns/tests/testdata/master/master3.data   X       2011,2018
 ./lib/dns/tests/testdata/master/master4.data   X       2011,2018
 ./lib/dns/tests/testdata/nsec3/min-1024.db     ZONE    2012,2016,2018
 ./lib/dns/tests/testdata/nsec3/min-2048.db     ZONE    2012,2016,2018
 ./lib/dns/tests/testdata/zt/zone1.db           ZONE    2011,2012,2016,2018
+./lib/dns/tests/testkeys/Kexample.+008+20386.key       X       2018
+./lib/dns/tests/testkeys/Kexample.+008+20386.private   X       2018
+./lib/dns/tests/testkeys/Kexample.+008+37464.key       X       2018
+./lib/dns/tests/testkeys/Kexample.+008+37464.private   X       2018
 ./lib/dns/tests/time_test.c                    C       2011,2012,2016,2018
 ./lib/dns/tests/tsig_test.c                    C       2017,2018
 ./lib/dns/tests/update_test.c                  C       2011,2012,2014,2016,2017,2018