Skip to content

Commit 7af1a89

Browse files
committed
make sure version is set when reading encoded certificate (related to regression #39)
1 parent 62926a0 commit 7af1a89

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import org.jruby.RubyArray;
6666
import org.jruby.RubyBoolean;
6767
import org.jruby.RubyClass;
68+
import org.jruby.RubyFixnum;
6869
import org.jruby.RubyModule;
6970
import org.jruby.RubyNumeric;
7071
import org.jruby.RubyObject;
@@ -206,8 +207,9 @@ private void initialize(final ThreadContext context, final byte[] encoded, final
206207
set_serial( RubyNumeric.str2inum(runtime, runtime.newString(cert.getSerialNumber().toString()), 10) );
207208
set_not_before( context, RubyTime.newTime( runtime, cert.getNotBefore().getTime() ) );
208209
set_not_after( context, RubyTime.newTime( runtime, cert.getNotAfter().getTime() ) );
209-
set_subject( X509Name.newName(runtime, cert.getSubjectX500Principal()) );
210-
set_issuer( X509Name.newName(runtime, cert.getIssuerX500Principal()) );
210+
this.subject = X509Name.newName(runtime, cert.getSubjectX500Principal());
211+
this.issuer = X509Name.newName(runtime, cert.getIssuerX500Principal());
212+
this.version = RubyFixnum.newFixnum(runtime, cert.getVersion() - 1);
211213

212214
final Set<String> criticalExtOIDs = cert.getCriticalExtensionOIDs();
213215
if ( criticalExtOIDs != null ) {

src/test/ruby/x509/test_x509cert.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,12 +226,51 @@ def test_inspect_to_text
226226
TEXT
227227

228228
cert.to_text
229+
assert_equal 2, cert.version
229230

230231
unless defined? JRUBY_VERSION # TODO "/DC=org,/DC=ruby-lang,/CN=TestCA"
231232
assert_equal text_without_signature, cert.to_text[0, text_without_signature.size]
232233
end
233234
end
234235

236+
def test_to_text_regression
237+
cert = OpenSSL::X509::Certificate.new <<-EOF
238+
-----BEGIN CERTIFICATE-----
239+
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
268+
7/EXBJpK
269+
-----END CERTIFICATE-----
270+
EOF
271+
assert_equal 0, cert.version
272+
end
273+
235274
TEST_KEY_RSA1024 = <<-_end_of_pem_
236275
-----BEGIN RSA PRIVATE KEY-----
237276
MIICXgIBAAKBgQDLwsSw1ECnPtT+PkOgHhcGA71nwC2/nL85VBGnRqDxOqjVh7Cx

0 commit comments

Comments
 (0)