]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Refactor ecdsa system test
authorMatthijs Mekking <matthijs@isc.org>
Wed, 3 Feb 2021 10:52:30 +0000 (11:52 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 9 Feb 2021 15:06:50 +0000 (16:06 +0100)
Similar to eddsa system test.

(cherry picked from commit 650b0d4691d95ebfc9a535bf82f7f6656c8e6b9c)

bin/tests/system/ecdsa/clean.sh
bin/tests/system/ecdsa/ns1/named.conf.in [moved from bin/tests/system/ecdsa/ns1/named.conf with 98% similarity]
bin/tests/system/ecdsa/ns1/sign.sh
bin/tests/system/ecdsa/ns2/named.conf.in [moved from bin/tests/system/ecdsa/ns2/named.conf with 98% similarity]
bin/tests/system/ecdsa/ns3/named.conf.in [new file with mode: 0644]
bin/tests/system/ecdsa/setup.sh
bin/tests/system/ecdsa/tests.sh

index 153364839eab94c75f2f605134043a74f317fafc..6dd137dd7ddc5b72bc6fd98f3c4cf35967c17597 100644 (file)
@@ -9,11 +9,14 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-rm -f */K* */dsset-* */*.signed */trusted.conf
-rm -f ns1/root.db
-rm -f ns1/signer.err
+rm -f */K* */dsset-* */*.signed
 rm -f dig.out*
-rm -f */named.run
-rm -f */named.memstats
+rm -f ns*/named.run
+rm -f ns*/named.memstats
 rm -f ns*/named.lock
+rm -f ns*/named.conf
 rm -f ns*/managed-keys.bind*
+rm -f ns*/root.db
+rm -f ns*/signer.err
+rm -f ns*/trusted.conf
+rm -f *-supported.file
similarity index 98%
rename from bin/tests/system/ecdsa/ns1/named.conf
rename to bin/tests/system/ecdsa/ns1/named.conf.in
index f58ca7e7547f14a42bea47911704206c88c54a68..a68caf9d96d86b9ac0afbae8215a37490edb72e8 100644 (file)
@@ -17,7 +17,7 @@ options {
        query-source address 10.53.0.1;
        notify-source 10.53.0.1;
        transfer-source 10.53.0.1;
-       port 5300;
+       port @PORT@;
        pid-file "named.pid";
        listen-on { 10.53.0.1; };
        listen-on-v6 { none; };
index a763ec86fd7aae636def96560bd7b3fcf4294bd5..3038b6b9a4df4eb86f13e4b533a505580b61427f 100644 (file)
@@ -16,14 +16,39 @@ zone=.
 infile=root.db.in
 zonefile=root.db
 
-key1=`$KEYGEN -q -a ECDSAP256SHA256 -n zone $zone`
-key2=`$KEYGEN -q -a ECDSAP384SHA384 -n zone -f KSK $zone`
-$DSFROMKEY -a sha-384 $key2.key > dsset-384
+echo_i "ns1/sign.sh"
 
-cat $infile $key1.key $key2.key > $zonefile
+cp $infile $zonefile
 
-$SIGNER -P -g -o $zone $zonefile > /dev/null 2> signer.err || cat signer.err
+if [ -f ../ecdsa256-supported.file ]; then
+       zsk256=$($KEYGEN -q -a ECDSA256 -n zone "$zone")
+       ksk256=$($KEYGEN -q -a ECDSA256 -n zone -f KSK "$zone")
+       cat "$ksk256.key" "$zsk256.key" >> "$zonefile"
+       $DSFROMKEY -a sha-256 "$ksk256.key" >> dsset-256
+fi
+
+if [ -f ../ecdsa384-supported.file ]; then
+       zsk384=$($KEYGEN -q -a ECDSA384 -n zone "$zone")
+       ksk384=$($KEYGEN -q -a ECDSA384 -n zone -f KSK "$zone")
+       cat "$ksk384.key" "$zsk384.key" >> "$zonefile"
+       $DSFROMKEY -a sha-256 "$ksk384.key" >> dsset-256
+fi
 
 # Configure the resolving server with a static key.
-keyfile_to_static_ds $key1 > trusted.conf
-cp trusted.conf ../ns2/trusted.conf
+if [ -f ../ecdsa256-supported.file ]; then
+       keyfile_to_static_ds $ksk256 > trusted.conf
+       cp trusted.conf ../ns2/trusted.conf
+else
+       keyfile_to_static_ds $ksk384 > trusted.conf
+       cp trusted.conf ../ns2/trusted.conf
+fi
+
+if [ -f ../ecdsa384-supported.file ]; then
+       keyfile_to_static_ds $ksk384 > trusted.conf
+       cp trusted.conf ../ns3/trusted.conf
+else
+       keyfile_to_static_ds $ksk256 > trusted.conf
+       cp trusted.conf ../ns3/trusted.conf
+fi
+
+$SIGNER -P -g -o "$zone" "$zonefile" > /dev/null 2> signer.err || cat signer.err
similarity index 98%
rename from bin/tests/system/ecdsa/ns2/named.conf
rename to bin/tests/system/ecdsa/ns2/named.conf.in
index 420073fc05652fa39c3b6272054479cd9cc2a0bd..198cdbbcec5be3fd2497d0230d15ae74eae469ac 100644 (file)
@@ -17,7 +17,7 @@ options {
        query-source address 10.53.0.2;
        notify-source 10.53.0.2;
        transfer-source 10.53.0.2;
-       port 5300;
+       port @PORT@;
        pid-file "named.pid";
        listen-on { 10.53.0.2; };
        listen-on-v6 { none; };
diff --git a/bin/tests/system/ecdsa/ns3/named.conf.in b/bin/tests/system/ecdsa/ns3/named.conf.in
new file mode 100644 (file)
index 0000000..32d8c77
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+// NS2
+
+controls { /* empty */ };
+
+options {
+       query-source address 10.53.0.3;
+       notify-source 10.53.0.3;
+       transfer-source 10.53.0.3;
+       port @PORT@;
+       pid-file "named.pid";
+       listen-on { 10.53.0.3; };
+       listen-on-v6 { none; };
+       recursion yes;
+       notify yes;
+       dnssec-validation yes;
+};
+
+zone "." {
+       type hint;
+       file "../../common/root.hint";
+};
+
+include "trusted.conf";
index fea8a3822e106555d82e53b2ed9150fc19ff98ae..a31d77dbd5487178a82493961781a3e9caf19799 100644 (file)
 SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
-cd ns1 && $SHELL sign.sh
+set -e
+
+if $SHELL ../testcrypto.sh ecdsap384sha384; then
+       echo "yes" > ecdsa256-supported.file
+fi
+
+if $SHELL ../testcrypto.sh ecdsap384sha384; then
+       echo "yes" > ecdsa384-supported.file
+fi
+
+copy_setports ns1/named.conf.in ns1/named.conf
+copy_setports ns2/named.conf.in ns2/named.conf
+copy_setports ns3/named.conf.in ns3/named.conf
+(
+       cd ns1
+       $SHELL sign.sh
+)
index 8f8c6974a2462949519b117b1bd49fab42d9d7d6..072463263bc17f437778dbec48339b442355e340 100644 (file)
@@ -15,20 +15,37 @@ SYSTEMTESTTOP=..
 status=0
 n=0
 
-rm -f dig.out.*
+dig_with_opts() {
+    "$DIG" +tcp +noau +noadd +nosea +nostat +nocmd +dnssec -p "$PORT" "$@"
+}
 
-DIGOPTS="+tcp +noau +noadd +nosea +nostat +nocmd +dnssec -p 5300"
+if [ -f ecdsa256-supported.file ]; then
+       n=$((n+1))
+       echo_i "checking that ECDSA256 positive validation works ($n)"
+       ret=0
+       dig_with_opts . @10.53.0.1 soa > dig.out.ns1.test$n || ret=1
+       dig_with_opts . @10.53.0.2 soa > dig.out.ns2.test$n || ret=1
+       $PERL ../digcomp.pl dig.out.ns1.test$n dig.out.ns2.test$n || ret=1
+       grep "flags:.*ad.*QUERY" dig.out.ns2.test$n > /dev/null || ret=1
+       if [ $ret != 0 ]; then echo_i "failed"; fi
+       status=$((status+ret))
+else
+       echo_i "algorithm ECDSA256 not supported, skipping test"
+fi
 
-# Check the example. domain
-echo_i "checking that positive validation works ($n)"
-ret=0
-$DIG $DIGOPTS . @10.53.0.1 soa > dig.out.ns1.test$n || ret=1
-$DIG $DIGOPTS . @10.53.0.2 soa > dig.out.ns2.test$n || ret=1
-$PERL ../digcomp.pl dig.out.ns1.test$n dig.out.ns2.test$n || ret=1
-grep "flags:.*ad.*QUERY" dig.out.ns2.test$n > /dev/null || ret=1
-n=$((n+1))
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+if [ -f ecdsa384-supported.file ]; then
+       n=$((n+1))
+       echo_i "checking that ECDSA384 positive validation works ($n)"
+       ret=0
+       dig_with_opts . @10.53.0.1 soa > dig.out.ns1.test$n || ret=1
+       dig_with_opts . @10.53.0.3 soa > dig.out.ns3.test$n || ret=1
+       $PERL ../digcomp.pl dig.out.ns1.test$n dig.out.ns3.test$n || ret=1
+       grep "flags:.*ad.*QUERY" dig.out.ns3.test$n > /dev/null || ret=1
+       if [ $ret != 0 ]; then echo_i "failed"; fi
+       status=$((status+ret))
+else
+       echo_i "algorithm ECDSA384 not supported, skipping test"
+fi
 
 echo_i "exit status: $status"
 [ $status -eq 0 ] || exit 1