Closed
Description
require 'openssl'
require 'base64'
# Build the CSR
key = OpenSSL::PKey::RSA.new(1024)
request = OpenSSL::X509::Request.new
request.subject = OpenSSL::X509::Name.new([['CN', "common_name", OpenSSL::ASN1::UTF8STRING]])
request.public_key = key.public_key
request.sign(key, OpenSSL::Digest::SHA1.new)
# One request is decoded from a `encode64` the other one is from `strict_encode64`
decoded = Base64.decode64(Base64.encode64(request.to_der))
strictly_decoded = Base64.decode64(Base64.strict_encode64(request.to_der))
# Both strings are decoded identically
decoded == strictly_decoded #=> true
# .. even on byte level
decoded.split(//) == strictly_decoded.split(//) #= true
OpenSSL::X509::Request.new(decoded) #=> OpenSSL::X509::RequestError: invalid certificate request data
OpenSSL::X509::Request.new(strictly_decoded) #=> #<OpenSSL::X509::Request:0x4f290f46>
Not sure if this is strictly jruby-openssl
issue, but how is it possible that two equal strings produce different results?
Environment:
jruby-9.1.13.0
MacOS Sierra 10.12.6
OpenSSL 0.9.8zh 14 Jan 2016
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Metadata
Metadata
Assignees
Labels
No labels