Skip to content

Commit 7b66eaa

Browse files
committed
test/openssl/utils: remove dup_public helper method
It uses deprecated PKey::{RSA,DSA,DH}#set_* methods, which will not work with OpenSSL 3.0. The same can easily be achieved using PKey#public_to_der regardless of the key kind.
1 parent 2b3b29b commit 7b66eaa

File tree

5 files changed

+44
-51
lines changed

5 files changed

+44
-51
lines changed

test/openssl/test_pkey_dh.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,14 @@ def test_derive_key
4040

4141
def test_DHparams
4242
dh1024 = Fixtures.pkey("dh1024")
43+
dh1024params = dh1024.public_key
44+
4345
asn1 = OpenSSL::ASN1::Sequence([
4446
OpenSSL::ASN1::Integer(dh1024.p),
4547
OpenSSL::ASN1::Integer(dh1024.g)
4648
])
4749
key = OpenSSL::PKey::DH.new(asn1.to_der)
48-
assert_same_dh dup_public(dh1024), key
50+
assert_same_dh dh1024params, key
4951

5052
pem = <<~EOF
5153
-----BEGIN DH PARAMETERS-----
@@ -55,9 +57,9 @@ def test_DHparams
5557
-----END DH PARAMETERS-----
5658
EOF
5759
key = OpenSSL::PKey::DH.new(pem)
58-
assert_same_dh dup_public(dh1024), key
60+
assert_same_dh dh1024params, key
5961
key = OpenSSL::PKey.read(pem)
60-
assert_same_dh dup_public(dh1024), key
62+
assert_same_dh dh1024params, key
6163

6264
assert_equal asn1.to_der, dh1024.to_der
6365
assert_equal pem, dh1024.export

test/openssl/test_pkey_dsa.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ def test_DSAPrivateKey_encrypted
138138

139139
def test_PUBKEY
140140
dsa512 = Fixtures.pkey("dsa512")
141+
dsa512pub = OpenSSL::PKey::DSA.new(dsa512.public_to_der)
142+
141143
asn1 = OpenSSL::ASN1::Sequence([
142144
OpenSSL::ASN1::Sequence([
143145
OpenSSL::ASN1::ObjectId("DSA"),
@@ -153,7 +155,7 @@ def test_PUBKEY
153155
])
154156
key = OpenSSL::PKey::DSA.new(asn1.to_der)
155157
assert_not_predicate key, :private?
156-
assert_same_dsa dup_public(dsa512), key
158+
assert_same_dsa dsa512pub, key
157159

158160
pem = <<~EOF
159161
-----BEGIN PUBLIC KEY-----
@@ -166,10 +168,15 @@ def test_PUBKEY
166168
-----END PUBLIC KEY-----
167169
EOF
168170
key = OpenSSL::PKey::DSA.new(pem)
169-
assert_same_dsa dup_public(dsa512), key
171+
assert_same_dsa dsa512pub, key
172+
173+
assert_equal asn1.to_der, key.to_der
174+
assert_equal pem, key.export
170175

171-
assert_equal asn1.to_der, dup_public(dsa512).to_der
172-
assert_equal pem, dup_public(dsa512).export
176+
assert_equal asn1.to_der, dsa512.public_to_der
177+
assert_equal asn1.to_der, key.public_to_der
178+
assert_equal pem, dsa512.public_to_pem
179+
assert_equal pem, key.public_to_pem
173180
end
174181

175182
def test_read_DSAPublicKey_pem

test/openssl/test_pkey_ec.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@ def test_ECPrivateKey_encrypted
210210

211211
def test_PUBKEY
212212
p256 = Fixtures.pkey("p256")
213+
p256pub = OpenSSL::PKey::EC.new(p256.public_to_der)
214+
213215
asn1 = OpenSSL::ASN1::Sequence([
214216
OpenSSL::ASN1::Sequence([
215217
OpenSSL::ASN1::ObjectId("id-ecPublicKey"),
@@ -221,7 +223,7 @@ def test_PUBKEY
221223
])
222224
key = OpenSSL::PKey::EC.new(asn1.to_der)
223225
assert_not_predicate key, :private?
224-
assert_same_ec dup_public(p256), key
226+
assert_same_ec p256pub, key
225227

226228
pem = <<~EOF
227229
-----BEGIN PUBLIC KEY-----
@@ -230,10 +232,15 @@ def test_PUBKEY
230232
-----END PUBLIC KEY-----
231233
EOF
232234
key = OpenSSL::PKey::EC.new(pem)
233-
assert_same_ec dup_public(p256), key
235+
assert_same_ec p256pub, key
236+
237+
assert_equal asn1.to_der, key.to_der
238+
assert_equal pem, key.export
234239

235-
assert_equal asn1.to_der, dup_public(p256).to_der
236-
assert_equal pem, dup_public(p256).export
240+
assert_equal asn1.to_der, p256.public_to_der
241+
assert_equal asn1.to_der, key.public_to_der
242+
assert_equal pem, p256.public_to_pem
243+
assert_equal pem, key.public_to_pem
237244
end
238245

239246
def test_ec_group

test/openssl/test_pkey_rsa.rb

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ def test_sign_verify_pss
201201

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

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

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

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

347347
def test_RSAPublicKey
348348
rsa1024 = Fixtures.pkey("rsa1024")
349+
rsa1024pub = OpenSSL::PKey::RSA.new(rsa1024.public_to_der)
350+
349351
asn1 = OpenSSL::ASN1::Sequence([
350352
OpenSSL::ASN1::Integer(rsa1024.n),
351353
OpenSSL::ASN1::Integer(rsa1024.e)
352354
])
353355
key = OpenSSL::PKey::RSA.new(asn1.to_der)
354356
assert_not_predicate key, :private?
355-
assert_same_rsa dup_public(rsa1024), key
357+
assert_same_rsa rsa1024pub, key
356358

357359
pem = <<~EOF
358360
-----BEGIN RSA PUBLIC KEY-----
@@ -362,11 +364,13 @@ def test_RSAPublicKey
362364
-----END RSA PUBLIC KEY-----
363365
EOF
364366
key = OpenSSL::PKey::RSA.new(pem)
365-
assert_same_rsa dup_public(rsa1024), key
367+
assert_same_rsa rsa1024pub, key
366368
end
367369

368370
def test_PUBKEY
369371
rsa1024 = Fixtures.pkey("rsa1024")
372+
rsa1024pub = OpenSSL::PKey::RSA.new(rsa1024.public_to_der)
373+
370374
asn1 = OpenSSL::ASN1::Sequence([
371375
OpenSSL::ASN1::Sequence([
372376
OpenSSL::ASN1::ObjectId("rsaEncryption"),
@@ -381,7 +385,7 @@ def test_PUBKEY
381385
])
382386
key = OpenSSL::PKey::RSA.new(asn1.to_der)
383387
assert_not_predicate key, :private?
384-
assert_same_rsa dup_public(rsa1024), key
388+
assert_same_rsa rsa1024pub, key
385389

386390
pem = <<~EOF
387391
-----BEGIN PUBLIC KEY-----
@@ -392,10 +396,15 @@ def test_PUBKEY
392396
-----END PUBLIC KEY-----
393397
EOF
394398
key = OpenSSL::PKey::RSA.new(pem)
395-
assert_same_rsa dup_public(rsa1024), key
399+
assert_same_rsa rsa1024pub, key
400+
401+
assert_equal asn1.to_der, key.to_der
402+
assert_equal pem, key.export
396403

397-
assert_equal asn1.to_der, dup_public(rsa1024).to_der
398-
assert_equal pem, dup_public(rsa1024).export
404+
assert_equal asn1.to_der, rsa1024.public_to_der
405+
assert_equal asn1.to_der, key.public_to_der
406+
assert_equal pem, rsa1024.public_to_pem
407+
assert_equal pem, key.public_to_pem
399408
end
400409

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

485-
def test_public_encoding
486-
rsa1024 = Fixtures.pkey("rsa1024")
487-
assert_equal dup_public(rsa1024).to_der, rsa1024.public_to_der
488-
assert_equal dup_public(rsa1024).to_pem, rsa1024.public_to_pem
489-
end
490-
491494
def test_dup
492495
key = Fixtures.pkey("rsa1024")
493496
key2 = key.dup

test/openssl/utils.rb

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -306,32 +306,6 @@ def check_component(base, test, keys)
306306
assert_equal base.send(comp), test.send(comp)
307307
}
308308
end
309-
310-
def dup_public(key)
311-
case key
312-
when OpenSSL::PKey::RSA
313-
rsa = OpenSSL::PKey::RSA.new
314-
rsa.set_key(key.n, key.e, nil)
315-
rsa
316-
when OpenSSL::PKey::DSA
317-
dsa = OpenSSL::PKey::DSA.new
318-
dsa.set_pqg(key.p, key.q, key.g)
319-
dsa.set_key(key.pub_key, nil)
320-
dsa
321-
when OpenSSL::PKey::DH
322-
dh = OpenSSL::PKey::DH.new
323-
dh.set_pqg(key.p, nil, key.g)
324-
dh
325-
else
326-
if defined?(OpenSSL::PKey::EC) && OpenSSL::PKey::EC === key
327-
ec = OpenSSL::PKey::EC.new(key.group)
328-
ec.public_key = key.public_key
329-
ec
330-
else
331-
raise "unknown key type"
332-
end
333-
end
334-
end
335309
end
336310

337311
module OpenSSL::Certs

0 commit comments

Comments
 (0)