Skip to content

Commit 77f730c

Browse files
authored
Merge pull request #977 from rhenium/ky/x509cert-inspect-invalid-validity
x509cert: handle invalid validity periods in Certificate#inspect
2 parents 3e4c23e + 18c283f commit 77f730c

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

ext/openssl/ossl_x509cert.c

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -665,20 +665,6 @@ ossl_x509_add_extension(VALUE self, VALUE extension)
665665
return extension;
666666
}
667667

668-
static VALUE
669-
ossl_x509_inspect(VALUE self)
670-
{
671-
return rb_sprintf("#<%"PRIsVALUE": subject=%+"PRIsVALUE", "
672-
"issuer=%+"PRIsVALUE", serial=%+"PRIsVALUE", "
673-
"not_before=%+"PRIsVALUE", not_after=%+"PRIsVALUE">",
674-
rb_obj_class(self),
675-
ossl_x509_get_subject(self),
676-
ossl_x509_get_issuer(self),
677-
ossl_x509_get_serial(self),
678-
ossl_x509_get_not_before(self),
679-
ossl_x509_get_not_after(self));
680-
}
681-
682668
/*
683669
* call-seq:
684670
* cert1 == cert2 -> true | false
@@ -1013,7 +999,6 @@ Init_ossl_x509cert(void)
1013999
rb_define_method(cX509Cert, "extensions", ossl_x509_get_extensions, 0);
10141000
rb_define_method(cX509Cert, "extensions=", ossl_x509_set_extensions, 1);
10151001
rb_define_method(cX509Cert, "add_extension", ossl_x509_add_extension, 1);
1016-
rb_define_method(cX509Cert, "inspect", ossl_x509_inspect, 0);
10171002
rb_define_method(cX509Cert, "==", ossl_x509_eq, 1);
10181003
rb_define_method(cX509Cert, "tbs_bytes", ossl_x509_tbs_bytes, 0);
10191004
}

lib/openssl/x509.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,15 @@ class Certificate
346346
include Extension::CRLDistributionPoints
347347
include Extension::AuthorityInfoAccess
348348

349+
def inspect
350+
"#<#{self.class}: " \
351+
"subject=#{subject.inspect}, " \
352+
"issuer=#{issuer.inspect}, " \
353+
"serial=#{serial.inspect}, " \
354+
"not_before=#{not_before.inspect rescue "(error)"}, " \
355+
"not_after=#{not_after.inspect rescue "(error)"}>"
356+
end
357+
349358
def pretty_print(q)
350359
q.object_group(self) {
351360
q.breakable

test/openssl/test_x509cert.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,14 @@ def test_eq
298298
assert_equal false, cert3 == cert4
299299
end
300300

301+
def test_inspect
302+
cacert = issue_cert(@ca, @rsa1, 1, [], nil, nil)
303+
assert_include(cacert.inspect, "subject=#{@ca.inspect}")
304+
305+
# Do not raise an exception for an invalid certificate
306+
assert_instance_of(String, OpenSSL::X509::Certificate.new.inspect)
307+
end
308+
301309
def test_marshal
302310
now = Time.now
303311
cacert = issue_cert(@ca, @rsa1, 1, [], nil, nil,

0 commit comments

Comments
 (0)