@@ -14,9 +14,7 @@ def test_no_private_exp
14
14
end if !openssl? ( 3 , 0 , 0 ) # Impossible state in OpenSSL 3.0
15
15
16
16
def test_private
17
- # Generated by key size and public exponent
18
- key = OpenSSL ::PKey ::RSA . new ( 512 , 3 )
19
- assert ( key . private? )
17
+ key = Fixtures . pkey ( "rsa2048" )
20
18
21
19
# Generated by DER
22
20
key2 = OpenSSL ::PKey ::RSA . new ( key . to_der )
@@ -46,63 +44,74 @@ def test_private
46
44
end
47
45
48
46
def test_new
49
- key = OpenSSL ::PKey ::RSA . new ( 512 )
50
- assert_equal 512 , key . n . num_bits
47
+ key = OpenSSL ::PKey ::RSA . new ( 2048 )
48
+ assert_equal 2048 , key . n . num_bits
51
49
assert_equal 65537 , key . e
52
50
assert_not_nil key . d
51
+ assert ( key . private? )
52
+ end
53
+
54
+ def test_new_public_exponent
55
+ # At least 2024-bits RSA key are required in FIPS.
56
+ omit_on_fips
53
57
54
58
# Specify public exponent
55
- key2 = OpenSSL ::PKey ::RSA . new ( 512 , 3 )
56
- assert_equal 512 , key2 . n . num_bits
57
- assert_equal 3 , key2 . e
58
- assert_not_nil key2 . d
59
+ key = OpenSSL ::PKey ::RSA . new ( 512 , 3 )
60
+ assert_equal 512 , key . n . num_bits
61
+ assert_equal 3 , key . e
59
62
end
60
63
61
64
def test_s_generate
62
- key1 = OpenSSL ::PKey ::RSA . generate ( 512 )
63
- assert_equal 512 , key1 . n . num_bits
65
+ key1 = OpenSSL ::PKey ::RSA . generate ( 2048 )
66
+ assert_equal 2048 , key1 . n . num_bits
64
67
assert_equal 65537 , key1 . e
68
+ end
69
+
70
+ def test_s_generate_public_exponent
71
+ # At least 2024-bits RSA key are required in FIPS.
72
+ omit_on_fips
65
73
66
74
# Specify public exponent
67
- key2 = OpenSSL ::PKey ::RSA . generate ( 512 , 3 )
68
- assert_equal 512 , key2 . n . num_bits
69
- assert_equal 3 , key2 . e
70
- assert_not_nil key2 . d
75
+ key = OpenSSL ::PKey ::RSA . generate ( 512 , 3 )
76
+ assert_equal 512 , key . n . num_bits
77
+ assert_equal 3 , key . e
71
78
end
72
79
73
80
def test_new_break
74
- assert_nil ( OpenSSL ::PKey ::RSA . new ( 1024 ) { break } )
81
+ assert_nil ( OpenSSL ::PKey ::RSA . new ( 2048 ) { break } )
75
82
assert_raise ( RuntimeError ) do
76
- OpenSSL ::PKey ::RSA . new ( 1024 ) { raise }
83
+ OpenSSL ::PKey ::RSA . new ( 2048 ) { raise }
77
84
end
78
85
end
79
86
80
87
def test_sign_verify
81
- rsa1024 = Fixtures . pkey ( "rsa1024 " )
88
+ rsa = Fixtures . pkey ( "rsa2048 " )
82
89
data = "Sign me!"
83
- signature = rsa1024 . sign ( "SHA256" , data )
84
- assert_equal true , rsa1024 . verify ( "SHA256" , signature , data )
90
+ signature = rsa . sign ( "SHA256" , data )
91
+ assert_equal true , rsa . verify ( "SHA256" , signature , data )
85
92
86
93
signature0 = ( <<~'end;' ) . unpack1 ( "m" )
87
- oLCgbprPvfhM4pjFQiDTFeWI9Sk+Og7Nh9TmIZ/xSxf2CGXQrptlwo7NQ28+
88
- WA6YQo8jPH4hSuyWIM4Gz4qRYiYRkl5TDMUYob94zm8Si1HxEiS9354tzvqS
89
- zS8MLW2BtNPuTubMxTItHGTnOzo9sUg0LAHVFt8kHG2NfKAw/gQ=
94
+ ooy49i8aeFtkDYUU0RPDsEugGiNw4lZxpbQPnIwtdftEkka945IqKZ/MY3YSw7wKsvBZeaTy8GqL
95
+ lSWLThsRFDV+UUS9zUBbQ9ygNIT8OjdV+tNL63ZpKGprczSnw4F05MQIpajNRud/8jiI9rf+Wysi
96
+ WwXecjMl2FlXlLJHY4PFQZU5TiametB4VCQRMcjLo1uf26u/yRpiGaYyqn5vxs0SqNtUDM1UL6x4
97
+ NHCAdqLjuFRQPjYp1vGLD3eSl4061pS8x1NVap3YGbYfGUyzZO4VfwFwf1jPdhp/OX/uZw4dGB2H
98
+ gSK+q1JiDFwEE6yym5tdKovL1g1NhFYHF6gkZg==
90
99
end;
91
- assert_equal true , rsa1024 . verify ( "SHA256" , signature0 , data )
100
+ assert_equal true , rsa . verify ( "SHA256" , signature0 , data )
92
101
signature1 = signature0 . succ
93
- assert_equal false , rsa1024 . verify ( "SHA256" , signature1 , data )
102
+ assert_equal false , rsa . verify ( "SHA256" , signature1 , data )
94
103
end
95
104
96
105
def test_sign_verify_options
97
- key = Fixtures . pkey ( "rsa1024 " )
106
+ key = Fixtures . pkey ( "rsa2048 " )
98
107
data = "Sign me!"
99
108
pssopts = {
100
109
"rsa_padding_mode" => "pss" ,
101
110
"rsa_pss_saltlen" => 20 ,
102
111
"rsa_mgf1_md" => "SHA1"
103
112
}
104
113
sig_pss = key . sign ( "SHA256" , data , pssopts )
105
- assert_equal 128 , sig_pss . bytesize
114
+ assert_equal 256 , sig_pss . bytesize
106
115
assert_equal true , key . verify ( "SHA256" , sig_pss , data , pssopts )
107
116
assert_equal true , key . verify_pss ( "SHA256" , sig_pss , data ,
108
117
salt_length : 20 , mgf1_hash : "SHA1" )
@@ -175,12 +184,12 @@ def test_verify_empty_rsa
175
184
end
176
185
177
186
def test_sign_verify_pss
178
- key = Fixtures . pkey ( "rsa1024 " )
187
+ key = Fixtures . pkey ( "rsa2048 " )
179
188
data = "Sign me!"
180
189
invalid_data = "Sign me?"
181
190
182
191
signature = key . sign_pss ( "SHA256" , data , salt_length : 20 , mgf1_hash : "SHA1" )
183
- assert_equal 128 , signature . bytesize
192
+ assert_equal 256 , signature . bytesize
184
193
assert_equal true ,
185
194
key . verify_pss ( "SHA256" , signature , data , salt_length : 20 , mgf1_hash : "SHA1" )
186
195
assert_equal true ,
@@ -196,14 +205,26 @@ def test_sign_verify_pss
196
205
assert_equal false ,
197
206
key . verify_pss ( "SHA256" , signature , data , salt_length : 20 , mgf1_hash : "SHA1" )
198
207
199
- signature = key . sign_pss ( "SHA256" , data , salt_length : :max , mgf1_hash : "SHA1" )
200
- assert_equal true ,
201
- key . verify_pss ( "SHA256" , signature , data , salt_length : 94 , mgf1_hash : "SHA1" )
202
- assert_equal true ,
203
- key . verify_pss ( "SHA256" , signature , data , salt_length : :auto , mgf1_hash : "SHA1" )
208
+ # The sign_pss with `salt_length: :max` raises the "invalid salt length"
209
+ # error in FIPS. We need to skip the tests in FIPS.
210
+ # According to FIPS 186-5 section 5.4, the salt length shall be between zero
211
+ # and the output block length of the digest function (inclusive).
212
+ #
213
+ # FIPS 186-5 section 5.4 PKCS #1
214
+ # https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
215
+ unless OpenSSL . fips_mode
216
+ signature = key . sign_pss ( "SHA256" , data , salt_length : :max , mgf1_hash : "SHA1" )
217
+ # Should verify on the following salt_length (sLen).
218
+ # sLen <= emLen (octat) - 2 - hLen (octet) = 2048 / 8 - 2 - 256 / 8 = 222
219
+ # https://datatracker.ietf.org/doc/html/rfc8017#section-9.1.1
220
+ assert_equal true ,
221
+ key . verify_pss ( "SHA256" , signature , data , salt_length : 222 , mgf1_hash : "SHA1" )
222
+ assert_equal true ,
223
+ key . verify_pss ( "SHA256" , signature , data , salt_length : :auto , mgf1_hash : "SHA1" )
224
+ end
204
225
205
226
assert_raise ( OpenSSL ::PKey ::RSAError ) {
206
- key . sign_pss ( "SHA256" , data , salt_length : 95 , mgf1_hash : "SHA1" )
227
+ key . sign_pss ( "SHA256" , data , salt_length : 223 , mgf1_hash : "SHA1" )
207
228
}
208
229
end
209
230
@@ -213,8 +234,13 @@ def test_encrypt_decrypt
213
234
214
235
# Defaults to PKCS #1 v1.5
215
236
raw = "data"
216
- enc = rsapub . encrypt ( raw )
217
- assert_equal raw , rsapriv . decrypt ( enc )
237
+ # According to the NIST SP 800-131A Rev. 2 section 6, PKCS#1 v1.5 padding is
238
+ # not permitted for key agreement and key transport using RSA in FIPS.
239
+ # https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf
240
+ unless OpenSSL . fips_mode
241
+ enc = rsapub . encrypt ( raw )
242
+ assert_equal raw , rsapriv . decrypt ( enc )
243
+ end
218
244
219
245
# Invalid options
220
246
assert_raise ( OpenSSL ::PKey ::PKeyError ) {
@@ -227,11 +253,13 @@ def test_encrypt_decrypt_legacy
227
253
rsapub = OpenSSL ::PKey . read ( rsapriv . public_to_der )
228
254
229
255
# Defaults to PKCS #1 v1.5
230
- raw = "data"
231
- enc_legacy = rsapub . public_encrypt ( raw )
232
- assert_equal raw , rsapriv . decrypt ( enc_legacy )
233
- enc_new = rsapub . encrypt ( raw )
234
- assert_equal raw , rsapriv . private_decrypt ( enc_new )
256
+ unless OpenSSL . fips_mode
257
+ raw = "data"
258
+ enc_legacy = rsapub . public_encrypt ( raw )
259
+ assert_equal raw , rsapriv . decrypt ( enc_legacy )
260
+ enc_new = rsapub . encrypt ( raw )
261
+ assert_equal raw , rsapriv . private_decrypt ( enc_new )
262
+ end
235
263
236
264
# OAEP with default parameters
237
265
raw = "data"
@@ -292,53 +320,67 @@ def test_to_der
292
320
end
293
321
294
322
def test_RSAPrivateKey
295
- rsa1024 = Fixtures . pkey ( "rsa1024 " )
323
+ rsa = Fixtures . pkey ( "rsa2048 " )
296
324
asn1 = OpenSSL ::ASN1 ::Sequence ( [
297
325
OpenSSL ::ASN1 ::Integer ( 0 ) ,
298
- OpenSSL ::ASN1 ::Integer ( rsa1024 . n ) ,
299
- OpenSSL ::ASN1 ::Integer ( rsa1024 . e ) ,
300
- OpenSSL ::ASN1 ::Integer ( rsa1024 . d ) ,
301
- OpenSSL ::ASN1 ::Integer ( rsa1024 . p ) ,
302
- OpenSSL ::ASN1 ::Integer ( rsa1024 . q ) ,
303
- OpenSSL ::ASN1 ::Integer ( rsa1024 . dmp1 ) ,
304
- OpenSSL ::ASN1 ::Integer ( rsa1024 . dmq1 ) ,
305
- OpenSSL ::ASN1 ::Integer ( rsa1024 . iqmp )
326
+ OpenSSL ::ASN1 ::Integer ( rsa . n ) ,
327
+ OpenSSL ::ASN1 ::Integer ( rsa . e ) ,
328
+ OpenSSL ::ASN1 ::Integer ( rsa . d ) ,
329
+ OpenSSL ::ASN1 ::Integer ( rsa . p ) ,
330
+ OpenSSL ::ASN1 ::Integer ( rsa . q ) ,
331
+ OpenSSL ::ASN1 ::Integer ( rsa . dmp1 ) ,
332
+ OpenSSL ::ASN1 ::Integer ( rsa . dmq1 ) ,
333
+ OpenSSL ::ASN1 ::Integer ( rsa . iqmp )
306
334
] )
307
335
key = OpenSSL ::PKey ::RSA . new ( asn1 . to_der )
308
336
assert_predicate key , :private?
309
- assert_same_rsa rsa1024 , key
337
+ assert_same_rsa rsa , key
310
338
311
339
pem = <<~EOF
312
340
-----BEGIN RSA PRIVATE KEY-----
313
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
326
366
-----END RSA PRIVATE KEY-----
327
367
EOF
328
368
key = OpenSSL ::PKey ::RSA . new ( pem )
329
- assert_same_rsa rsa1024 , key
369
+ assert_same_rsa rsa , key
330
370
331
- assert_equal asn1 . to_der , rsa1024 . to_der
332
- assert_equal pem , rsa1024 . export
371
+ assert_equal asn1 . to_der , rsa . to_der
372
+ assert_equal pem , rsa . export
333
373
334
374
# Unknown PEM prepended
335
- cert = issue_cert ( OpenSSL ::X509 ::Name . new ( [ [ "CN" , "nobody" ] ] ) , rsa1024 , 1 , [ ] , nil , nil )
336
- str = cert . to_text + cert . to_pem + rsa1024 . to_pem
375
+ cert = issue_cert ( OpenSSL ::X509 ::Name . new ( [ [ "CN" , "nobody" ] ] ) , rsa , 1 , [ ] , nil , nil )
376
+ str = cert . to_text + cert . to_pem + rsa . to_pem
337
377
key = OpenSSL ::PKey ::RSA . new ( str )
338
- assert_same_rsa rsa1024 , key
378
+ assert_same_rsa rsa , key
339
379
end
340
380
341
381
def test_RSAPrivateKey_encrypted
382
+ omit_on_fips
383
+
342
384
rsa1024 = Fixtures . pkey ( "rsa1024" )
343
385
# key = abcdef
344
386
pem = <<~EOF
@@ -438,6 +480,8 @@ def test_PUBKEY
438
480
end
439
481
440
482
def test_pem_passwd
483
+ omit_on_fips
484
+
441
485
key = Fixtures . pkey ( "rsa1024" )
442
486
pem3c = key . to_pem ( "aes-128-cbc" , "key" )
443
487
assert_match ( /ENCRYPTED/ ) , pem3c
@@ -484,41 +528,54 @@ def test_private_encoding
484
528
end
485
529
486
530
def test_private_encoding_encrypted
487
- rsa1024 = Fixtures . pkey ( "rsa1024 " )
488
- encoded = rsa1024 . private_to_der ( "aes-128-cbc" , "abcdef" )
531
+ rsa = Fixtures . pkey ( "rsa2048 " )
532
+ encoded = rsa . private_to_der ( "aes-128-cbc" , "abcdef" )
489
533
asn1 = OpenSSL ::ASN1 . decode ( encoded ) # PKCS #8 EncryptedPrivateKeyInfo
490
534
assert_kind_of OpenSSL ::ASN1 ::Sequence , asn1
491
535
assert_equal 2 , asn1 . value . size
492
- assert_not_equal rsa1024 . private_to_der , encoded
493
- assert_same_rsa rsa1024 , OpenSSL ::PKey . read ( encoded , "abcdef" )
494
- assert_same_rsa rsa1024 , OpenSSL ::PKey . read ( encoded ) { "abcdef" }
536
+ assert_not_equal rsa . private_to_der , encoded
537
+ assert_same_rsa rsa , OpenSSL ::PKey . read ( encoded , "abcdef" )
538
+ assert_same_rsa rsa , OpenSSL ::PKey . read ( encoded ) { "abcdef" }
495
539
assert_raise ( OpenSSL ::PKey ::PKeyError ) { OpenSSL ::PKey . read ( encoded , "abcxyz" ) }
496
540
497
- encoded = rsa1024 . private_to_pem ( "aes-128-cbc" , "abcdef" )
541
+ encoded = rsa . private_to_pem ( "aes-128-cbc" , "abcdef" )
498
542
assert_match ( /BEGIN ENCRYPTED PRIVATE KEY/ ) , encoded . lines [ 0 ]
499
- assert_same_rsa rsa1024 , OpenSSL ::PKey . read ( encoded , "abcdef" )
543
+ assert_same_rsa rsa , OpenSSL ::PKey . read ( encoded , "abcdef" )
500
544
501
- # certtool --load-privkey=test/fixtures/pkey/rsa1024 .pem --to-p8 --password=abcdef
545
+ # certtool --load-privkey=test/openssl/ fixtures/pkey/rsa2048 .pem --to-p8 --password=abcdef
502
546
pem = <<~EOF
503
547
-----BEGIN ENCRYPTED PRIVATE KEY-----
504
- MIICojAcBgoqhkiG9w0BDAEDMA4ECLqajUdSNfzwAgIEkQSCAoCDWhxr1HUrKLXA
505
- FsFGGQfPT0aKH4gZipaSXXQRl0KwifHwHoDtfo/mAkJVZMnUVOm1AQ4LTFS3EdTy
506
- JUwICGEQHb7QAiokIRoi0K2yHhOxVO8qgbnWuisWpiT6Ru1jCqTs/wcqlqF7z2jM
507
- oXDk/vuekKst1DDXDcHrzhDkwhCQWj6jt1r2Vwaryy0FyeqsWAgBDiK2LsnCgkGD
508
- 21uhNZ/iWMG6tvY9hB8MDdiBJ41YdSG/AKLulAxQ1ibJz0Tasu66TmwFvWhBlME+
509
- QbqfgmkgWg5buu53SvDfCA47zXihclbtdfW+U3CJ9OJkx0535TVdZbuC1QgKXvG7
510
- 4iKGFRMWYJqZvZM3GL4xbC75AxjXZsdCfV81VjZxjeU6ung/NRzCuCUcmBOQzo1D
511
- Vv6COwAa6ttQWM0Ti8oIQHdu5Qi+nuOEHDLxCxD962M37H99sEO5cESjmrGVxhEo
512
- 373L4+11geGSCajdp0yiAGnXQfwaKta8cL693bRObN+b1Y+vqtDKH26N9a4R3qgg
513
- 2XwgQ5GH5CODoXZpi0wxncXO+3YuuhGeArtzKSXLNxHzIMlY7wZX+0e9UU03zfV/
514
- aOe4/q5DpkNxgHePt0oEpamSKY5W3jzVi1dlFWsRjud1p/Grt2zjSWTYClBlJqG1
515
- A/3IeDZCu+acaePJjFyv5dFffIj2l4bAYB+LFrZlSu3F/EimO/dCDWJ9JGlMK0aF
516
- l9brh7786Mo+YfyklaqMMEHBbbR2Es7PR6Gt7lrcIXmzy9XSsxT6IiD1rG9KKR3i
517
- CQxTup6JAx9w1q+adL+Ypikoy3gGD/ccUY6TtPoCmkQwSCS+JqQnFlCiThDJbu+V
518
- eqqUNkZq
548
+ MIIFOTBjBgkqhkiG9w0BBQ0wVjA1BgkqhkiG9w0BBQwwKAQSsTIsinrhNMr4owUz
549
+ cwYGgB0lAgMJJ8ACARAwCgYIKoZIhvcNAgkwHQYJYIZIAWUDBAECBBDtDYqmQOLV
550
+ Nh0T0DslWgovBIIE0ESbJey2Pjf9brTp9/41CPnI9Ev78CGSv8Ihyuynu6G7oj7N
551
+ G7jUB1pVMQ7ivebF5DmM0qHAix6fDqJetB3WCnRQpMLyIdq5VrnKwFNhwGYduWA5
552
+ IyaAc4DHj02e6YLyBTIKpu79OSFxLrnLCRaTbvZIUQaGhyd6pB7iAhqz5YBC0rpa
553
+ iMK5TRlNGPYG9n2eGFOhvUsbJ4T8VDzjpVWw0VNRaukXtg4xiR6o1f0qSXqAb5d9
554
+ REq5DfaQfoOKTV9j7KJHDRrBQG81vkU4K+xILrCBfbcYb82aCoinwSep9LC30HaH
555
+ LZ0hYQOuD/k/UbgjToS2wyMnkz75MN5ZNhDMZl/mACQdsMMtIxG37Mpo1Ca33uZi
556
+ 71TCOEKIblZS11L1YhIni9Af8pOuHJBWwezP2zN2nPwV6OhgL7Jlax7ICQOPC6L/
557
+ yRGgC5eT4lDDAuTy0IdUhr0r5XrFzZR0/5Vgsq9cGfk9QkXOoETRhQVkEfUDdCs6
558
+ 6CK+SwUR9qh5824ShODFG0SQpsqBPIVtkGrypBSUJtICmGMOAsclB7RDN7/opJwp
559
+ qv/iRJ5dhWrhRgQ/DfYifvO5On7RgC2hm48gF3Pt6XCA857ryyYxLYeMY42tAUqp
560
+ Hmc9HL7bMYF/jl3cJ32+gLvI3PBVvrvyeAhRo6z7MFVe9I04OywV6BHUx1Us6ybF
561
+ qkYnSpcJZdu7HyvzXm7XWLFmt7K5BlAgnFsa/8+cI1BGPgQRc1j0SWepXsSwFZX6
562
+ JkNQ0dewq4uRJXbGyQgfh5I5ETpqDhSt2JfBwAoze6cx3DPC711PUamxyWMiejs+
563
+ mYdia4p62NxaUvyXWmCGIEOzajRwywEhf9OLAmfqTN41TIrEL4BUxqtzDyw8Nl8T
564
+ KB7nJEC366jFASfumNQkXXyH5yBIF+XwwSKUOObRZVn2rUzFToo51hHu9efxHoXa
565
+ jZlpfglWijkmOuwoIGlGHOq8gUn76oq9WbV+YO+fWm/mf4S3ECzmYzxb6a1uCTy/
566
+ Itkm2qOe3yTM1t+oCqZ0/MeTZ84ALQaWv5reQfjronPZ1jeNtxrYz28tJ4KwBn0U
567
+ bJReXbOLsHAymipncxlmaevbx4GPTduu/lbpxefoN95w+SpEdyTmVWrfaCTgAbad
568
+ EzcRl60my3xOMQ7CaUbRgGiwohqHDvuXzeqoZ96u6CwfAoEfy4jETmKLRH6uTtj7
569
+ 4jdTyoqyizjpvaM8LPspBS+oqFwLxBjpseQuScrZO1BjPxrImLy2/VRqwJ+CF4FB
570
+ iijEgDgDc1EMIGe5YmOAV+i22n9RqX+2IvkYp7CWXrB9/lmirLFukd7hT8DLPUGq
571
+ AvSZwTPbDPoZKG3DAebC3DbiC7A3x0KZp24doNRLamZ/MyKHo2Rzl0UhkzDU0ly2
572
+ eAnyNYsOAQck+C6L+ieD95Gksm9YJWurwttm5JragbIJwMCrsBQd4bXDkKdRhxS2
573
+ JpS0dT/aoDmgTzoG07x4cZk0rjBkfX1ta0j0b1lz7/PZXl9AbRvFdq5sJpmv4Ryz
574
+ S+OERqo4IEfJJq2WJ92WR+HLGV3Gvsdb7znZTEF1tp4pWOLAt83Pry282UJxO7Pe
575
+ ySf/868TEmXams06GYvH+7cMiIT2m9Dc+EFgNaPmm0uMmJ+ZjqHKSOLzrL7C
519
576
-----END ENCRYPTED PRIVATE KEY-----
520
577
EOF
521
- assert_same_rsa rsa1024 , OpenSSL ::PKey . read ( pem , "abcdef" )
578
+ assert_same_rsa rsa , OpenSSL ::PKey . read ( pem , "abcdef" )
522
579
end
523
580
524
581
def test_dup
0 commit comments