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