Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test/openssl/utils: remove dup_public helper method
Browse files Browse the repository at this point in the history
It uses deprecated PKey::{RSA,DSA,DH}#set_* methods, which will not
work with OpenSSL 3.0. The same can be easily achieved using
PKey#public_to_der, regardless of the key kind.
rhenium committed Jun 22, 2021
1 parent 2bda0da commit 5e58c10
Showing 5 changed files with 44 additions and 51 deletions.
8 changes: 5 additions & 3 deletions test/openssl/test_pkey_dh.rb
Original file line number Diff line number Diff line change
@@ -40,12 +40,14 @@ def test_derive_key

def test_DHparams
dh1024 = Fixtures.pkey("dh1024")
dh1024params = dh1024.public_key

asn1 = OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::Integer(dh1024.p),
OpenSSL::ASN1::Integer(dh1024.g)
])
key = OpenSSL::PKey::DH.new(asn1.to_der)
assert_same_dh dup_public(dh1024), key
assert_same_dh dh1024params, key

pem = <<~EOF
-----BEGIN DH PARAMETERS-----
@@ -55,9 +57,9 @@ def test_DHparams
-----END DH PARAMETERS-----
EOF
key = OpenSSL::PKey::DH.new(pem)
assert_same_dh dup_public(dh1024), key
assert_same_dh dh1024params, key
key = OpenSSL::PKey.read(pem)
assert_same_dh dup_public(dh1024), key
assert_same_dh dh1024params, key

assert_equal asn1.to_der, dh1024.to_der
assert_equal pem, dh1024.export
15 changes: 11 additions & 4 deletions test/openssl/test_pkey_dsa.rb
Original file line number Diff line number Diff line change
@@ -138,6 +138,8 @@ def test_DSAPrivateKey_encrypted

def test_PUBKEY
dsa512 = Fixtures.pkey("dsa512")
dsa512pub = OpenSSL::PKey::DSA.new(dsa512.public_to_der)

asn1 = OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::ObjectId("DSA"),
@@ -153,7 +155,7 @@ def test_PUBKEY
])
key = OpenSSL::PKey::DSA.new(asn1.to_der)
assert_not_predicate key, :private?
assert_same_dsa dup_public(dsa512), key
assert_same_dsa dsa512pub, key

pem = <<~EOF
-----BEGIN PUBLIC KEY-----
@@ -166,10 +168,15 @@ def test_PUBKEY
-----END PUBLIC KEY-----
EOF
key = OpenSSL::PKey::DSA.new(pem)
assert_same_dsa dup_public(dsa512), key
assert_same_dsa dsa512pub, key

assert_equal asn1.to_der, key.to_der
assert_equal pem, key.export

assert_equal asn1.to_der, dup_public(dsa512).to_der
assert_equal pem, dup_public(dsa512).export
assert_equal asn1.to_der, dsa512.public_to_der
assert_equal asn1.to_der, key.public_to_der
assert_equal pem, dsa512.public_to_pem
assert_equal pem, key.public_to_pem
end

def test_read_DSAPublicKey_pem
15 changes: 11 additions & 4 deletions test/openssl/test_pkey_ec.rb
Original file line number Diff line number Diff line change
@@ -218,6 +218,8 @@ def test_ECPrivateKey_encrypted

def test_PUBKEY
p256 = Fixtures.pkey("p256")
p256pub = OpenSSL::PKey::EC.new(p256.public_to_der)

asn1 = OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::ObjectId("id-ecPublicKey"),
@@ -229,7 +231,7 @@ def test_PUBKEY
])
key = OpenSSL::PKey::EC.new(asn1.to_der)
assert_not_predicate key, :private?
assert_same_ec dup_public(p256), key
assert_same_ec p256pub, key

pem = <<~EOF
-----BEGIN PUBLIC KEY-----
@@ -238,10 +240,15 @@ def test_PUBKEY
-----END PUBLIC KEY-----
EOF
key = OpenSSL::PKey::EC.new(pem)
assert_same_ec dup_public(p256), key
assert_same_ec p256pub, key

assert_equal asn1.to_der, key.to_der
assert_equal pem, key.export

assert_equal asn1.to_der, dup_public(p256).to_der
assert_equal pem, dup_public(p256).export
assert_equal asn1.to_der, p256.public_to_der
assert_equal asn1.to_der, key.public_to_der
assert_equal pem, p256.public_to_pem
assert_equal pem, key.public_to_pem
end

def test_ec_group
31 changes: 17 additions & 14 deletions test/openssl/test_pkey_rsa.rb
Original file line number Diff line number Diff line change
@@ -201,7 +201,7 @@ def test_sign_verify_pss

def test_encrypt_decrypt
rsapriv = Fixtures.pkey("rsa-1")
rsapub = dup_public(rsapriv)
rsapub = OpenSSL::PKey.read(rsapriv.public_to_der)

# Defaults to PKCS #1 v1.5
raw = "data"
@@ -216,7 +216,7 @@ def test_encrypt_decrypt

def test_encrypt_decrypt_legacy
rsapriv = Fixtures.pkey("rsa-1")
rsapub = dup_public(rsapriv)
rsapub = OpenSSL::PKey.read(rsapriv.public_to_der)

# Defaults to PKCS #1 v1.5
raw = "data"
@@ -346,13 +346,15 @@ def test_RSAPrivateKey_encrypted

def test_RSAPublicKey
rsa1024 = Fixtures.pkey("rsa1024")
rsa1024pub = OpenSSL::PKey::RSA.new(rsa1024.public_to_der)

asn1 = OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::Integer(rsa1024.n),
OpenSSL::ASN1::Integer(rsa1024.e)
])
key = OpenSSL::PKey::RSA.new(asn1.to_der)
assert_not_predicate key, :private?
assert_same_rsa dup_public(rsa1024), key
assert_same_rsa rsa1024pub, key

pem = <<~EOF
-----BEGIN RSA PUBLIC KEY-----
@@ -362,11 +364,13 @@ def test_RSAPublicKey
-----END RSA PUBLIC KEY-----
EOF
key = OpenSSL::PKey::RSA.new(pem)
assert_same_rsa dup_public(rsa1024), key
assert_same_rsa rsa1024pub, key
end

def test_PUBKEY
rsa1024 = Fixtures.pkey("rsa1024")
rsa1024pub = OpenSSL::PKey::RSA.new(rsa1024.public_to_der)

asn1 = OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::Sequence([
OpenSSL::ASN1::ObjectId("rsaEncryption"),
@@ -381,7 +385,7 @@ def test_PUBKEY
])
key = OpenSSL::PKey::RSA.new(asn1.to_der)
assert_not_predicate key, :private?
assert_same_rsa dup_public(rsa1024), key
assert_same_rsa rsa1024pub, key

pem = <<~EOF
-----BEGIN PUBLIC KEY-----
@@ -392,10 +396,15 @@ def test_PUBKEY
-----END PUBLIC KEY-----
EOF
key = OpenSSL::PKey::RSA.new(pem)
assert_same_rsa dup_public(rsa1024), key
assert_same_rsa rsa1024pub, key

assert_equal asn1.to_der, key.to_der
assert_equal pem, key.export

assert_equal asn1.to_der, dup_public(rsa1024).to_der
assert_equal pem, dup_public(rsa1024).export
assert_equal asn1.to_der, rsa1024.public_to_der
assert_equal asn1.to_der, key.public_to_der
assert_equal pem, rsa1024.public_to_pem
assert_equal pem, key.public_to_pem
end

def test_pem_passwd
@@ -482,12 +491,6 @@ def test_private_encoding_encrypted
assert_same_rsa rsa1024, OpenSSL::PKey.read(pem, "abcdef")
end

def test_public_encoding
rsa1024 = Fixtures.pkey("rsa1024")
assert_equal dup_public(rsa1024).to_der, rsa1024.public_to_der
assert_equal dup_public(rsa1024).to_pem, rsa1024.public_to_pem
end

def test_dup
key1 = Fixtures.pkey("rsa-1")
key1dup = key1.dup
26 changes: 0 additions & 26 deletions test/openssl/utils.rb
Original file line number Diff line number Diff line change
@@ -313,32 +313,6 @@ def check_component(base, test, keys)
assert_equal base.send(comp), test.send(comp)
}
end

def dup_public(key)
case key
when OpenSSL::PKey::RSA
rsa = OpenSSL::PKey::RSA.new
rsa.set_key(key.n, key.e, nil)
rsa
when OpenSSL::PKey::DSA
dsa = OpenSSL::PKey::DSA.new
dsa.set_pqg(key.p, key.q, key.g)
dsa.set_key(key.pub_key, nil)
dsa
when OpenSSL::PKey::DH
dh = OpenSSL::PKey::DH.new
dh.set_pqg(key.p, nil, key.g)
dh
else
if defined?(OpenSSL::PKey::EC) && OpenSSL::PKey::EC === key
ec = OpenSSL::PKey::EC.new(key.group)
ec.public_key = key.public_key
ec
else
raise "unknown key type"
end
end
end
end

module OpenSSL::Certs

0 comments on commit 5e58c10

Please sign in to comment.