c4f8814
From 2c6797bc97d7c92284dc3c0ed27f97ace4e5cfb9 Mon Sep 17 00:00:00 2001
c4f8814
From: Kazuki Yamaguchi <k@rhe.jp>
c4f8814
Date: Mon, 31 May 2021 11:44:05 +0900
c4f8814
Subject: [PATCH] test/openssl/utils: remove dup_public helper method
c4f8814
c4f8814
It uses deprecated PKey::{RSA,DSA,DH}#set_* methods, which will not
c4f8814
work with OpenSSL 3.0. The same can easily be achieved using
c4f8814
PKey#public_to_der regardless of the key kind.
c4f8814
---
c4f8814
 test/openssl/test_pkey_dh.rb  |  8 +++++---
c4f8814
 test/openssl/test_pkey_dsa.rb | 15 +++++++++++----
c4f8814
 test/openssl/test_pkey_ec.rb  | 15 +++++++++++----
c4f8814
 test/openssl/test_pkey_rsa.rb | 31 +++++++++++++++++--------------
c4f8814
 test/openssl/utils.rb         | 26 --------------------------
c4f8814
 5 files changed, 44 insertions(+), 51 deletions(-)
c4f8814
c4f8814
diff --git a/test/openssl/test_pkey_dh.rb b/test/openssl/test_pkey_dh.rb
c4f8814
index f80af8f841..757704caf6 100644
c4f8814
--- a/test/openssl/test_pkey_dh.rb
c4f8814
+++ b/test/openssl/test_pkey_dh.rb
c4f8814
@@ -40,12 +40,14 @@ def test_derive_key
c4f8814
 
c4f8814
   def test_DHparams
c4f8814
     dh1024 = Fixtures.pkey("dh1024")
c4f8814
+    dh1024params = dh1024.public_key
c4f8814
+
c4f8814
     asn1 = OpenSSL::ASN1::Sequence([
c4f8814
       OpenSSL::ASN1::Integer(dh1024.p),
c4f8814
       OpenSSL::ASN1::Integer(dh1024.g)
c4f8814
     ])
c4f8814
     key = OpenSSL::PKey::DH.new(asn1.to_der)
c4f8814
-    assert_same_dh dup_public(dh1024), key
c4f8814
+    assert_same_dh dh1024params, key
c4f8814
 
c4f8814
     pem = <<~EOF
c4f8814
     -----BEGIN DH PARAMETERS-----
c4f8814
@@ -55,9 +57,9 @@ def test_DHparams
c4f8814
     -----END DH PARAMETERS-----
c4f8814
     EOF
c4f8814
     key = OpenSSL::PKey::DH.new(pem)
c4f8814
-    assert_same_dh dup_public(dh1024), key
c4f8814
+    assert_same_dh dh1024params, key
c4f8814
     key = OpenSSL::PKey.read(pem)
c4f8814
-    assert_same_dh dup_public(dh1024), key
c4f8814
+    assert_same_dh dh1024params, key
c4f8814
 
c4f8814
     assert_equal asn1.to_der, dh1024.to_der
c4f8814
     assert_equal pem, dh1024.export
c4f8814
diff --git a/test/openssl/test_pkey_dsa.rb b/test/openssl/test_pkey_dsa.rb
c4f8814
index 147e50176b..0994607f21 100644
c4f8814
--- a/test/openssl/test_pkey_dsa.rb
c4f8814
+++ b/test/openssl/test_pkey_dsa.rb
c4f8814
@@ -138,6 +138,8 @@ def test_DSAPrivateKey_encrypted
c4f8814
 
c4f8814
   def test_PUBKEY
c4f8814
     dsa512 = Fixtures.pkey("dsa512")
c4f8814
+    dsa512pub = OpenSSL::PKey::DSA.new(dsa512.public_to_der)
c4f8814
+
c4f8814
     asn1 = OpenSSL::ASN1::Sequence([
c4f8814
       OpenSSL::ASN1::Sequence([
c4f8814
         OpenSSL::ASN1::ObjectId("DSA"),
c4f8814
@@ -153,7 +155,7 @@ def test_PUBKEY
c4f8814
     ])
c4f8814
     key = OpenSSL::PKey::DSA.new(asn1.to_der)
c4f8814
     assert_not_predicate key, :private?
c4f8814
-    assert_same_dsa dup_public(dsa512), key
c4f8814
+    assert_same_dsa dsa512pub, key
c4f8814
 
c4f8814
     pem = <<~EOF
c4f8814
     -----BEGIN PUBLIC KEY-----
c4f8814
@@ -166,10 +168,15 @@ def test_PUBKEY
c4f8814
     -----END PUBLIC KEY-----
c4f8814
     EOF
c4f8814
     key = OpenSSL::PKey::DSA.new(pem)
c4f8814
-    assert_same_dsa dup_public(dsa512), key
c4f8814
+    assert_same_dsa dsa512pub, key
c4f8814
+
c4f8814
+    assert_equal asn1.to_der, key.to_der
c4f8814
+    assert_equal pem, key.export
c4f8814
 
c4f8814
-    assert_equal asn1.to_der, dup_public(dsa512).to_der
c4f8814
-    assert_equal pem, dup_public(dsa512).export
c4f8814
+    assert_equal asn1.to_der, dsa512.public_to_der
c4f8814
+    assert_equal asn1.to_der, key.public_to_der
c4f8814
+    assert_equal pem, dsa512.public_to_pem
c4f8814
+    assert_equal pem, key.public_to_pem
c4f8814
   end
c4f8814
 
c4f8814
   def test_read_DSAPublicKey_pem
c4f8814
diff --git a/test/openssl/test_pkey_ec.rb b/test/openssl/test_pkey_ec.rb
c4f8814
index 4b6df0290f..d62f1b5eb8 100644
c4f8814
--- a/test/openssl/test_pkey_ec.rb
c4f8814
+++ b/test/openssl/test_pkey_ec.rb
c4f8814
@@ -210,6 +210,8 @@ def test_ECPrivateKey_encrypted
c4f8814
 
c4f8814
   def test_PUBKEY
c4f8814
     p256 = Fixtures.pkey("p256")
c4f8814
+    p256pub = OpenSSL::PKey::EC.new(p256.public_to_der)
c4f8814
+
c4f8814
     asn1 = OpenSSL::ASN1::Sequence([
c4f8814
       OpenSSL::ASN1::Sequence([
c4f8814
         OpenSSL::ASN1::ObjectId("id-ecPublicKey"),
c4f8814
@@ -221,7 +223,7 @@ def test_PUBKEY
c4f8814
     ])
c4f8814
     key = OpenSSL::PKey::EC.new(asn1.to_der)
c4f8814
     assert_not_predicate key, :private?
c4f8814
-    assert_same_ec dup_public(p256), key
c4f8814
+    assert_same_ec p256pub, key
c4f8814
 
c4f8814
     pem = <<~EOF
c4f8814
     -----BEGIN PUBLIC KEY-----
c4f8814
@@ -230,10 +232,15 @@ def test_PUBKEY
c4f8814
     -----END PUBLIC KEY-----
c4f8814
     EOF
c4f8814
     key = OpenSSL::PKey::EC.new(pem)
c4f8814
-    assert_same_ec dup_public(p256), key
c4f8814
+    assert_same_ec p256pub, key
c4f8814
+
c4f8814
+    assert_equal asn1.to_der, key.to_der
c4f8814
+    assert_equal pem, key.export
c4f8814
 
c4f8814
-    assert_equal asn1.to_der, dup_public(p256).to_der
c4f8814
-    assert_equal pem, dup_public(p256).export
c4f8814
+    assert_equal asn1.to_der, p256.public_to_der
c4f8814
+    assert_equal asn1.to_der, key.public_to_der
c4f8814
+    assert_equal pem, p256.public_to_pem
c4f8814
+    assert_equal pem, key.public_to_pem
c4f8814
   end
c4f8814
 
c4f8814
   def test_ec_group
c4f8814
diff --git a/test/openssl/test_pkey_rsa.rb b/test/openssl/test_pkey_rsa.rb
c4f8814
index 5e127f5407..4548bdb2cf 100644
c4f8814
--- a/test/openssl/test_pkey_rsa.rb
c4f8814
+++ b/test/openssl/test_pkey_rsa.rb
c4f8814
@@ -201,7 +201,7 @@ def test_sign_verify_pss
c4f8814
 
c4f8814
   def test_encrypt_decrypt
c4f8814
     rsapriv = Fixtures.pkey("rsa-1")
c4f8814
-    rsapub = dup_public(rsapriv)
c4f8814
+    rsapub = OpenSSL::PKey.read(rsapriv.public_to_der)
c4f8814
 
c4f8814
     # Defaults to PKCS #1 v1.5
c4f8814
     raw = "data"
c4f8814
@@ -216,7 +216,7 @@ def test_encrypt_decrypt
c4f8814
 
c4f8814
   def test_encrypt_decrypt_legacy
c4f8814
     rsapriv = Fixtures.pkey("rsa-1")
c4f8814
-    rsapub = dup_public(rsapriv)
c4f8814
+    rsapub = OpenSSL::PKey.read(rsapriv.public_to_der)
c4f8814
 
c4f8814
     # Defaults to PKCS #1 v1.5
c4f8814
     raw = "data"
c4f8814
@@ -346,13 +346,15 @@ def test_RSAPrivateKey_encrypted
c4f8814
 
c4f8814
   def test_RSAPublicKey
c4f8814
     rsa1024 = Fixtures.pkey("rsa1024")
c4f8814
+    rsa1024pub = OpenSSL::PKey::RSA.new(rsa1024.public_to_der)
c4f8814
+
c4f8814
     asn1 = OpenSSL::ASN1::Sequence([
c4f8814
       OpenSSL::ASN1::Integer(rsa1024.n),
c4f8814
       OpenSSL::ASN1::Integer(rsa1024.e)
c4f8814
     ])
c4f8814
     key = OpenSSL::PKey::RSA.new(asn1.to_der)
c4f8814
     assert_not_predicate key, :private?
c4f8814
-    assert_same_rsa dup_public(rsa1024), key
c4f8814
+    assert_same_rsa rsa1024pub, key
c4f8814
 
c4f8814
     pem = <<~EOF
c4f8814
     -----BEGIN RSA PUBLIC KEY-----
c4f8814
@@ -362,11 +364,13 @@ def test_RSAPublicKey
c4f8814
     -----END RSA PUBLIC KEY-----
c4f8814
     EOF
c4f8814
     key = OpenSSL::PKey::RSA.new(pem)
c4f8814
-    assert_same_rsa dup_public(rsa1024), key
c4f8814
+    assert_same_rsa rsa1024pub, key
c4f8814
   end
c4f8814
 
c4f8814
   def test_PUBKEY
c4f8814
     rsa1024 = Fixtures.pkey("rsa1024")
c4f8814
+    rsa1024pub = OpenSSL::PKey::RSA.new(rsa1024.public_to_der)
c4f8814
+
c4f8814
     asn1 = OpenSSL::ASN1::Sequence([
c4f8814
       OpenSSL::ASN1::Sequence([
c4f8814
         OpenSSL::ASN1::ObjectId("rsaEncryption"),
c4f8814
@@ -381,7 +385,7 @@ def test_PUBKEY
c4f8814
     ])
c4f8814
     key = OpenSSL::PKey::RSA.new(asn1.to_der)
c4f8814
     assert_not_predicate key, :private?
c4f8814
-    assert_same_rsa dup_public(rsa1024), key
c4f8814
+    assert_same_rsa rsa1024pub, key
c4f8814
 
c4f8814
     pem = <<~EOF
c4f8814
     -----BEGIN PUBLIC KEY-----
c4f8814
@@ -392,10 +396,15 @@ def test_PUBKEY
c4f8814
     -----END PUBLIC KEY-----
c4f8814
     EOF
c4f8814
     key = OpenSSL::PKey::RSA.new(pem)
c4f8814
-    assert_same_rsa dup_public(rsa1024), key
c4f8814
+    assert_same_rsa rsa1024pub, key
c4f8814
+
c4f8814
+    assert_equal asn1.to_der, key.to_der
c4f8814
+    assert_equal pem, key.export
c4f8814
 
c4f8814
-    assert_equal asn1.to_der, dup_public(rsa1024).to_der
c4f8814
-    assert_equal pem, dup_public(rsa1024).export
c4f8814
+    assert_equal asn1.to_der, rsa1024.public_to_der
c4f8814
+    assert_equal asn1.to_der, key.public_to_der
c4f8814
+    assert_equal pem, rsa1024.public_to_pem
c4f8814
+    assert_equal pem, key.public_to_pem
c4f8814
   end
c4f8814
 
c4f8814
   def test_pem_passwd
c4f8814
@@ -482,12 +491,6 @@ def test_private_encoding_encrypted
c4f8814
     assert_same_rsa rsa1024, OpenSSL::PKey.read(pem, "abcdef")
c4f8814
   end
c4f8814
 
c4f8814
-  def test_public_encoding
c4f8814
-    rsa1024 = Fixtures.pkey("rsa1024")
c4f8814
-    assert_equal dup_public(rsa1024).to_der, rsa1024.public_to_der
c4f8814
-    assert_equal dup_public(rsa1024).to_pem, rsa1024.public_to_pem
c4f8814
-  end
c4f8814
-
c4f8814
   def test_dup
c4f8814
     key = Fixtures.pkey("rsa1024")
c4f8814
     key2 = key.dup
c4f8814
diff --git a/test/openssl/utils.rb b/test/openssl/utils.rb
c4f8814
index c1d737b2ab..f664bd3074 100644
c4f8814
--- a/test/openssl/utils.rb
c4f8814
+++ b/test/openssl/utils.rb
d584a5b
@@ -313,32 +313,6 @@ def check_component(base, test, keys)
c4f8814
       assert_equal base.send(comp), test.send(comp)
c4f8814
     }
c4f8814
   end
c4f8814
-
c4f8814
-  def dup_public(key)
c4f8814
-    case key
c4f8814
-    when OpenSSL::PKey::RSA
c4f8814
-      rsa = OpenSSL::PKey::RSA.new
c4f8814
-      rsa.set_key(key.n, key.e, nil)
c4f8814
-      rsa
c4f8814
-    when OpenSSL::PKey::DSA
c4f8814
-      dsa = OpenSSL::PKey::DSA.new
c4f8814
-      dsa.set_pqg(key.p, key.q, key.g)
c4f8814
-      dsa.set_key(key.pub_key, nil)
c4f8814
-      dsa
c4f8814
-    when OpenSSL::PKey::DH
c4f8814
-      dh = OpenSSL::PKey::DH.new
c4f8814
-      dh.set_pqg(key.p, nil, key.g)
c4f8814
-      dh
c4f8814
-    else
c4f8814
-      if defined?(OpenSSL::PKey::EC) && OpenSSL::PKey::EC === key
c4f8814
-        ec = OpenSSL::PKey::EC.new(key.group)
c4f8814
-        ec.public_key = key.public_key
c4f8814
-        ec
c4f8814
-      else
c4f8814
-        raise "unknown key type"
c4f8814
-      end
c4f8814
-    end
c4f8814
-  end
c4f8814
 end
c4f8814
 
c4f8814
 module OpenSSL::Certs
c4f8814
-- 
c4f8814
2.32.0
c4f8814