]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[v9_10] fix RSA parsing when md5 disabled
authorEvan Hunt <each@isc.org>
Thu, 29 Jun 2017 22:54:54 +0000 (15:54 -0700)
committerEvan Hunt <each@isc.org>
Thu, 29 Jun 2017 22:54:54 +0000 (15:54 -0700)
4645. [bug] Fix PKCS#11 RSA parsing when MD5 is disabled.
[RT #45300]

(cherry picked from commit b05b3fab3c37c9c07321f01b745719307c84aa2f)

CHANGES
bin/tests/system/pkcs11/clean.sh
bin/tests/system/pkcs11/tests.sh
lib/dns/dst_parse.c

diff --git a/CHANGES b/CHANGES
index 96b29b95ad81756cfbeef67a0fd1814d2cde2e77..a5e628f37307077bf9db655c0b72df29c70db73c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4645.  [bug]           Fix PKCS#11 RSA parsing when MD5 is disabled.
+                       [RT #45300]
+
        --- 9.10.6b1 released ---
 
 4643.  [security]      An error in TSIG handling could permit unauthorized
index 24915e85598b718748a4e2dd03541968de7c03d8..8e73809c14a7a5ee30cd2a55840547c193aa739f 100644 (file)
@@ -15,6 +15,6 @@
 # PERFORMANCE OF THIS SOFTWARE.
 
 rm -f K* ns1/K* keyset-* dsset-* ns1/*.db ns1/*.signed ns1/*.jnl
-rm -f dig.out pin
+rm -f dig.out* pin upd.log*
 rm -f ns1/*.key ns1/named.memstats
 rm -f supported
index 9438dfbc0735cadfd1986b549731c108c1af486c..a67af6abe2d6f71ee0987ef29f1b5d46ee8abb5b 100644 (file)
@@ -45,7 +45,12 @@ for alg in $algs; do
 
     echo "I:testing inline signing with PKCS#11 keys ($alg)"
 
-    $NSUPDATE > /dev/null <<END || status=1
+    $DIG $DIGOPTS ns.$alg.example. @10.53.0.1 a > dig.out.$alg.0 || ret=1
+    if [ $ret != 0 ]; then echo "I:failed"; fi
+    status=`expr $status + $ret`
+    count0=`grep RRSIG dig.out.$alg.0 | wc -l`
+
+    $NSUPDATE -v > upd.log.$alg <<END || status=1
 server 10.53.0.1 5300
 ttl 300
 zone $alg.example.
@@ -56,11 +61,11 @@ END
     echo "I:waiting 20 seconds for key changes to take effect"
     sleep 20
 
-    $DIG $DIGOPTS ns.$alg.example. @10.53.0.1 a > dig.out || ret=1
+    $DIG $DIGOPTS ns.$alg.example. @10.53.0.1 a > dig.out.$alg || ret=1
     if [ $ret != 0 ]; then echo "I:failed"; fi
     status=`expr $status + $ret`
-    count=`grep RRSIG dig.out | wc -l`
-    if [ $count != 4 ]; then echo "I:failed"; status=1; fi
+    count=`grep RRSIG dig.out.$alg | wc -l`
+    if [ $count -le $count0 ]; then echo "I:failed"; status=1; fi
 
     echo "I:testing PKCS#11 key destroy ($alg)"
     ret=0
index 212e822916ae2cce1773b3263becd4f5d3f20d85..d5a91f4e51d1f4fd607da1db39e747feb2c40417 100644 (file)
@@ -612,7 +612,12 @@ dst__privstruct_parse(dst_key_t *key, unsigned int alg, isc_lex_t *lex,
                goto fail;
        }
 
+#ifdef PK11_MD5_DISABLE
+       check = check_data(priv, alg == DST_ALG_RSA ? DST_ALG_RSASHA1 : alg,
+                          ISC_TRUE, external);
+#else
        check = check_data(priv, alg, ISC_TRUE, external);
+#endif
        if (check < 0) {
                ret = DST_R_INVALIDPRIVATEKEY;
                goto fail;