@@ -10,8 +10,8 @@ def test_new
1010 assert_equal empty_name , cert . subject
1111 bn = OpenSSL ::BN . new ( '0' ) unless defined? JRUBY_VERSION
1212 assert_equal bn || OpenSSL ::BN . new ( 0 ) , cert . serial
13- assert_equal nil , cert . not_before
14- assert_equal nil , cert . not_after
13+ assert_nil cert . not_before
14+ assert_nil cert . not_after
1515 assert_raise ( OpenSSL ::X509 ::CertificateError ) { cert . public_key }
1616 end
1717
@@ -74,28 +74,42 @@ def test_cert_extensions # JRUBY-3468
7474 end
7575
7676 def test_aki_extension_to_text
77- # Cert generation ripped from WEBrick
78- rsa2048 = OpenSSL ::PKey ::RSA . new TEST_KEY_RSA2048
77+ cert = create_self_signed_cert [ %w[ CN localhost ] ] , __method__
78+ keyid = "97:39:9D:C3:FB:CD:BA:8F:54:0C:90:7B:46:3F:EA:D6:43:75:B1:CB"
79+
80+ assert cert . extensions . size > 0
81+ value = cert . extensions . last . value
82+ # assert_equal "keyid:#{keyid}\nDirName:/CN=localhost\nserial:01\n", value
83+ assert value . start_with? ( "keyid:#{ keyid } \n " )
84+ assert value . end_with? ( "\n serial:01\n " )
85+ end
86+
87+ def create_self_signed_cert ( cn , comment ) # cert generation ripped from WEBrick
88+ rsa = OpenSSL ::PKey ::RSA . new TEST_KEY_RSA2048
7989 cert = OpenSSL ::X509 ::Certificate . new
8090 cert . version = 2
8191 cert . serial = 1
82- name = OpenSSL ::X509 ::Name . new ( [ %w[ CN localhost ] ] )
92+ name = ( cn . kind_of? String ) ? OpenSSL ::X509 ::Name . parse ( cn ) : OpenSSL :: X509 :: Name . new ( cn )
8393 cert . subject = name
8494 cert . issuer = name
8595 cert . not_before = Time . now
8696 cert . not_after = Time . now + ( 365 *24 *60 *60 )
87- cert . public_key = rsa2048 . public_key
97+ cert . public_key = rsa . public_key
8898
8999 ef = OpenSSL ::X509 ::ExtensionFactory . new ( nil , cert )
90100 ef . issuer_certificate = cert
91-
92- aki = ef . create_extension ( "authorityKeyIdentifier" ,
93- "keyid:always,issuer:always" )
101+ cert . extensions = [
102+ ef . create_extension ( "basicConstraints" , "CA:FALSE" ) ,
103+ ef . create_extension ( "keyUsage" , "keyEncipherment" ) ,
104+ ef . create_extension ( "subjectKeyIdentifier" , "hash" ) ,
105+ ef . create_extension ( "extendedKeyUsage" , "serverAuth" ) ,
106+ # ef.create_extension("nsComment", comment),
107+ ]
108+ aki = ef . create_extension ( "authorityKeyIdentifier" , "keyid:always,issuer:always" )
94109 cert . add_extension ( aki )
110+ cert . sign ( rsa , OpenSSL ::Digest ::SHA1 . new )
95111
96- assert_equal 1 , cert . extensions . size
97- assert_equal "keyid:97:39:9D:C3:FB:CD:BA:8F:54:0C:90:7B:46:3F:EA:D6:43:75:B1:CB\n \n serial:01\n " ,
98- cert . extensions . first . value
112+ cert
99113 end
100114
101115 def test_resolve_extensions
0 commit comments