@@ -31,15 +31,18 @@ def test_private
31
31
assert ( !key4 . private? )
32
32
rsa1024 = Fixtures . pkey ( "rsa1024" )
33
33
34
- # Generated by RSA#set_key
35
- key5 = OpenSSL ::PKey ::RSA . new
36
- key5 . set_key ( rsa1024 . n , rsa1024 . e , rsa1024 . d )
37
- assert ( key5 . private? )
38
-
39
- # Generated by RSA#set_key, without d
40
- key6 = OpenSSL ::PKey ::RSA . new
41
- key6 . set_key ( rsa1024 . n , rsa1024 . e , nil )
42
- assert ( !key6 . private? )
34
+ if !openssl? ( 3 , 0 , 0 )
35
+ key = OpenSSL ::PKey ::RSA . new
36
+ # Generated by RSA#set_key
37
+ key5 = OpenSSL ::PKey ::RSA . new
38
+ key5 . set_key ( rsa1024 . n , rsa1024 . e , rsa1024 . d )
39
+ assert ( key5 . private? )
40
+
41
+ # Generated by RSA#set_key, without d
42
+ key6 = OpenSSL ::PKey ::RSA . new
43
+ key6 . set_key ( rsa1024 . n , rsa1024 . e , nil )
44
+ assert ( !key6 . private? )
45
+ end
43
46
end
44
47
45
48
def test_new
@@ -235,36 +238,52 @@ def test_encrypt_decrypt_legacy
235
238
236
239
def test_export
237
240
rsa1024 = Fixtures . pkey ( "rsa1024" )
238
- key = OpenSSL ::PKey ::RSA . new
239
241
240
- # key has only n, e and d
241
- key . set_key ( rsa1024 . n , rsa1024 . e , rsa1024 . d )
242
- assert_equal rsa1024 . public_key . export , key . export
242
+ pub = OpenSSL ::PKey . read ( rsa1024 . public_to_der )
243
+ assert_not_equal rsa1024 . export , pub . export
244
+ assert_equal rsa1024 . public_to_pem , pub . export
245
+
246
+ # PKey is immutable in OpenSSL >= 3.0
247
+ if !openssl? ( 3 , 0 , 0 )
248
+ key = OpenSSL ::PKey ::RSA . new
243
249
244
- # key has only n, e, d, p and q
245
- key . set_factors ( rsa1024 . p , rsa1024 . q )
246
- assert_equal rsa1024 . public_key . export , key . export
250
+ # key has only n, e and d
251
+ key . set_key ( rsa1024 . n , rsa1024 . e , rsa1024 . d )
252
+ assert_equal rsa1024 . public_key . export , key . export
247
253
248
- # key has n, e, d, p, q, dmp1, dmq1 and iqmp
249
- key . set_crt_params ( rsa1024 . dmp1 , rsa1024 . dmq1 , rsa1024 . iqmp )
250
- assert_equal rsa1024 . export , key . export
254
+ # key has only n, e, d, p and q
255
+ key . set_factors ( rsa1024 . p , rsa1024 . q )
256
+ assert_equal rsa1024 . public_key . export , key . export
257
+
258
+ # key has n, e, d, p, q, dmp1, dmq1 and iqmp
259
+ key . set_crt_params ( rsa1024 . dmp1 , rsa1024 . dmq1 , rsa1024 . iqmp )
260
+ assert_equal rsa1024 . export , key . export
261
+ end
251
262
end
252
263
253
264
def test_to_der
254
265
rsa1024 = Fixtures . pkey ( "rsa1024" )
255
- key = OpenSSL ::PKey ::RSA . new
256
266
257
- # key has only n, e and d
258
- key . set_key ( rsa1024 . n , rsa1024 . e , rsa1024 . d )
259
- assert_equal rsa1024 . public_key . to_der , key . to_der
267
+ pub = OpenSSL :: PKey . read ( rsa1024 . public_to_der )
268
+ assert_not_equal rsa1024 . to_der , pub . to_der
269
+ assert_equal rsa1024 . public_to_der , pub . to_der
260
270
261
- # key has only n, e, d, p and q
262
- key . set_factors ( rsa1024 . p , rsa1024 . q )
263
- assert_equal rsa1024 . public_key . to_der , key . to_der
271
+ # PKey is immutable in OpenSSL >= 3.0
272
+ if ! openssl? ( 3 , 0 , 0 )
273
+ key = OpenSSL :: PKey :: RSA . new
264
274
265
- # key has n, e, d, p, q, dmp1, dmq1 and iqmp
266
- key . set_crt_params ( rsa1024 . dmp1 , rsa1024 . dmq1 , rsa1024 . iqmp )
267
- assert_equal rsa1024 . to_der , key . to_der
275
+ # key has only n, e and d
276
+ key . set_key ( rsa1024 . n , rsa1024 . e , rsa1024 . d )
277
+ assert_equal rsa1024 . public_key . to_der , key . to_der
278
+
279
+ # key has only n, e, d, p and q
280
+ key . set_factors ( rsa1024 . p , rsa1024 . q )
281
+ assert_equal rsa1024 . public_key . to_der , key . to_der
282
+
283
+ # key has n, e, d, p, q, dmp1, dmq1 and iqmp
284
+ key . set_crt_params ( rsa1024 . dmp1 , rsa1024 . dmq1 , rsa1024 . iqmp )
285
+ assert_equal rsa1024 . to_der , key . to_der
286
+ end
268
287
end
269
288
270
289
def test_RSAPrivateKey
@@ -495,8 +514,12 @@ def test_dup
495
514
key = Fixtures . pkey ( "rsa1024" )
496
515
key2 = key . dup
497
516
assert_equal key . params , key2 . params
498
- key2 . set_key ( key2 . n , 3 , key2 . d )
499
- assert_not_equal key . params , key2 . params
517
+
518
+ # PKey is immutable in OpenSSL >= 3.0
519
+ if !openssl? ( 3 , 0 , 0 )
520
+ key2 . set_key ( key2 . n , 3 , key2 . d )
521
+ assert_not_equal key . params , key2 . params
522
+ end
500
523
end
501
524
502
525
def test_marshal
0 commit comments