Skip to content

Commit 89976db

Browse files
lampadkares
authored andcommitted
Test and use explicit value of ASN1Integer
1 parent 604e3b2 commit 89976db

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/main/java/org/jruby/ext/openssl/X509Extension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ public RubyString value(final ThreadContext context) {
458458
case 2 : // serial
459459
val.append(new byte[] { 's','e','r','i','a','l',':' });
460460
if (obj instanceof ASN1Integer) {
461-
hexBytes( obj.getEncoded(), val);
461+
hexBytes( ((ASN1Integer) obj).getValue().toByteArray(), val);
462462
}
463463
else {
464464
hexBytes( ((ASN1OctetString) obj ).getOctets(), val );

src/test/ruby/x509/test_x509cert.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,31 @@ def test_cert_extensions # JRUBY-3468
7373
end
7474
end
7575

76+
def test_aki_extension_to_text
77+
# Cert generation ripped from WEBrick
78+
rsa2048 = OpenSSL::PKey::RSA.new TEST_KEY_RSA2048
79+
cert = OpenSSL::X509::Certificate.new
80+
cert.version = 2
81+
cert.serial = 1
82+
name = OpenSSL::X509::Name.new([ %w[CN localhost] ])
83+
cert.subject = name
84+
cert.issuer = name
85+
cert.not_before = Time.now
86+
cert.not_after = Time.now + (365*24*60*60)
87+
cert.public_key = rsa2048.public_key
88+
89+
ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
90+
ef.issuer_certificate = cert
91+
92+
aki = ef.create_extension("authorityKeyIdentifier",
93+
"keyid:always,issuer:always")
94+
cert.add_extension(aki)
95+
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\nserial:01\n",
98+
cert.extensions.first.value
99+
end
100+
76101
def test_resolve_extensions
77102
rsa2048 = OpenSSL::PKey::RSA.new TEST_KEY_RSA2048
78103
ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")

0 commit comments

Comments
 (0)