|
1 | 1 | # frozen_string_literal: false
|
2 | 2 | require_relative 'utils'
|
| 3 | +require 'byebug' |
3 | 4 |
|
4 |
| -if defined?(OpenSSL) |
| 5 | +if defined?(OpenSSL::CMS) |
5 | 6 |
|
6 | 7 | class OpenSSL::TestCMS < OpenSSL::TestCase
|
7 | 8 | def setup
|
@@ -35,7 +36,6 @@ def test_signed
|
35 | 36 |
|
36 | 37 | data = "aaaaa\r\nbbbbb\r\nccccc\r\n"
|
37 | 38 | tmp = OpenSSL::CMS.sign(@ee1_cert, @rsa1024, data, ca_certs)
|
38 |
| - byebug |
39 | 39 | cms = OpenSSL::CMS::ContentInfo.new(tmp.to_der)
|
40 | 40 | certs = cms.certificates
|
41 | 41 | signers = cms.signers
|
@@ -67,197 +67,31 @@ def test_signed
|
67 | 67 | assert_equal(@ee1_cert.serial, signers[0].serial)
|
68 | 68 | assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
|
69 | 69 |
|
70 |
| - # A signed-data which have multiple signatures can be created |
71 |
| - # through the following steps. |
72 |
| - # 1. create two signed-data |
73 |
| - # 2. copy signerInfo and certificate from one to another |
74 |
| - |
75 |
| - tmp1 = OpenSSL::CMS.sign(@ee1_cert, @rsa1024, data, [], flag) |
76 |
| - tmp2 = OpenSSL::CMS.sign(@ee2_cert, @rsa1024, data, [], flag) |
77 |
| - tmp1.add_signer(tmp2.signers[0]) |
78 |
| - tmp1.add_certificate(@ee2_cert) |
79 |
| - |
80 |
| - cms = OpenSSL::CMS.ContentInfo.new(tmp1.to_der) |
81 |
| - certs = cms.certificates |
82 |
| - signers = cms.signers |
83 |
| - assert(cms.verify([], store)) |
84 |
| - assert_equal(data, cms.data) |
85 |
| - assert_equal(2, certs.size) |
86 |
| - assert_equal(2, signers.size) |
87 |
| - assert_equal(@ee1_cert.serial, signers[0].serial) |
88 |
| - assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s) |
89 |
| - assert_equal(@ee2_cert.serial, signers[1].serial) |
90 |
| - assert_equal(@ee2_cert.issuer.to_s, signers[1].issuer.to_s) |
91 |
| - end |
92 |
| - |
93 |
| - def test_detached_sign |
94 |
| - pend "not yet" |
95 |
| - store = OpenSSL::X509::Store.new |
96 |
| - store.add_cert(@ca_cert) |
97 |
| - ca_certs = [@ca_cert] |
98 |
| - |
99 |
| - data = "aaaaa\nbbbbb\nccccc\n" |
100 |
| - flag = OpenSSL::PKCS7::BINARY|OpenSSL::PKCS7::DETACHED |
101 |
| - tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs, flag) |
102 |
| - p7 = OpenSSL::PKCS7.new(tmp.to_der) |
103 |
| - assert_nothing_raised do |
104 |
| - OpenSSL::ASN1.decode(p7) |
105 |
| - end |
106 |
| - |
107 |
| - certs = p7.certificates |
108 |
| - signers = p7.signers |
109 |
| - assert(!p7.verify([], store)) |
110 |
| - assert(p7.verify([], store, data)) |
111 |
| - assert_equal(data, p7.data) |
112 |
| - assert_equal(2, certs.size) |
113 |
| - assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s) |
114 |
| - assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s) |
115 |
| - assert_equal(1, signers.size) |
116 |
| - assert_equal(@ee1_cert.serial, signers[0].serial) |
117 |
| - assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s) |
118 |
| - end |
119 |
| - |
120 |
| - def test_enveloped |
121 |
| - pend "not yet" |
122 |
| - certs = [@ee1_cert, @ee2_cert] |
123 |
| - cipher = OpenSSL::Cipher::AES.new("128-CBC") |
124 |
| - data = "aaaaa\nbbbbb\nccccc\n" |
125 |
| - |
126 |
| - tmp = OpenSSL::PKCS7.encrypt(certs, data, cipher, OpenSSL::PKCS7::BINARY) |
127 |
| - p7 = OpenSSL::PKCS7.new(tmp.to_der) |
128 |
| - recip = p7.recipients |
129 |
| - assert_equal(:enveloped, p7.type) |
130 |
| - assert_equal(2, recip.size) |
131 |
| - |
132 |
| - assert_equal(@ca_cert.subject.to_s, recip[0].issuer.to_s) |
133 |
| - assert_equal(2, recip[0].serial) |
134 |
| - assert_equal(data, p7.decrypt(@rsa1024, @ee1_cert)) |
135 |
| - |
136 |
| - assert_equal(@ca_cert.subject.to_s, recip[1].issuer.to_s) |
137 |
| - assert_equal(3, recip[1].serial) |
138 |
| - assert_equal(data, p7.decrypt(@rsa1024, @ee2_cert)) |
139 |
| - |
140 |
| - assert_equal(data, p7.decrypt(@rsa1024)) |
141 |
| - end |
142 |
| - |
143 |
| - def test_graceful_parsing_failure #[ruby-core:43250] |
144 |
| - pend "not yet" |
145 |
| - contents = File.read(__FILE__) |
146 |
| - assert_raise(ArgumentError) { OpenSSL::PKCS7.new(contents) } |
147 |
| - end |
148 |
| - |
149 |
| - def test_degenerate_cms |
150 |
| - pend "not yet" |
151 |
| - ca_cert_pem = <<END |
152 |
| ------BEGIN CERTIFICATE----- |
153 |
| -MIID4DCCAsigAwIBAgIJAL1oVI72wmQwMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV |
154 |
| -BAYTAkFVMQ4wDAYDVQQIEwVTdGF0ZTENMAsGA1UEBxMEQ2l0eTEQMA4GA1UEChMH |
155 |
| -RXhhbXBsZTETMBEGA1UEAxMKRXhhbXBsZSBDQTAeFw0xMjEwMTgwOTE2NTBaFw0y |
156 |
| -MjEwMTYwOTE2NTBaMFMxCzAJBgNVBAYTAkFVMQ4wDAYDVQQIEwVTdGF0ZTENMAsG |
157 |
| -A1UEBxMEQ2l0eTEQMA4GA1UEChMHRXhhbXBsZTETMBEGA1UEAxMKRXhhbXBsZSBD |
158 |
| -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMTSPNxOkd5NN19XO0fJ |
159 |
| -tGVlWN4DWuvVL9WbWnXJXX9rU6X8sSOL9RrRA64eEZf2UBFjz9fMHZj/OGcxZpus |
160 |
| -4YtzfSrMU6xfvsIHeqX+mT60ms2RfX4UXab50MQArBin3JVKHGnOi25uyAOylVFU |
161 |
| -TuzzQJvKyB67vjuRPMlVAgVAZAP07ru9gW0ajt/ODxvUfvXxp5SFF68mVP2ipMBr |
162 |
| -4fujUwQC6cVHmnuL6p87VFoo9uk87TSQVDOQGL8MK4moMFtEW9oUTU22CgnxnCsS |
163 |
| -sCCELYhy9BdaTWQH26LzMfhnwSuIRHZyprW4WZtU0akrYXNiCj8o92rZmQWXJDbl |
164 |
| -qNECAwEAAaOBtjCBszAdBgNVHQ4EFgQUNtVw4jvkZZbkdQbkYi2/F4QN79owgYMG |
165 |
| -A1UdIwR8MHqAFDbVcOI75GWW5HUG5GItvxeEDe/aoVekVTBTMQswCQYDVQQGEwJB |
166 |
| -VTEOMAwGA1UECBMFU3RhdGUxDTALBgNVBAcTBENpdHkxEDAOBgNVBAoTB0V4YW1w |
167 |
| -bGUxEzARBgNVBAMTCkV4YW1wbGUgQ0GCCQC9aFSO9sJkMDAMBgNVHRMEBTADAQH/ |
168 |
| -MA0GCSqGSIb3DQEBBQUAA4IBAQBvJIsY9bIqliZ3WD1KoN4cvAQeRAPsoLXQkkHg |
169 |
| -P6Nrcw9rJ5JvoHfYbo5aNlwbnkbt/B2xlVEXUYpJoBZFXafgxG2gJleioIgnaDS4 |
170 |
| -FPPwZf1C5ZrOgUBfxTGjHex4ghSAoNGOd35jQzin5NGKOvZclPjZ2vQ++LP3aA2l |
171 |
| -9Fn2qASS46IzMGJlC75mlTOTQwDM16UunMAK26lNG9J6q02o4d/oU2a7x0fD80yF |
172 |
| -64kNA1wDAwaVCYiUH541qKp+b4iDqer8nf8HqzYDFlpje18xYZMEd1hj8dVOharM |
173 |
| -pISJ+D52hV/BGEYF8r5k3hpC5d76gSP2oCcaY0XvLBf97qik |
174 |
| ------END CERTIFICATE----- |
175 |
| -END |
176 |
| - cms = OpenSSL::CMS.new |
177 |
| - cms.type = "signed" |
178 |
| - ca_cert = OpenSSL::X509::Certificate.new(ca_cert_pem) |
179 |
| - cms.add_certificate ca_cert |
180 |
| - cms.add_data "" |
181 |
| - |
182 |
| - assert_nothing_raised do |
183 |
| - cms.to_pem |
| 70 | + if false |
| 71 | + # multiple signers not yet supported. |
| 72 | + # A signed-data which have multiple signatures can be created |
| 73 | + # through the following steps. |
| 74 | + # 1. create two signed-data |
| 75 | + # 2. copy signerInfo and certificate from one to another |
| 76 | + |
| 77 | + tmp1 = OpenSSL::CMS.sign(@ee1_cert, @rsa1024, data, [], flag) |
| 78 | + tmp2 = OpenSSL::CMS.sign(@ee2_cert, @rsa1024, data, [], flag) |
| 79 | + tmp1.add_signer(tmp2.signers[0]) |
| 80 | + tmp1.add_certificate(@ee2_cert) |
| 81 | + |
| 82 | + cms = OpenSSL::CMS.ContentInfo.new(tmp1.to_der) |
| 83 | + certs = cms.certificates |
| 84 | + signers = cms.signers |
| 85 | + assert(cms.verify([], store)) |
| 86 | + assert_equal(data, cms.data) |
| 87 | + assert_equal(2, certs.size) |
| 88 | + assert_equal(2, signers.size) |
| 89 | + assert_equal(@ee1_cert.serial, signers[0].serial) |
| 90 | + assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s) |
| 91 | + assert_equal(@ee2_cert.serial, signers[1].serial) |
| 92 | + assert_equal(@ee2_cert.issuer.to_s, signers[1].issuer.to_s) |
184 | 93 | end
|
185 | 94 | end
|
186 | 95 |
|
187 |
| - def test_split_content |
188 |
| - pend "not yet" |
189 |
| - pki_message_pem = <<END |
190 |
| ------BEGIN PKCS7----- |
191 |
| -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 |
230 |
| ------END PKCS7----- |
231 |
| -END |
232 |
| - pki_message_content_pem = <<END |
233 |
| ------BEGIN PKCS7----- |
234 |
| -MIIDawYJKoZIhvcNAQcDoIIDXDCCA1gCAQAxggEQMIIBDAIBADB1MHAxEDAOBgNV |
235 |
| -BAoMB2V4YW1wbGUxFzAVBgNVBAMMDlRBUk1BQyBST09UIENBMSIwIAYJKoZIhvcN |
236 |
| -AQkBFhNzb21lb25lQGV4YW1wbGUub3JnMQswCQYDVQQGEwJVUzESMBAGA1UEBwwJ |
237 |
| -VG93biBIYWxsAgFmMA0GCSqGSIb3DQEBAQUABIGAbKV17HvGYRtRRBNz1QLpW763 |
238 |
| -UedhVj5KXi70o4BJGM04lItAgt6aFC9SruZjpWr1gCYKCaRSAg273DeGTQwsDoZ8 |
239 |
| -6CPXzBpptYLz0MteQXYYWUaPZT+xmvx4NgDyk9P9MoT7JifsPrtXuzqCRFXhGdu8 |
240 |
| -d/ru+OWxhHLvKH+bYekwggI9BgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECBNs2U5m |
241 |
| -Msd/gIICGFOnLq/EAc9Nv+HjKR3ZVPSJMq0TImjGf5Mvc3nDgI572Hdo2aku0YXM |
242 |
| -6WjSWkpYtxpg7Cqxfl6hPSefLPUnBqlIoM2qbrE7MSKEVD6+2bW9GqYPFVg4qQLL |
243 |
| -sOxnxJIMfOvLFfd7guL+iLH424XfiUUxaf8EdZE4u2IEl4REvkS1FoEGwyA4BEGM |
244 |
| -SeVPedQCbZ0qY7Pc2tmZE3XfEUhIsyStG0Nb6i6AKcAFYGapbgE6kAB0gwsYcHlW |
245 |
| -MOvsvdAfcTq6jwtHlO1s68qtvkWquTQ9lpX+fzddUUNxEHSqv5eU3oo6fT3Vj5ZF |
246 |
| -IVlaA5ThZMrI5PgRPuwJM4GL8/VLwY5mbDLFqn/irGeEvP99J3S87ornLLunjpxS |
247 |
| -y1/AymcVep2H32Tj82WS/IRQXBOzz4EnQRJGszKxAV6tY+Zje3sWyTTgObhlsiTQ |
248 |
| -TDgnvtSW8RvVHqKrwgkxxEsRHg7u8UdzZ0jg+O5+3F8B6/NWMyts0OaFqT9wvI8y |
249 |
| -O7VIy3dUtGdz7Hde6Ggp/iTn1LbgdJ3N8Hzxf1j6NMWUKHVsadvwpRJbUeqq9c3+ |
250 |
| -QuxsJi8wWemxxQCE+tPyc1dP+ej5/M7bERbSOHMGgX03758IvP7A/fy2DjGPv2+l |
251 |
| -AwlEke0Uze1367QKgxM0nc3SZDlptY7zPIJC5saWXb8Rt2bw2JxEBOTavrp+ZwJ8 |
252 |
| -tcH961onq8Tme2ICaCzk |
253 |
| ------END PKCS7----- |
254 |
| -END |
255 |
| - pki_msg = OpenSSL::CMS.new(pki_message_pem) |
256 |
| - store = OpenSSL::X509::Store.new |
257 |
| - pki_msg.verify(nil, store, nil, OpenSSL::CMS::NOVERIFY) |
258 |
| - cmsenc = OpenSSL::CMS.new(pki_msg.data) |
259 |
| - assert_equal(pki_message_content_pem, cmsenc.to_pem) |
260 |
| - end |
261 |
| -end |
262 |
| - |
263 | 96 | end
|
| 97 | +end # if(OpenSSL) |
0 commit comments