@@ -88,31 +88,28 @@ def map
8888 end
8989
9090 def to_pkey
91- pkey = OpenSSL ::PKey ::RSA . new
92-
93- if pkey . respond_to? ( :set_key )
94- pkey . set_key ( bn ( n ) , bn ( e ) , bn ( d ) )
95- else
96- pkey . n = bn ( n )
97- pkey . e = bn ( e )
98- pkey . d = bn ( d )
99- end
91+ # PKCS#1 RSAPublicKey
92+ asn1 = OpenSSL ::ASN1 ::Sequence ( [
93+ OpenSSL ::ASN1 ::Integer . new ( bn ( n ) ) ,
94+ OpenSSL ::ASN1 ::Integer . new ( bn ( e ) ) ,
95+ ] )
96+ pkey = OpenSSL ::PKey ::RSA . new ( asn1 . to_der )
10097
10198 if private?
102- if pkey . respond_to? ( :set_factors )
103- pkey . set_factors ( bn ( p ) , bn ( q ) )
104- else
105- pkey . p = bn ( p )
106- pkey . q = bn ( q )
107- end
108-
109- if pkey . respond_to? ( :set_crt_params )
110- pkey . set_crt_params ( bn ( dp ) , bn ( dq ) , bn ( qinv ) )
111- else
112- pkey . dmp1 = bn ( dp )
113- pkey . dmq1 = bn ( dq )
114- pkey . iqmp = bn ( qinv )
115- end
99+ # PKCS#1 RSAPrivateKey
100+ asn1 = OpenSSL :: ASN1 :: Sequence ( [
101+ OpenSSL :: ASN1 :: Integer . new ( 0 ) ,
102+ OpenSSL :: ASN1 :: Integer . new ( bn ( n ) ) ,
103+ OpenSSL :: ASN1 :: Integer . new ( bn ( e ) ) ,
104+ OpenSSL :: ASN1 :: Integer . new ( bn ( d ) ) ,
105+ OpenSSL :: ASN1 :: Integer . new ( bn ( p ) ) ,
106+ OpenSSL :: ASN1 :: Integer . new ( bn ( q ) ) ,
107+ OpenSSL :: ASN1 :: Integer . new ( bn ( dp ) ) ,
108+ OpenSSL :: ASN1 :: Integer . new ( bn ( dq ) ) ,
109+ OpenSSL :: ASN1 :: Integer . new ( bn ( qinv ) ) ,
110+ ] )
111+
112+ pkey = OpenSSL :: PKey :: RSA . new ( asn1 . to_der )
116113 end
117114
118115 pkey
0 commit comments