@@ -37,4 +37,43 @@ def test_version
3737 assert_equal 1 , req . version
3838 end
3939
40+ # from GH-150
41+ def test_to_der_new_from_der ; require 'base64'
42+ # Build the CSR
43+ key = OpenSSL ::PKey ::RSA . new TEST_KEY_RSA1024
44+ request = OpenSSL ::X509 ::Request . new
45+ request . subject = OpenSSL ::X509 ::Name . new ( [ [ 'CN' , "common_name" , OpenSSL ::ASN1 ::UTF8STRING ] ] )
46+ request . public_key = key . public_key
47+ request . sign ( key , OpenSSL ::Digest ::SHA1 . new )
48+ # One request is decoded from a `encode64` the other one is from `strict_encode64`
49+ decoded = Base64 . decode64 ( Base64 . encode64 ( request . to_der ) )
50+ strictly_decoded = Base64 . decode64 ( Base64 . strict_encode64 ( request . to_der ) )
51+
52+ # # Both strings are decoded identically
53+ # decoded == strictly_decoded #=> true
54+ # # .. even on byte level
55+ # decoded.split(//) == strictly_decoded.split(//) #= true
56+
57+ OpenSSL ::X509 ::Request . new ( strictly_decoded ) #=> #<OpenSSL::X509::Request:0x4f290f46>
58+ OpenSSL ::X509 ::Request . new ( decoded ) #=> OpenSSL::X509::RequestError: invalid certificate request data
59+ end
60+
61+ TEST_KEY_RSA1024 = <<-_end_of_pem_
62+ -----BEGIN RSA PRIVATE KEY-----
63+ MIICXgIBAAKBgQDLwsSw1ECnPtT+PkOgHhcGA71nwC2/nL85VBGnRqDxOqjVh7Cx
64+ aKPERYHsk4BPCkE3brtThPWc9kjHEQQ7uf9Y1rbCz0layNqHyywQEVLFmp1cpIt/
65+ Q3geLv8ZD9pihowKJDyMDiN6ArYUmZczvW4976MU3+l54E6lF/JfFEU5hwIDAQAB
66+ AoGBAKSl/MQarye1yOysqX6P8fDFQt68VvtXkNmlSiKOGuzyho0M+UVSFcs6k1L0
67+ maDE25AMZUiGzuWHyaU55d7RXDgeskDMakD1v6ZejYtxJkSXbETOTLDwUWTn618T
68+ gnb17tU1jktUtU67xK/08i/XodlgnQhs6VoHTuCh3Hu77O6RAkEA7+gxqBuZR572
69+ 74/akiW/SuXm0SXPEviyO1MuSRwtI87B02D0qgV8D1UHRm4AhMnJ8MCs1809kMQE
70+ JiQUCrp9mQJBANlt2ngBO14us6NnhuAseFDTBzCHXwUUu1YKHpMMmxpnGqaldGgX
71+ sOZB3lgJsT9VlGf3YGYdkLTNVbogQKlKpB8CQQDiSwkb4vyQfDe8/NpU5Not0fII
72+ 8jsDUCb+opWUTMmfbxWRR3FBNu8wnym/m19N4fFj8LqYzHX4KY0oVPu6qvJxAkEA
73+ wa5snNekFcqONLIE4G5cosrIrb74sqL8GbGb+KuTAprzj5z1K8Bm0UW9lTjVDjDi
74+ qRYgZfZSL+x1P/54+xTFSwJAY1FxA/N3QPCXCjPh5YqFxAMQs2VVYTfg+t0MEcJD
75+ dPMQD5JX6g5HKnHFg2mZtoXQrWmJSn7p8GJK8yNTopEErA==
76+ -----END RSA PRIVATE KEY-----
77+ _end_of_pem_
78+
4079end
0 commit comments