Skip to content

Commit 80e6df0

Browse files
committed
[test] cope over RSA test from MRI's suite
as a guard against regression
1 parent 0fea064 commit 80e6df0

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

src/test/ruby/rsa/test_rsa.rb

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,57 @@ def test_read_private_key_with_password
189189
assert key.is_a?(OpenSSL::PKey::RSA)
190190
end
191191

192+
def test_RSAPrivateKey
193+
rsa1024 = Fixtures.pkey("rsa1024")
194+
assert_not_equal nil, rsa1024.dmp1
195+
assert_not_equal nil, rsa1024.dmq1
196+
assert_not_equal nil, rsa1024.iqmp
197+
198+
asn1 = OpenSSL::ASN1::Sequence([
199+
OpenSSL::ASN1::Integer(0),
200+
OpenSSL::ASN1::Integer(rsa1024.n),
201+
OpenSSL::ASN1::Integer(rsa1024.e),
202+
OpenSSL::ASN1::Integer(rsa1024.d),
203+
OpenSSL::ASN1::Integer(rsa1024.p),
204+
OpenSSL::ASN1::Integer(rsa1024.q),
205+
OpenSSL::ASN1::Integer(rsa1024.dmp1), # nil???
206+
OpenSSL::ASN1::Integer(rsa1024.dmq1),
207+
OpenSSL::ASN1::Integer(rsa1024.iqmp)
208+
])
209+
key = OpenSSL::PKey::RSA.new(asn1.to_der)
210+
assert_predicate key, :private?
211+
assert_same_rsa rsa1024, key
212+
213+
pem = <<~EOF
214+
-----BEGIN RSA PRIVATE KEY-----
215+
MIICXgIBAAKBgQDLwsSw1ECnPtT+PkOgHhcGA71nwC2/nL85VBGnRqDxOqjVh7Cx
216+
aKPERYHsk4BPCkE3brtThPWc9kjHEQQ7uf9Y1rbCz0layNqHyywQEVLFmp1cpIt/
217+
Q3geLv8ZD9pihowKJDyMDiN6ArYUmZczvW4976MU3+l54E6lF/JfFEU5hwIDAQAB
218+
AoGBAKSl/MQarye1yOysqX6P8fDFQt68VvtXkNmlSiKOGuzyho0M+UVSFcs6k1L0
219+
maDE25AMZUiGzuWHyaU55d7RXDgeskDMakD1v6ZejYtxJkSXbETOTLDwUWTn618T
220+
gnb17tU1jktUtU67xK/08i/XodlgnQhs6VoHTuCh3Hu77O6RAkEA7+gxqBuZR572
221+
74/akiW/SuXm0SXPEviyO1MuSRwtI87B02D0qgV8D1UHRm4AhMnJ8MCs1809kMQE
222+
JiQUCrp9mQJBANlt2ngBO14us6NnhuAseFDTBzCHXwUUu1YKHpMMmxpnGqaldGgX
223+
sOZB3lgJsT9VlGf3YGYdkLTNVbogQKlKpB8CQQDiSwkb4vyQfDe8/NpU5Not0fII
224+
8jsDUCb+opWUTMmfbxWRR3FBNu8wnym/m19N4fFj8LqYzHX4KY0oVPu6qvJxAkEA
225+
wa5snNekFcqONLIE4G5cosrIrb74sqL8GbGb+KuTAprzj5z1K8Bm0UW9lTjVDjDi
226+
qRYgZfZSL+x1P/54+xTFSwJAY1FxA/N3QPCXCjPh5YqFxAMQs2VVYTfg+t0MEcJD
227+
dPMQD5JX6g5HKnHFg2mZtoXQrWmJSn7p8GJK8yNTopEErA==
228+
-----END RSA PRIVATE KEY-----
229+
EOF
230+
key = OpenSSL::PKey::RSA.new(pem)
231+
assert_same_rsa rsa1024, key
232+
233+
assert_equal asn1.to_der, rsa1024.to_der
234+
assert_equal pem, rsa1024.export
235+
236+
# Unknown PEM prepended
237+
cert = issue_cert(OpenSSL::X509::Name.new([["CN", "nobody"]]), rsa1024, 1, [], nil, nil)
238+
str = cert.to_text + cert.to_pem + rsa1024.to_pem
239+
key = OpenSSL::PKey::RSA.new(str)
240+
assert_same_rsa rsa1024, key
241+
end
242+
192243
def test_RSAPrivateKey_encrypted
193244
rsa1024 = Fixtures.pkey("rsa1024")
194245
# key = abcdef

0 commit comments

Comments
 (0)