-
Notifications
You must be signed in to change notification settings - Fork 83
Closed
Description
I have the following code
crl = OpenSSL::X509::CRL.new
crl.version = 1
crl.issuer = ca_cert.subject
ef = extension_factory_for(ca_cert)
crl.add_extension(
ef.create_extension(["authorityKeyIdentifier", "keyid:always", false]))
crl.add_extension(
OpenSSL::X509::Extension.new("crlNumber", OpenSSL::ASN1::Integer(0)))
not_before = just_now
crl.last_update = not_before
crl.next_update = not_before + FIVE_YEARS
crl.sign(ca_key, DEFAULT_SIGNING_DIGEST)
binding.pryAt this breakpoint I get
[11] pry(PuppetSpec::SSL)> crl
=> #<OpenSSL::X509::CRL:0xfb0a08c>
[12] pry(PuppetSpec::SSL)> crl.to_pem
=> "-----BEGIN X509 CRL-----\nMAA=\n-----END X509 CRL-----\n"
[13] pry(PuppetSpec::SSL)> OpenSSL::X509::CRL.new(crl.to_pem)
OpenSSL::X509::CRLError: java.lang.IllegalArgumentException: sequence wrong size for CertificateList
from org/jruby/ext/openssl/X509CRL.java:221:in `initialize'
[14] pry(PuppetSpec::SSL)> OpenSSL::X509::CRL.new(crl.to_der).to_pem
=> "-----BEGIN X509 CRL-----\nMIIBkDB6AgEBMA0GCSqGSIb3DQEBCwUAMBcxFTATBgNVBAMMDHJvb3QtY2Et8KCc\njhcNMTgwNTA0MjIxNDU5WhcNMjMwNTAzMjIxNDU5WqAvMC0wHwYDVR0jBBgwFoAU\nE4P3BleD1/3tVw5gc5IF9o/5H9kwCgYDVR0UBAMCAQAwDQYJKoZIhvcNAQELBQAD\nggEBAFgkbu65QLWwxHSyPw24StD9EFhHkbYX2pXq+FnS9RNSFpV9RJg1R4rOdfHe\n7xhIWO8milyKsAgTE2s1I2o+RXzH4Gaq2FFWc48f5ZXRUWqhNb8Dd8yuTbiTkqOl\n3ZuMfJUUzk0DBPKjn665AGYKRcQ5Jeaw3s8VSST/p3wzLNnCM1Dn39zvPKXJ1oQF\nAI8vkXgTg9tBOoSe1ENe6AJJnzn3hU8E3SXc457Azifz4w+ShRsxzvb1pjRXSVQ+\ny3WKN2X1z646sYx5bXMDTXhXUTo1aL9t12BpGbfHJom586AtOSV5lchnkgyb8eVl\nHOUhMoTwG0RaEfhIyQ1UN1VJk2U=\n-----END X509 CRL-----\n"
[15] pry(PuppetSpec::SSL)> OpenSSL::X509::CRL.new(OpenSSL::X509::CRL.new(crl.to_der).to_pem)
=> #<OpenSSL::X509::CRL:0xb61edb9>
It seems that internally the crl should be either in crl or crlHolder, and to_der will check both but to_pem will only check crl. When I initialize a new object from an existing crl it initializes crl internally, but when calling new with no arguments it doesn't initialize anything (sign initializes crlHolder but sets crl to null).
This is also seen by:
[16] pry(PuppetSpec::SSL)> OpenSSL::X509::CRL.new.to_der
Java::JavaLang::IllegalStateException: no crl holder
from org.jruby.ext.openssl.X509CRL.getCRL(X509CRL.java:140)
I'm on jruby 9.1.16.0.
Metadata
Metadata
Assignees
Labels
No labels