@@ -37,4 +37,43 @@ def test_version
37
37
assert_equal 1 , req . version
38
38
end
39
39
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
+
40
79
end
0 commit comments