rm -f Ksig0.example2.*
rm -f keyname keyname.err
rm -f ns1/example2.db
+rm -f ns1/example2-toomanykeys.db
rm -f ns*/managed-keys.bind*
rm -f nsupdate.out.*
rm -f ns*/named.run.prev
allow-update { key sig0.example2.; };
};
+zone "example2-toomanykeys" {
+ type primary;
+ file "example2-toomanykeys.db";
+ allow-update { key sig0.example2-toomanykeys.; };
+};
+
zone "example3" {
type primary;
file "example3.db";
primaries { 10.53.0.1; };
};
+zone "example2-toomanykeys" {
+ type secondary;
+ file "example2-toomanykeys.bk";
+ allow-update-forwarding { 10.53.0.1; };
+ primaries { 10.53.0.1; };
+};
+
zone "example3" {
type secondary;
file "example3.bk";
fi
#
-# SIG(0) required cryptographic support which may not be configured.
+# SIG(0) requires cryptographic support which may not be configured.
#
keyname=$($KEYGEN -q -n HOST -a ${DEFAULT_ALGORITHM} -T KEY sig0.example2 2>keyname.err)
if test -n "$keyname"; then
cat ns1/example1.db >ns1/example2.db
fi
cat_i <keyname.err
+
+cat ns1/example1.db >ns1/example2-toomanykeys.db
+for i in 1 2 3; do
+ keyname=$($KEYGEN -q -n HOST -a ${DEFAULT_ALGORITHM} -T KEY sig0.example2-toomanykeys 2>/dev/null)
+ if test -n "$keyname"; then
+ cat $keyname.key >>ns1/example2-toomanykeys.db
+ echo $keyname >keyname$i
+ fi
+done
nextpart_thrice
ret=0
keyname=$(cat keyname)
- $NSUPDATE -k $keyname.private -- - <<EOF || ret=1
+ $NSUPDATE -k $keyname.private -- - <<EOF >nsupdate.out.test$n 2>&1 || ret=1
local 10.53.0.1
server 10.53.0.3 ${PORT}
zone example2
nextpart_thrice
ret=0
keyname=$(cat keyname)
- $NSUPDATE -k $keyname.private -S -O -- - <<EOF || ret=1
+ $NSUPDATE -k $keyname.private -S -O -- - <<EOF >nsupdate.out.test$n 2>&1 || ret=1
local 10.53.0.1
server 10.53.0.3 ${TLSPORT}
zone example2
status=$((status + ret))
n=$((n + 1))
fi
+
+ echo_i "checking update forwarding with sig0 with too many keys ($n)"
+ nextpart_thrice
+ ret=0
+ good=0
+ bad=0
+ for i in 1 2 3; do
+ keyname=$(cat keyname$i)
+ $NSUPDATE -d -D -k $keyname.private -- - <<EOF >nsupdate.out.test$n.$i 2>&1 && good=$((good + 1)) || bad=$((bad + 1))
+ local 10.53.0.1
+ server 10.53.0.3 ${PORT}
+ zone example2-toomanykeys
+ update add toomanykeys$i.example2-toomanykeys. 600 A 10.10.10.1
+ send
+EOF
+ done
+ # There are three keys in the zone but named checks the signature using
+ # maximum two keys, so one of these updates should have been failed.
+ [ $good = 2 ] && [ $bad = 1 ] || ret=1
+ if [ $ret != 0 ]; then echo_i "failed"; fi
+ status=$((status + ret))
+ n=$((n + 1))
fi
echo_i "attempting an update that should be rejected by ACL ($n)"