mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/openssl] pkey: port PKey::PKey#sign and #verify to the EVP_Digest* interface
Use EVP_DigestSign*() and EVP_DigestVerify*() interface instead of the
old EVP_Sign*() and EVP_Verify*() functions. They were added in OpenSSL
1.0.0.
Also, allow the digest to be specified as nil, as certain EVP_PKEY types
don't expect a digest algorithm.
9ff6e5143b
This commit is contained in:
parent
1e3590fe22
commit
5cae289682
Notes:
git
2021-03-16 20:38:52 +09:00
2 changed files with 63 additions and 39 deletions
|
@ -68,4 +68,16 @@ class OpenSSL::TestPKey < OpenSSL::PKeyTestCase
|
|||
assert_equal 512, pkey.p.num_bits
|
||||
assert_not_equal nil, pkey.priv_key
|
||||
end
|
||||
|
||||
def test_hmac_sign_verify
|
||||
pkey = OpenSSL::PKey.generate_key("HMAC", { "key" => "abcd" })
|
||||
|
||||
hmac = OpenSSL::HMAC.new("abcd", "SHA256").update("data").digest
|
||||
assert_equal hmac, pkey.sign("SHA256", "data")
|
||||
|
||||
# EVP_PKEY_HMAC does not support verify
|
||||
assert_raise(OpenSSL::PKey::PKeyError) {
|
||||
pkey.verify("SHA256", "data", hmac)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue