]>
Commit | Line | Data |
---|---|---|
88b8a527 RL |
1 | #! /usr/bin/perl |
2 | ||
3 | use strict; | |
4 | use warnings; | |
5 | ||
6 | use POSIX; | |
7 | use File::Spec::Functions qw/catfile/; | |
8 | use File::Compare qw/compare_text/; | |
42e0ccdf | 9 | use OpenSSL::Test qw/:DEFAULT srctop_dir srctop_file/; |
340166a9 | 10 | use OpenSSL::Test::Utils; |
88b8a527 RL |
11 | |
12 | setup("test_cms"); | |
13 | ||
42e0ccdf RL |
14 | my $smdir = srctop_dir("test", "smime-certs"); |
15 | my $smcont = srctop_file("test", "smcont.txt"); | |
37f3a3b3 | 16 | my ($no_dh, $no_ec, $no_ec2m, $no_zlib) = disabled qw/dh ec ec2m zlib/; |
88b8a527 RL |
17 | |
18 | plan tests => 4; | |
19 | ||
20 | my @smime_pkcs7_tests = ( | |
21 | ||
22 | [ "signed content DER format, RSA key", | |
23 | [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", | |
24 | "-certfile", catfile($smdir, "smroot.pem"), | |
25 | "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], | |
26 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
27 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
28 | ], | |
29 | ||
30 | [ "signed detached content DER format, RSA key", | |
31 | [ "-sign", "-in", $smcont, "-outform", "DER", | |
32 | "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], | |
33 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
34 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt", | |
35 | "-content", $smcont ] | |
36 | ], | |
37 | ||
38 | [ "signed content test streaming BER format, RSA", | |
39 | [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", | |
40 | "-stream", | |
41 | "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], | |
42 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
43 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
44 | ], | |
45 | ||
46 | [ "signed content DER format, DSA key", | |
47 | [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", | |
48 | "-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ], | |
49 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
50 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
51 | ], | |
52 | ||
53 | [ "signed detached content DER format, DSA key", | |
54 | [ "-sign", "-in", $smcont, "-outform", "DER", | |
55 | "-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ], | |
56 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
57 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt", | |
58 | "-content", $smcont ] | |
59 | ], | |
60 | ||
61 | [ "signed detached content DER format, add RSA signer", | |
62 | [ "-resign", "-inform", "DER", "-in", "test.cms", "-outform", "DER", | |
63 | "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test2.cms" ], | |
64 | [ "-verify", "-in", "test2.cms", "-inform", "DER", | |
65 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt", | |
66 | "-content", $smcont ] | |
67 | ], | |
68 | ||
69 | [ "signed content test streaming BER format, DSA key", | |
70 | [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", | |
71 | "-stream", | |
72 | "-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ], | |
73 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
74 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
75 | ], | |
76 | ||
77 | [ "signed content test streaming BER format, 2 DSA and 2 RSA keys", | |
78 | [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", | |
79 | "-signer", catfile($smdir, "smrsa1.pem"), | |
80 | "-signer", catfile($smdir, "smrsa2.pem"), | |
81 | "-signer", catfile($smdir, "smdsa1.pem"), | |
82 | "-signer", catfile($smdir, "smdsa2.pem"), | |
83 | "-stream", "-out", "test.cms" ], | |
84 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
85 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
86 | ], | |
87 | ||
88 | [ "signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes", | |
89 | [ "-sign", "-in", $smcont, "-outform", "DER", "-noattr", "-nodetach", | |
90 | "-signer", catfile($smdir, "smrsa1.pem"), | |
91 | "-signer", catfile($smdir, "smrsa2.pem"), | |
92 | "-signer", catfile($smdir, "smdsa1.pem"), | |
93 | "-signer", catfile($smdir, "smdsa2.pem"), | |
94 | "-stream", "-out", "test.cms" ], | |
95 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
96 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
97 | ], | |
98 | ||
99 | [ "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys", | |
100 | [ "-sign", "-in", $smcont, "-nodetach", | |
101 | "-signer", catfile($smdir, "smrsa1.pem"), | |
102 | "-signer", catfile($smdir, "smrsa2.pem"), | |
103 | "-signer", catfile($smdir, "smdsa1.pem"), | |
104 | "-signer", catfile($smdir, "smdsa2.pem"), | |
105 | "-stream", "-out", "test.cms" ], | |
106 | [ "-verify", "-in", "test.cms", | |
107 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
108 | ], | |
109 | ||
110 | [ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys", | |
111 | [ "-sign", "-in", $smcont, | |
112 | "-signer", catfile($smdir, "smrsa1.pem"), | |
113 | "-signer", catfile($smdir, "smrsa2.pem"), | |
114 | "-signer", catfile($smdir, "smdsa1.pem"), | |
115 | "-signer", catfile($smdir, "smdsa2.pem"), | |
116 | "-stream", "-out", "test.cms" ], | |
117 | [ "-verify", "-in", "test.cms", | |
118 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
119 | ], | |
120 | ||
121 | [ "enveloped content test streaming S/MIME format, 3 recipients", | |
122 | [ "-encrypt", "-in", $smcont, | |
123 | "-stream", "-out", "test.cms", | |
124 | catfile($smdir, "smrsa1.pem"), | |
125 | catfile($smdir, "smrsa2.pem"), | |
126 | catfile($smdir, "smrsa3.pem") ], | |
127 | [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), | |
128 | "-in", "test.cms", "-out", "smtst.txt" ] | |
129 | ], | |
130 | ||
131 | [ "enveloped content test streaming S/MIME format, 3 recipients, 3rd used", | |
132 | [ "-encrypt", "-in", $smcont, | |
133 | "-stream", "-out", "test.cms", | |
134 | catfile($smdir, "smrsa1.pem"), | |
135 | catfile($smdir, "smrsa2.pem"), | |
136 | catfile($smdir, "smrsa3.pem") ], | |
137 | [ "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"), | |
138 | "-in", "test.cms", "-out", "smtst.txt" ] | |
139 | ], | |
140 | ||
141 | [ "enveloped content test streaming S/MIME format, 3 recipients, key only used", | |
142 | [ "-encrypt", "-in", $smcont, | |
143 | "-stream", "-out", "test.cms", | |
144 | catfile($smdir, "smrsa1.pem"), | |
145 | catfile($smdir, "smrsa2.pem"), | |
146 | catfile($smdir, "smrsa3.pem") ], | |
147 | [ "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"), | |
148 | "-in", "test.cms", "-out", "smtst.txt" ] | |
149 | ], | |
150 | ||
151 | [ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients", | |
152 | [ "-encrypt", "-in", $smcont, | |
153 | "-aes256", "-stream", "-out", "test.cms", | |
154 | catfile($smdir, "smrsa1.pem"), | |
155 | catfile($smdir, "smrsa2.pem"), | |
156 | catfile($smdir, "smrsa3.pem") ], | |
157 | [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), | |
158 | "-in", "test.cms", "-out", "smtst.txt" ] | |
159 | ], | |
160 | ||
161 | ); | |
162 | ||
163 | my @smime_cms_tests = ( | |
164 | ||
165 | [ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid", | |
166 | [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", "-keyid", | |
167 | "-signer", catfile($smdir, "smrsa1.pem"), | |
168 | "-signer", catfile($smdir, "smrsa2.pem"), | |
169 | "-signer", catfile($smdir, "smdsa1.pem"), | |
170 | "-signer", catfile($smdir, "smdsa2.pem"), | |
171 | "-stream", "-out", "test.cms" ], | |
172 | [ "-verify", "-in", "test.cms", "-inform", "DER", | |
173 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
174 | ], | |
175 | ||
176 | [ "signed content test streaming PEM format, 2 DSA and 2 RSA keys", | |
177 | [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", | |
178 | "-signer", catfile($smdir, "smrsa1.pem"), | |
179 | "-signer", catfile($smdir, "smrsa2.pem"), | |
180 | "-signer", catfile($smdir, "smdsa1.pem"), | |
181 | "-signer", catfile($smdir, "smdsa2.pem"), | |
182 | "-stream", "-out", "test.cms" ], | |
183 | [ "-verify", "-in", "test.cms", "-inform", "PEM", | |
184 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
185 | ], | |
186 | ||
187 | [ "signed content MIME format, RSA key, signed receipt request", | |
188 | [ "-sign", "-in", $smcont, "-signer", catfile($smdir, "smrsa1.pem"), "-nodetach", | |
189 | "-receipt_request_to", "test\@openssl.org", "-receipt_request_all", | |
190 | "-out", "test.cms" ], | |
191 | [ "-verify", "-in", "test.cms", | |
192 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
193 | ], | |
194 | ||
195 | [ "signed receipt MIME format, RSA key", | |
196 | [ "-sign_receipt", "-in", "test.cms", | |
197 | "-signer", catfile($smdir, "smrsa2.pem"), | |
198 | "-out", "test2.cms" ], | |
199 | [ "-verify_receipt", "test2.cms", "-in", "test.cms", | |
200 | "-CAfile", catfile($smdir, "smroot.pem") ] | |
201 | ], | |
202 | ||
203 | [ "enveloped content test streaming S/MIME format, 3 recipients, keyid", | |
204 | [ "-encrypt", "-in", $smcont, | |
205 | "-stream", "-out", "test.cms", "-keyid", | |
206 | catfile($smdir, "smrsa1.pem"), | |
207 | catfile($smdir, "smrsa2.pem"), | |
208 | catfile($smdir, "smrsa3.pem") ], | |
209 | [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), | |
210 | "-in", "test.cms", "-out", "smtst.txt" ] | |
211 | ], | |
212 | ||
213 | [ "enveloped content test streaming PEM format, KEK", | |
214 | [ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128", | |
215 | "-stream", "-out", "test.cms", | |
216 | "-secretkey", "000102030405060708090A0B0C0D0E0F", | |
217 | "-secretkeyid", "C0FEE0" ], | |
218 | [ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM", | |
219 | "-secretkey", "000102030405060708090A0B0C0D0E0F", | |
220 | "-secretkeyid", "C0FEE0" ] | |
221 | ], | |
222 | ||
223 | [ "enveloped content test streaming PEM format, KEK, key only", | |
224 | [ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128", | |
225 | "-stream", "-out", "test.cms", | |
226 | "-secretkey", "000102030405060708090A0B0C0D0E0F", | |
227 | "-secretkeyid", "C0FEE0" ], | |
228 | [ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM", | |
229 | "-secretkey", "000102030405060708090A0B0C0D0E0F" ] | |
230 | ], | |
231 | ||
232 | [ "data content test streaming PEM format", | |
233 | [ "-data_create", "-in", $smcont, "-outform", "PEM", "-nodetach", | |
234 | "-stream", "-out", "test.cms" ], | |
235 | [ "-data_out", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ] | |
236 | ], | |
237 | ||
238 | [ "encrypted content test streaming PEM format, 128 bit RC2 key", | |
239 | [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", | |
240 | "-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F", | |
241 | "-stream", "-out", "test.cms" ], | |
242 | [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", | |
243 | "-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ] | |
244 | ], | |
245 | ||
246 | [ "encrypted content test streaming PEM format, 40 bit RC2 key", | |
247 | [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", | |
248 | "-rc2", "-secretkey", "0001020304", | |
249 | "-stream", "-out", "test.cms" ], | |
250 | [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", | |
251 | "-secretkey", "0001020304", "-out", "smtst.txt" ] | |
252 | ], | |
253 | ||
254 | [ "encrypted content test streaming PEM format, triple DES key", | |
255 | [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", | |
256 | "-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617", | |
257 | "-stream", "-out", "test.cms" ], | |
258 | [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", | |
259 | "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617", | |
260 | "-out", "smtst.txt" ] | |
261 | ], | |
262 | ||
263 | [ "encrypted content test streaming PEM format, 128 bit AES key", | |
264 | [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", | |
265 | "-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F", | |
266 | "-stream", "-out", "test.cms" ], | |
267 | [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", | |
268 | "-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ] | |
269 | ], | |
270 | ||
271 | ); | |
272 | ||
273 | my @smime_cms_comp_tests = ( | |
274 | ||
275 | [ "compressed content test streaming PEM format", | |
276 | [ "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach", | |
277 | "-stream", "-out", "test.cms" ], | |
278 | [ "-uncompress", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ] | |
279 | ] | |
280 | ||
281 | ); | |
282 | ||
283 | my @smime_cms_param_tests = ( | |
284 | [ "signed content test streaming PEM format, RSA keys, PSS signature", | |
285 | [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", | |
286 | "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", | |
287 | "-out", "test.cms" ], | |
288 | [ "-verify", "-in", "test.cms", "-inform", "PEM", | |
289 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
290 | ], | |
291 | ||
292 | [ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes", | |
293 | [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr", | |
294 | "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", | |
295 | "-out", "test.cms" ], | |
296 | [ "-verify", "-in", "test.cms", "-inform", "PEM", | |
297 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
298 | ], | |
299 | ||
300 | [ "signed content test streaming PEM format, RSA keys, PSS signature, SHA384 MGF1", | |
301 | [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", | |
302 | "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", | |
303 | "-keyopt", "rsa_mgf1_md:sha384", "-out", "test.cms" ], | |
304 | [ "-verify", "-in", "test.cms", "-inform", "PEM", | |
305 | "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] | |
306 | ], | |
307 | ||
308 | [ "enveloped content test streaming S/MIME format, OAEP default parameters", | |
309 | [ "-encrypt", "-in", $smcont, | |
310 | "-stream", "-out", "test.cms", | |
311 | "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ], | |
312 | [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), | |
313 | "-in", "test.cms", "-out", "smtst.txt" ] | |
314 | ], | |
315 | ||
316 | [ "enveloped content test streaming S/MIME format, OAEP SHA256", | |
317 | [ "-encrypt", "-in", $smcont, | |
318 | "-stream", "-out", "test.cms", | |
319 | "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep", | |
320 | "-keyopt", "rsa_oaep_md:sha256" ], | |
321 | [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), | |
322 | "-in", "test.cms", "-out", "smtst.txt" ] | |
323 | ], | |
324 | ||
325 | [ "enveloped content test streaming S/MIME format, ECDH", | |
326 | [ "-encrypt", "-in", $smcont, | |
327 | "-stream", "-out", "test.cms", | |
328 | "-recip", catfile($smdir, "smec1.pem") ], | |
329 | [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"), | |
330 | "-in", "test.cms", "-out", "smtst.txt" ] | |
331 | ], | |
332 | ||
333 | [ "enveloped content test streaming S/MIME format, ECDH, key identifier", | |
334 | [ "-encrypt", "-keyid", "-in", $smcont, | |
335 | "-stream", "-out", "test.cms", | |
336 | "-recip", catfile($smdir, "smec1.pem") ], | |
337 | [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"), | |
338 | "-in", "test.cms", "-out", "smtst.txt" ] | |
339 | ], | |
340 | ||
341 | [ "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF", | |
342 | [ "-encrypt", "-in", $smcont, | |
343 | "-stream", "-out", "test.cms", | |
344 | "-recip", catfile($smdir, "smec1.pem"), "-aes128", "-keyopt", "ecdh_kdf_md:sha256" ], | |
345 | [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"), | |
346 | "-in", "test.cms", "-out", "smtst.txt" ] | |
347 | ], | |
348 | ||
349 | [ "enveloped content test streaming S/MIME format, ECDH, K-283, cofactor DH", | |
350 | [ "-encrypt", "-in", $smcont, | |
351 | "-stream", "-out", "test.cms", | |
352 | "-recip", catfile($smdir, "smec2.pem"), "-aes128", | |
353 | "-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ], | |
354 | [ "-decrypt", "-recip", catfile($smdir, "smec2.pem"), | |
355 | "-in", "test.cms", "-out", "smtst.txt" ] | |
356 | ], | |
357 | ||
358 | [ "enveloped content test streaming S/MIME format, X9.42 DH", | |
359 | [ "-encrypt", "-in", $smcont, | |
360 | "-stream", "-out", "test.cms", | |
361 | "-recip", catfile($smdir, "smdh.pem"), "-aes128" ], | |
362 | [ "-decrypt", "-recip", catfile($smdir, "smdh.pem"), | |
363 | "-in", "test.cms", "-out", "smtst.txt" ] | |
364 | ] | |
365 | ); | |
366 | ||
367 | subtest "CMS => PKCS#7 compatibility tests\n" => sub { | |
368 | plan tests => scalar @smime_pkcs7_tests; | |
369 | ||
370 | foreach (@smime_pkcs7_tests) { | |
371 | SKIP: { | |
372 | my $skip_reason = check_availability($$_[0]); | |
373 | skip $skip_reason, 1 if $skip_reason; | |
374 | ||
375 | ok(run(app(["openssl", "cms", @{$$_[1]}])) | |
376 | && run(app(["openssl", "smime", @{$$_[2]}])) | |
377 | && compare_text($smcont, "smtst.txt") == 0, | |
378 | $$_[0]); | |
379 | } | |
380 | } | |
381 | }; | |
382 | subtest "CMS <= PKCS#7 compatibility tests\n" => sub { | |
383 | plan tests => scalar @smime_pkcs7_tests; | |
384 | ||
385 | foreach (@smime_pkcs7_tests) { | |
386 | SKIP: { | |
387 | my $skip_reason = check_availability($$_[0]); | |
388 | skip $skip_reason, 1 if $skip_reason; | |
389 | ||
390 | ok(run(app(["openssl", "smime", @{$$_[1]}])) | |
391 | && run(app(["openssl", "cms", @{$$_[2]}])) | |
392 | && compare_text($smcont, "smtst.txt") == 0, | |
393 | $$_[0]); | |
394 | } | |
395 | } | |
396 | }; | |
397 | ||
398 | subtest "CMS <=> CMS consistency tests\n" => sub { | |
399 | plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests); | |
400 | ||
401 | foreach (@smime_pkcs7_tests) { | |
402 | SKIP: { | |
403 | my $skip_reason = check_availability($$_[0]); | |
404 | skip $skip_reason, 1 if $skip_reason; | |
405 | ||
406 | ok(run(app(["openssl", "cms", @{$$_[1]}])) | |
407 | && run(app(["openssl", "cms", @{$$_[2]}])) | |
408 | && compare_text($smcont, "smtst.txt") == 0, | |
409 | $$_[0]); | |
410 | } | |
411 | } | |
412 | foreach (@smime_cms_tests) { | |
413 | SKIP: { | |
414 | my $skip_reason = check_availability($$_[0]); | |
415 | skip $skip_reason, 1 if $skip_reason; | |
416 | ||
417 | ok(run(app(["openssl", "cms", @{$$_[1]}])) | |
418 | && run(app(["openssl", "cms", @{$$_[2]}])) | |
419 | && compare_text($smcont, "smtst.txt") == 0, | |
420 | $$_[0]); | |
421 | } | |
422 | } | |
423 | }; | |
424 | ||
425 | subtest "CMS <=> CMS consistency tests, modified key parameters\n" => sub { | |
426 | plan tests => | |
427 | (scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests); | |
428 | ||
429 | foreach (@smime_cms_param_tests) { | |
430 | SKIP: { | |
431 | my $skip_reason = check_availability($$_[0]); | |
432 | skip $skip_reason, 1 if $skip_reason; | |
433 | ||
434 | ok(run(app(["openssl", "cms", @{$$_[1]}])) | |
435 | && run(app(["openssl", "cms", @{$$_[2]}])) | |
436 | && compare_text($smcont, "smtst.txt") == 0, | |
437 | $$_[0]); | |
438 | } | |
439 | } | |
440 | ||
441 | SKIP: { | |
442 | skip("Zlib not supported: compression tests skipped", | |
443 | scalar @smime_cms_comp_tests) | |
340166a9 | 444 | if $no_zlib; |
88b8a527 | 445 | |
cc0b19a7 | 446 | foreach (@smime_cms_comp_tests) { |
88b8a527 RL |
447 | SKIP: { |
448 | my $skip_reason = check_availability($$_[0]); | |
449 | skip $skip_reason, 1 if $skip_reason; | |
450 | ||
451 | ok(run(app(["openssl", "cms", @{$$_[1]}])) | |
452 | && run(app(["openssl", "cms", @{$$_[2]}])) | |
453 | && compare_text($smcont, "smtst.txt") == 0, | |
454 | $$_[0]); | |
455 | } | |
456 | } | |
457 | } | |
458 | }; | |
459 | ||
460 | unlink "test.cms"; | |
461 | unlink "test2.cms"; | |
462 | unlink "smtst.txt"; | |
463 | ||
464 | sub check_availability { | |
465 | my $tnam = shift; | |
466 | ||
467 | return "$tnam: skipped, EC disabled\n" | |
468 | if ($no_ec && $tnam =~ /ECDH/); | |
469 | return "$tnam: skipped, ECDH disabled\n" | |
340166a9 | 470 | if ($no_ec && $tnam =~ /ECDH/); |
88b8a527 RL |
471 | return "$tnam: skipped, EC2M disabled\n" |
472 | if ($no_ec2m && $tnam =~ /K-283/); | |
37f3a3b3 DSH |
473 | return "$tnam: skipped, DH disabled\n" |
474 | if ($no_dh && $tnam =~ /X9\.42/); | |
88b8a527 RL |
475 | return ""; |
476 | } |