Bug #2604
closedtest_dsa_sign_verify() in test/openssl/test_ec.rb failes
Description
=begin
NetBSD current (5.99.23)で make test-all を実行すると、test/openssl/test_ec.rbの
test_dsa_sign_verify()に失敗します。
test_dsa_sign_verify(OpenSSL::TestEC)
[./test/openssl/test_ec.rb:92:in test_dsa_sign_verify' ./test/openssl/test_ec.rb:88:in
each'
./test/openssl/test_ec.rb:88:in `test_dsa_sign_verify']:
OpenSSL::PKey::ECError exception expected but none was thrown.
これは test_dsa_sign_verify()の以下の行で失敗しています。
assert_raises(OpenSSL::PKey::ECError) { key.dsa_sign_asn1(@data2) }
このテストは dsa_sign_asn1に長すぎる値を渡してエラーとなることを期待して
います。OpenSSLのソースを確認するとNetBSD 5.0_STABLEの 0.9.9-dev あたり
までは、openssl/crypto/ecdsa/ecs_ossl.cのecdsa_do_sign()内で、
if (8 * dgst_len > BN_num_bits(order))
{
/* XXX
*
* Should provide for optional hash truncation:
* Keep the BN_num_bits(order) leftmost bits of dgst
* (see March 2006 FIPS 186-3 draft, which has a few
* confusing errors in this part though)
*/
ECDSAerr(ECDSA_F_ECDSA_DO_SIGN,
ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
goto err;
}
とチェックされていますが、NetBSD currentのOpenSSL 1.1.0-dev では、この
ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZEというエラーを起こすコードは削除され、
代わりに渡されたdigestを切り詰める処理が加えられています。
従って、このエラーとなることを検査するテストは廃止するか、OpenSSLのバー
ジョンに応じて行う必要があると思います。
=end