@@ -40,6 +40,51 @@ def test_private
4040 #end
4141 end
4242
43+ def test_dup
44+ key = Fixtures . pkey ( "rsa1024" )
45+ key2 = key . dup
46+ assert_equal key . params , key2 . params
47+
48+ # PKey is immutable in OpenSSL >= 3.0
49+ #if !openssl?(3, 0, 0)
50+ key2 . set_key ( key2 . n , 3 , key2 . d )
51+ assert_not_equal key . params , key2 . params
52+ #end
53+ end
54+
55+ def test_new
56+ key = OpenSSL ::PKey ::RSA . new ( 512 )
57+ assert_equal 512 , key . n . num_bits
58+ assert_equal 65537 , key . e
59+ assert_not_nil key . d
60+
61+ # Specify public exponent
62+ key2 = OpenSSL ::PKey ::RSA . new ( 512 , 3 )
63+ assert_equal 512 , key2 . n . num_bits
64+ assert_equal 3 , key2 . e
65+ assert_not_nil key2 . d
66+ end
67+
68+ def test_s_generate
69+ key1 = OpenSSL ::PKey ::RSA . generate ( 512 )
70+ assert_equal 512 , key1 . n . num_bits
71+ assert_equal 65537 , key1 . e
72+
73+ # Specify public exponent
74+ key2 = OpenSSL ::PKey ::RSA . generate ( 512 , 3 )
75+ assert_equal 512 , key2 . n . num_bits
76+ assert_equal 3 , key2 . e
77+ assert_not_nil key2 . d
78+ end
79+
80+ # TODO: not implemented properly
81+ # def test_new_break
82+ # assert_nil(OpenSSL::PKey::RSA.new(1024) { break })
83+ # assert_raise(RuntimeError) do
84+ # OpenSSL::PKey::RSA.new(1024) { raise }
85+ # end
86+ # end
87+
4388 def test_oid
4489 key = OpenSSL ::PKey ::RSA . new
4590 assert_equal 'rsaEncryption' , key . oid
0 commit comments