Skip to content

Commit 351fdb7

Browse files
committed
[compat] add OpenSSL::X509::Certificate#tbs_bytes
1 parent 70f6307 commit 351fdb7

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,19 @@ public IRubyObject to_der() {
303303
}
304304
}
305305

306+
@JRubyMethod
307+
public IRubyObject tbs_bytes() {
308+
if ( cert == null ) {
309+
throw newCertificateError(getRuntime(), "no certificate");
310+
}
311+
try {
312+
return StringHelper.newString(getRuntime(), cert.getTBSCertificate());
313+
}
314+
catch (CertificateEncodingException ex) {
315+
throw newCertificateError(getRuntime(), ex);
316+
}
317+
}
318+
306319
@JRubyMethod(name = {"to_pem", "to_s"})
307320
public IRubyObject to_pem() {
308321
final StringWriter str = new StringWriter();

src/test/ruby/x509/test_x509cert.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,14 @@ def test_sign_cert_default_serial # jruby/jruby#1691
426426
assert_equal 0, res.serial
427427
end
428428

429+
def test_tbs_precert_bytes
430+
ca = OpenSSL::X509::Name.parse('/DC=org/DC=ruby-lang/CN=CA')
431+
cert = issue_cert(ca, OpenSSL::PKey::RSA.new(TEST_KEY_RSA1024), 1, [], nil, nil)
432+
seq = OpenSSL::ASN1.decode(cert.tbs_bytes)
433+
434+
assert_equal 7, seq.value.size
435+
end
436+
429437
def test_cert_loading_regression
430438
cert_text = "0\x82\x01\xAD0\x82\x01\xA1\xA0\x03\x02\x01\x02\x02\x01\x010\x03\x06\x01\x000g1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\b\f\nCalifornia1\x150\x13\x06\x03U\x04\a\f\fSanta Monica1\x110\x0F\x06\x03U\x04\n\f\bOneLogin1\x190\x17\x06\x03U\x04\x03\f\x10app.onelogin.com0\x1E\x17\r100309095845Z\x17\r150309095845Z0g1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\b\f\nCalifornia1\x150\x13\x06\x03U\x04\a\f\fSanta Monica1\x110\x0F\x06\x03U\x04\n\f\bOneLogin1\x190\x17\x06\x03U\x04\x03\f\x10app.onelogin.com0\x81\x9F0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x01\x05\x00\x03\x81\x8D\x000\x81\x89\x02\x81\x81\x00\xE8\xD2\xBBW\xE3?/\x1D\xE7\x0E\x10\xC8\xBD~\xCD\xDE!#\rL\x92G\xDF\xE1f?L\xB1\xBC9\x99\x14\xE5\x84\xD2Zi\x87<>d\xBD\x81\xF9\xBA\x85\xD2\xFF\xAA\x90\xF3Z\x97\xA5\x1D\xB0W\xC0\x93\xA3\x06IP\xB84\xF5\xD7Qu\x19\xFCB\xCA\xA3\xD4\\\x8E\v\x9B%\x13|\xB6m\x9D\xA8\x16\xE6\xBB\xDA\x87\xFF\xE3\xD7\xE9\xBA9\xC5O\xA2\xA7C\xADB\x04\xCA\xA5\x0E\x84\xD0\xA8\xE4\xFA\xDA\xF1\x89\xF2s\xFA1\x95\xAF\x03\xAB1\xAA\xE7y\x02\x03\x01\x00\x010\x03\x06\x01\x00\x03\x01\x00"
431439
assert cert = OpenSSL::X509::Certificate.new(cert_text)

0 commit comments

Comments
 (0)