@@ -10,8 +10,8 @@ def test_new
10
10
assert_equal empty_name , cert . subject
11
11
bn = OpenSSL ::BN . new ( '0' ) unless defined? JRUBY_VERSION
12
12
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
15
15
assert_raise ( OpenSSL ::X509 ::CertificateError ) { cert . public_key }
16
16
end
17
17
@@ -74,28 +74,42 @@ def test_cert_extensions # JRUBY-3468
74
74
end
75
75
76
76
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
79
89
cert = OpenSSL ::X509 ::Certificate . new
80
90
cert . version = 2
81
91
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 )
83
93
cert . subject = name
84
94
cert . issuer = name
85
95
cert . not_before = Time . now
86
96
cert . not_after = Time . now + ( 365 *24 *60 *60 )
87
- cert . public_key = rsa2048 . public_key
97
+ cert . public_key = rsa . public_key
88
98
89
99
ef = OpenSSL ::X509 ::ExtensionFactory . new ( nil , cert )
90
100
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" )
94
109
cert . add_extension ( aki )
110
+ cert . sign ( rsa , OpenSSL ::Digest ::SHA1 . new )
95
111
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
99
113
end
100
114
101
115
def test_resolve_extensions
0 commit comments