+3957. [bug] "dnssec-keygen -S" failed for ECCGOST, ECDSAP256SHA256
+ and ECDSAP384SHA384. [RT #37183]
+
3955. [bug] Notify messages due to changes are no longer queued
behind startup notify messages. [RT #24454]
options |= DST_TYPE_KEY;
}
+ if (!dst_algorithm_supported(alg))
+ fatal("unsupported algorithm: %d", alg);
+
if (use_nsec3 &&
alg != DST_ALG_NSEC3DSA && alg != DST_ALG_NSEC3RSASHA1 &&
alg != DST_ALG_RSASHA256 && alg!= DST_ALG_RSASHA512 &&
fatal("invalid DSS key size: %d", size);
break;
case DST_ALG_ECCGOST:
+ size = 256;
+ break;
case DST_ALG_ECDSA256:
+ size = 256;
+ break;
case DST_ALG_ECDSA384:
+ size = 384;
break;
case DST_ALG_HMACMD5:
options |= DST_TYPE_KEY;
rm -f ns3/siginterval.conf
rm -f ns4/named_dump.db
rm -f ns7/split-rrsig.db ns7/split-rrsig.db.unsplit
+rm -f Kexample.*
+rm -f keygen.err
if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret`
+echo "I:check that 'dnssec-keygen -S' works for all supported algorithms ($n)"
+ret=0
+alg=1
+until test $alg = 256
+do
+ size=
+ case $alg in
+ 1) size="-b 512";;
+ 2) # Diffie Helman
+ alg=`expr $alg + 1`
+ continue;;
+ 3) size="-b 512";;
+ 5) size="-b 512";;
+ 6) size="-b 512";;
+ 7) size="-b 512";;
+ 8) size="-b 512";;
+ 10) size="-b 1024";;
+ 157|160|161|162|163|164|165) # private - non standard
+ alg=`expr $alg + 1`
+ continue;;
+ esac
+ key1=`$KEYGEN -a $alg $size -n zone -r /dev/urandom example 2> keygen.err`
+ if grep "unsupported algorithm" keygen.err > /dev/null
+ then
+ alg=`expr $alg + 1`
+ continue
+ fi
+ if test -z "$key1"
+ then
+ echo "I: '$KEYGEN -a $alg': failed"
+ cat keygen.err
+ ret=1
+ alg=`expr $alg + 1`
+ continue
+ fi
+ $SETTIME -I now+4d $key1.private > /dev/null
+ key2=`$KEYGEN -v 10 -r /dev/urandom -i 3d -S $key1.private 2> /dev/null`
+ test -f $key2.key -a -f $key2.private || {
+ ret=1
+ echo "I: 'dnssec-keygen -S' failed for algorithm: $alg"
+ }
+ alg=`expr $alg + 1`
+done
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo "I:failed"; fi
+status=`expr $status + $ret`
+
echo "I:exit status: $status"
exit $status
UNUSED(unused);
UNUSED(callback);
- if (key->key_alg == DST_ALG_ECDSA256)
+ if (key->key_alg == DST_ALG_ECDSA256) {
group_nid = NID_X9_62_prime256v1;
- else
+ key->key_size = DNS_KEY_ECDSA256SIZE * 4;
+ } else {
group_nid = NID_secp384r1;
+ key->key_size = DNS_KEY_ECDSA384SIZE * 4;
+ }
eckey = EC_KEY_new_by_curve_name(group_nid);
if (eckey == NULL)
isc_buffer_forward(data, len);
key->keydata.pkey = pkey;
+ key->key_size = len * 4;
ret = ISC_R_SUCCESS;
err:
DST_RET (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
}
key->keydata.pkey = pkey;
+ if (key->key_alg == DST_ALG_ECDSA256)
+ key->key_size = DNS_KEY_ECDSA256SIZE * 4;
+ else
+ key->key_size = DNS_KEY_ECDSA384SIZE * 4;
ret = ISC_R_SUCCESS;
err:
DST_RET(dst__openssl_toresult2("EVP_PKEY_keygen",
DST_R_OPENSSLFAILURE));
key->keydata.pkey = pkey;
+ key->key_size = EVP_PKEY_bits(pkey);
EVP_PKEY_CTX_free(ctx);
return (ISC_R_SUCCESS);
return (dst__openssl_toresult2("d2i_PUBKEY",
DST_R_OPENSSLFAILURE));
key->keydata.pkey = pkey;
+ key->key_size = EVP_PKEY_bits(pkey);
return (ISC_R_SUCCESS);
}