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

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 150d59c4ba4969779b7cfdfb2d26b1b659cf2e84..aad920d73bfa40603e3ea38379b021dcd69fc750 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4645.  [bug]           Fix PKCS#11 RSA parsing when MD5 is disabled.
+                       [RT #45300]
+
 4644.  [placeholder]
 
 4643.  [security]      An error in TSIG handling could permit unauthorized
index 8296a065f267e668097ab9dd945d322f85abdc02..5e1b6eae7a89257c887137b39abf0055efb24b07 100644 (file)
@@ -7,7 +7,7 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 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
 rm -f ns*/named.lock
index 1197205cf04aae9daeb11843aa9f19087d377cc0..4c2b7a8d67657b05312f1704ad84a5ba1a02aa81 100644 (file)
@@ -37,7 +37,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.
@@ -48,11 +53,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 318bda46eb3ba43a137a2d3c8f4bb35b402181db..ce5a1923716211c4101581409d126a57568970f5 100644 (file)
@@ -605,7 +605,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;