Skip to content

Commit be8ba76

Browse files
pkey: EVP_DigestVerify doesn't return -1 in AWS-LC
EVP_DigestVerify in OpenSSL returns 0 to indicate a signature verification failure and can return -1 to indicate other failures, such as invalid ASN1 contents. ruby/openssl also reflects that by returning false with 0 and raising an error with -1. EVP_DigestVerify in AWS-LC simply returns 0 for any failure.
1 parent febe50b commit be8ba76

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

test/openssl/test_pkey_dsa.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,19 @@ def test_sign_verify_raw
9292
sig = key.syssign(digest)
9393
assert_equal true, key.sysverify(digest, sig)
9494
assert_equal false, key.sysverify(digest, invalid_sig)
95-
assert_raise(OpenSSL::PKey::DSAError) { key.sysverify(digest, malformed_sig) }
95+
assert_sign_verify_false_or_error{ key.sysverify(digest, malformed_sig) }
9696
assert_equal true, key.verify_raw(nil, sig, digest)
9797
assert_equal false, key.verify_raw(nil, invalid_sig, digest)
98-
assert_raise(OpenSSL::PKey::PKeyError) { key.verify_raw(nil, malformed_sig, digest) }
98+
assert_sign_verify_false_or_error { key.verify_raw(nil, malformed_sig, digest) }
9999

100100
# Sign by #sign_raw
101101
sig = key.sign_raw(nil, digest)
102102
assert_equal true, key.sysverify(digest, sig)
103103
assert_equal false, key.sysverify(digest, invalid_sig)
104-
assert_raise(OpenSSL::PKey::DSAError) { key.sysverify(digest, malformed_sig) }
104+
assert_sign_verify_false_or_error { key.sysverify(digest, malformed_sig) }
105105
assert_equal true, key.verify_raw(nil, sig, digest)
106106
assert_equal false, key.verify_raw(nil, invalid_sig, digest)
107-
assert_raise(OpenSSL::PKey::PKeyError) { key.verify_raw(nil, malformed_sig, digest) }
107+
assert_sign_verify_false_or_error { key.verify_raw(nil, malformed_sig, digest) }
108108
end
109109

110110
def test_DSAPrivateKey

test/openssl/test_pkey_ec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,19 +152,19 @@ def test_sign_verify_raw
152152
sig = key.dsa_sign_asn1(data1)
153153
assert_equal true, key.dsa_verify_asn1(data1, sig)
154154
assert_equal false, key.dsa_verify_asn1(data2, sig)
155-
assert_raise(OpenSSL::PKey::ECError) { key.dsa_verify_asn1(data1, malformed_sig) }
155+
assert_sign_verify_false_or_error { key.dsa_verify_asn1(data1, malformed_sig) }
156156
assert_equal true, key.verify_raw(nil, sig, data1)
157157
assert_equal false, key.verify_raw(nil, sig, data2)
158-
assert_raise(OpenSSL::PKey::PKeyError) { key.verify_raw(nil, malformed_sig, data1) }
158+
assert_sign_verify_false_or_error { key.verify_raw(nil, malformed_sig, data1) }
159159

160160
# Sign by #sign_raw
161161
sig = key.sign_raw(nil, data1)
162162
assert_equal true, key.dsa_verify_asn1(data1, sig)
163163
assert_equal false, key.dsa_verify_asn1(data2, sig)
164-
assert_raise(OpenSSL::PKey::ECError) { key.dsa_verify_asn1(data1, malformed_sig) }
164+
assert_sign_verify_false_or_error { key.dsa_verify_asn1(data1, malformed_sig) }
165165
assert_equal true, key.verify_raw(nil, sig, data1)
166166
assert_equal false, key.verify_raw(nil, sig, data2)
167-
assert_raise(OpenSSL::PKey::PKeyError) { key.verify_raw(nil, malformed_sig, data1) }
167+
assert_sign_verify_false_or_error{ key.verify_raw(nil, malformed_sig, data1) }
168168
end
169169

170170
def test_dsa_sign_asn1_FIPS186_3

test/openssl/utils.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,14 @@ def check_component(base, test, keys)
286286
assert_equal base.send(comp), test.send(comp)
287287
}
288288
end
289+
290+
def assert_sign_verify_false_or_error
291+
ret = yield
292+
rescue => e
293+
assert_kind_of(OpenSSL::PKey::PKeyError, e)
294+
else
295+
assert_equal(false, ret)
296+
end
289297
end
290298

291299
module OpenSSL::Certs

0 commit comments

Comments
 (0)