Skip to content

Commit

Permalink
pkey: refactor PKey::PKey#{sign,verify} tests
Browse files Browse the repository at this point in the history
RSA, DSA and EC should work in the same way, so extract to
OpenSSL::TestPKey.
  • Loading branch information
rhenium committed Jul 9, 2016
1 parent 252073e commit ee5d21b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 41 deletions.
27 changes: 27 additions & 0 deletions test/test_pkey.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class OpenSSL::TestPKey < OpenSSL::PKeyTestCase
OpenSSL::PKey::RSA => {
error: OpenSSL::PKey::RSAError,
key: OpenSSL::TestUtils::TEST_KEY_RSA1024,
digest: OpenSSL::Digest::SHA1,
encrypted_pem: <<~EOF
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
Expand All @@ -33,6 +34,7 @@ class OpenSSL::TestPKey < OpenSSL::PKeyTestCase
OpenSSL::PKey::DSA => {
error: OpenSSL::PKey::DSAError,
key: OpenSSL::TestUtils::TEST_KEY_DSA512,
digest: OpenSSL::Digest::SHA1,
encrypted_pem: <<~EOF
-----BEGIN DSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
Expand All @@ -51,6 +53,7 @@ class OpenSSL::TestPKey < OpenSSL::PKeyTestCase
PKEYS[OpenSSL::PKey::EC] = {
error: OpenSSL::PKey::ECError,
key: OpenSSL::TestUtils::TEST_KEY_EC_P256V1,
digest: OpenSSL::TestUtils::DSA_SIGNATURE_DIGEST,
encrypted_pem: <<~EOF
-----BEGIN EC PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
Expand Down Expand Up @@ -97,6 +100,30 @@ def test_export_password_traditional
}
end
end

def test_sign_verify
data = "Sign me!"
invalid_data = "Sign me?"
PKEYS.each do |klass, prop|
key = prop[:key]
pub_key = dup_public(prop[:key])
digest = prop[:digest].new
signature = key.sign(digest, data)
assert_equal(true, pub_key.verify(digest, signature, data))
assert_equal(false, pub_key.verify(digest, signature, invalid_data))
# digest state is irrelevant
digest << "unya"
assert_equal(true, pub_key.verify(digest, signature, data))
assert_equal(false, pub_key.verify(digest, signature, invalid_data))

if OpenSSL::OPENSSL_VERSION_NUMBER > 0x10000000
digest = OpenSSL::Digest::SHA256.new
signature = key.sign(digest, data)
assert_equal(true, pub_key.verify(digest, signature, data))
assert_equal(false, pub_key.verify(digest, signature, invalid_data))
end
end
end
end

end
33 changes: 0 additions & 33 deletions test/test_pkey_dsa.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,32 +39,6 @@ def test_sys_sign_verify
assert(key.sysverify(digest, sig))
end

def test_sign_verify
check_sign_verify(OpenSSL::Digest::DSS1.new)
end if defined?(OpenSSL::Digest::DSS1)

if (OpenSSL::OPENSSL_VERSION_NUMBER > 0x10000000)
def test_sign_verify_sha1
check_sign_verify(OpenSSL::Digest::SHA1.new)
end

def test_sign_verify_sha256
check_sign_verify(OpenSSL::Digest::SHA256.new)
end
end

def test_digest_state_irrelevant_verify
key = OpenSSL::TestUtils::TEST_KEY_DSA256
digest1 = OpenSSL::TestUtils::DSA_SIGNATURE_DIGEST.new
digest2 = OpenSSL::TestUtils::DSA_SIGNATURE_DIGEST.new
data = 'Sign me!'
sig = key.sign(digest1, data)
digest1.reset
digest1 << 'Change state of digest1'
assert(key.verify(digest1, sig, data))
assert(key.verify(digest2, sig, data))
end

def test_read_DSAPrivateKey
# OpenSSL DSAPrivateKey format; similar to RSAPrivateKey
asn1 = OpenSSL::ASN1::Sequence([
Expand Down Expand Up @@ -193,13 +167,6 @@ def test_dup
end

private
def check_sign_verify(digest)
key = OpenSSL::TestUtils::TEST_KEY_DSA256
data = 'Sign me!'
sig = key.sign(digest, data)
assert(key.verify(digest, sig, data))
end

def check_DSAPrivateKey(der, key)
asn1 = OpenSSL::ASN1.decode(der)
assert_equal(OpenSSL::ASN1::SEQUENCE, asn1.tag)
Expand Down
8 changes: 0 additions & 8 deletions test/test_pkey_rsa.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,6 @@ def test_new_break
end
end

def test_sign_verify
key = RSA1024
digest = OpenSSL::Digest::SHA1.new
data = 'Sign me!'
sig = key.sign(digest, data)
assert(key.verify(digest, sig, data))
end

def test_sign_verify_memory_leak
bug9743 = '[ruby-core:62038] [Bug #9743]'
assert_no_memory_leak(%w[-ropenssl], <<-PREP, <<-CODE, bug9743, rss: true, timeout: 30)
Expand Down

0 comments on commit ee5d21b

Please sign in to comment.