@@ -191,7 +191,7 @@ def test_subject_alt_name_sign_to_pem
191191
192192 csr . sign rsa_key , OpenSSL ::Digest ::SHA256 . new
193193
194- puts csr . to_text if $VERBOSE
194+ puts csr . to_text if $DEBUG
195195
196196 csr = OpenSSL ::X509 ::Request . new pem = csr . to_pem
197197 assert_equal 2 , csr . attributes . length
@@ -236,6 +236,41 @@ def test_subject_alt_name_sequence
236236 }
237237 end
238238
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+
239274 def subject_alt_name ( domains )
240275 ef = OpenSSL ::X509 ::ExtensionFactory . new
241276 ef . create_extension ( "subjectAltName" , domains . split ( ',' ) . map { |d | "DNS: #{ d } " } . join ( ',' ) )
0 commit comments