Skip to content

Commit 70f6307

Browse files
committed
[compat] implement X.509 extension valut_der
1 parent 29abc42 commit 70f6307

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,6 +796,16 @@ public IRubyObject set_critical(final ThreadContext context, IRubyObject arg) {
796796
return arg;
797797
}
798798

799+
@JRubyMethod
800+
public RubyString value_der(final ThreadContext context) {
801+
try {
802+
return StringHelper.newString(context.runtime, getRealValueEncoded());
803+
}
804+
catch (IOException e) {
805+
throw newExtensionError(context.runtime, e);
806+
}
807+
}
808+
799809
@JRubyMethod
800810
public RubyString to_der() {
801811
try {

src/test/ruby/x509/test_x509ext.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,16 @@ def test_to_der # reproducing #389
107107
assert_equal 'foo', value[1].value
108108
end
109109

110+
def test_value_der
111+
value = OpenSSL::ASN1::Sequence([OpenSSL::ASN1::Boolean(true)])
112+
ext = OpenSSL::X509::Extension.new('basicConstraints', value)
113+
114+
assert_equal value.to_der, ext.value_der
115+
decoded = OpenSSL::ASN1.decode(ext.value_der)
116+
assert_equal OpenSSL::ASN1::Sequence, decoded.class
117+
assert_equal true, decoded.value.first.value
118+
end
119+
110120
def test_to_der_is_the_same_for_non_critical
111121
ext1 = OpenSSL::X509::Extension.new('1.1.1.1.1.1', 'foo')
112122
ext2 = OpenSSL::X509::Extension.new('1.1.1.1.1.1', 'foo', false)

0 commit comments

Comments
 (0)