@@ -191,7 +191,7 @@ def test_subject_alt_name_sign_to_pem
191
191
192
192
csr . sign rsa_key , OpenSSL ::Digest ::SHA256 . new
193
193
194
- puts csr . to_text if $VERBOSE
194
+ puts csr . to_text if $DEBUG
195
195
196
196
csr = OpenSSL ::X509 ::Request . new pem = csr . to_pem
197
197
assert_equal 2 , csr . attributes . length
@@ -236,6 +236,41 @@ def test_subject_alt_name_sequence
236
236
}
237
237
end
238
238
239
+ def test_authority_key_identifier
240
+ cn = [ %w[ CN localhost ] ]
241
+ # key = OpenSSL::PKey::RSA.new TEST_KEY_RSA2048
242
+ key = Fixtures . pkey ( "dsa512" ) # DSA
243
+ cert = OpenSSL ::X509 ::Certificate . new
244
+ cert . version = 2
245
+ cert . serial = 1
246
+ name = OpenSSL ::X509 ::Name . new ( cn )
247
+ cert . subject = name
248
+ cert . issuer = name # self-signed
249
+ cert . not_before = Time . now
250
+ cert . not_after = Time . now + ( 365 *24 *60 *60 )
251
+ cert . public_key = key . public_key
252
+
253
+ ef = OpenSSL ::X509 ::ExtensionFactory . new ( nil , cert )
254
+ ef . issuer_certificate = cert
255
+ cert . extensions = [
256
+ ef . create_extension ( "basicConstraints" , "CA:FALSE" ) ,
257
+ ef . create_extension ( "subjectKeyIdentifier" , "hash" ) ,
258
+ #ef.create_extension("extendedKeyUsage", "serverAuth"),
259
+ ef . create_extension ( "nsComment" , __method__ . to_s ) ,
260
+ ]
261
+
262
+ ext = ef . create_extension ( "authorityKeyIdentifier" , "keyid" )
263
+ cert . add_extension ( ext )
264
+
265
+ assert_equal 4 , cert . extensions . size
266
+
267
+ ext = cert . extensions . last
268
+ assert_equal keyid = "keyid:91:0D:0C:A9:43:73:DF:8C:A9:E3:C2:0A:05:E3:CF:BE:A7:38:8D:DD\n " , ext . value
269
+ assert !ext . critical?
270
+ assert_equal [ "authorityKeyIdentifier" , keyid , false ] , ext . to_a
271
+ # cert.sign(key, OpenSSL::Digest::SHA1.new)
272
+ end
273
+
239
274
def subject_alt_name ( domains )
240
275
ef = OpenSSL ::X509 ::ExtensionFactory . new
241
276
ef . create_extension ( "subjectAltName" , domains . split ( ',' ) . map { |d | "DNS: #{ d } " } . join ( ',' ) )
0 commit comments