Fix no-ct
[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 test streaming S/MIME format, 2 DSA and 2 RSA keys",
111       [ "-sign", "-in", $smcont, "-nodetach",
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     [ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys",
122       [ "-sign", "-in", $smcont,
123         "-signer", catfile($smdir, "smrsa1.pem"),
124         "-signer", catfile($smdir, "smrsa2.pem"),
125         "-signer", catfile($smdir, "smdsa1.pem"),
126         "-signer", catfile($smdir, "smdsa2.pem"),
127         "-stream", "-out", "test.cms" ],
128       [ "-verify", "-in", "test.cms",
129         "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
130     ],
131
132     [ "enveloped content test streaming S/MIME format, DES, 3 recipients",
133       [ "-encrypt", "-in", $smcont,
134         "-stream", "-out", "test.cms",
135         catfile($smdir, "smrsa1.pem"),
136         catfile($smdir, "smrsa2.pem"),
137         catfile($smdir, "smrsa3.pem") ],
138       [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
139         "-in", "test.cms", "-out", "smtst.txt" ]
140     ],
141
142     [ "enveloped content test streaming S/MIME format, DES, 3 recipients, 3rd used",
143       [ "-encrypt", "-in", $smcont,
144         "-stream", "-out", "test.cms",
145         catfile($smdir, "smrsa1.pem"),
146         catfile($smdir, "smrsa2.pem"),
147         catfile($smdir, "smrsa3.pem") ],
148       [ "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
149         "-in", "test.cms", "-out", "smtst.txt" ]
150     ],
151
152     [ "enveloped content test streaming S/MIME format, DES, 3 recipients, key only used",
153       [ "-encrypt", "-in", $smcont,
154         "-stream", "-out", "test.cms",
155         catfile($smdir, "smrsa1.pem"),
156         catfile($smdir, "smrsa2.pem"),
157         catfile($smdir, "smrsa3.pem") ],
158       [ "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
159         "-in", "test.cms", "-out", "smtst.txt" ]
160     ],
161
162     [ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients",
163       [ "-encrypt", "-in", $smcont,
164         "-aes256", "-stream", "-out", "test.cms",
165         catfile($smdir, "smrsa1.pem"),
166         catfile($smdir, "smrsa2.pem"),
167         catfile($smdir, "smrsa3.pem") ],
168       [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
169         "-in", "test.cms", "-out", "smtst.txt" ]
170     ],
171
172 );
173
174 my @smime_cms_tests = (
175
176     [ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid",
177       [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", "-keyid",
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", "DER",
184         "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
185     ],
186
187     [ "signed content test streaming PEM format, 2 DSA and 2 RSA keys",
188       [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
189         "-signer", catfile($smdir, "smrsa1.pem"),
190         "-signer", catfile($smdir, "smrsa2.pem"),
191         "-signer", catfile($smdir, "smdsa1.pem"),
192         "-signer", catfile($smdir, "smdsa2.pem"),
193         "-stream", "-out", "test.cms" ],
194       [ "-verify", "-in", "test.cms", "-inform", "PEM",
195         "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
196     ],
197
198     [ "signed content MIME format, RSA key, signed receipt request",
199       [ "-sign", "-in", $smcont, "-signer", catfile($smdir, "smrsa1.pem"), "-nodetach",
200         "-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
201         "-out", "test.cms" ],
202       [ "-verify", "-in", "test.cms",
203         "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
204     ],
205
206     [ "signed receipt MIME format, RSA key",
207       [ "-sign_receipt", "-in", "test.cms",
208         "-signer", catfile($smdir, "smrsa2.pem"),
209         "-out", "test2.cms" ],
210       [ "-verify_receipt", "test2.cms", "-in", "test.cms",
211         "-CAfile", catfile($smdir, "smroot.pem") ]
212     ],
213
214     [ "enveloped content test streaming S/MIME format, DES, 3 recipients, keyid",
215       [ "-encrypt", "-in", $smcont,
216         "-stream", "-out", "test.cms", "-keyid",
217         catfile($smdir, "smrsa1.pem"),
218         catfile($smdir, "smrsa2.pem"),
219         catfile($smdir, "smrsa3.pem") ],
220       [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
221         "-in", "test.cms", "-out", "smtst.txt" ]
222     ],
223
224     [ "enveloped content test streaming PEM format, KEK",
225       [ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
226         "-stream", "-out", "test.cms",
227         "-secretkey", "000102030405060708090A0B0C0D0E0F",
228         "-secretkeyid", "C0FEE0" ],
229       [ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
230         "-secretkey", "000102030405060708090A0B0C0D0E0F",
231         "-secretkeyid", "C0FEE0" ]
232     ],
233
234     [ "enveloped content test streaming PEM format, KEK, key only",
235       [ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
236         "-stream", "-out", "test.cms",
237         "-secretkey", "000102030405060708090A0B0C0D0E0F",
238         "-secretkeyid", "C0FEE0" ],
239       [ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
240         "-secretkey", "000102030405060708090A0B0C0D0E0F" ]
241     ],
242
243     [ "data content test streaming PEM format",
244       [ "-data_create", "-in", $smcont, "-outform", "PEM", "-nodetach",
245         "-stream", "-out", "test.cms" ],
246       [ "-data_out", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
247     ],
248
249     [ "encrypted content test streaming PEM format, 128 bit RC2 key",
250       [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
251         "-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
252         "-stream", "-out", "test.cms" ],
253       [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
254         "-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
255     ],
256
257     [ "encrypted content test streaming PEM format, 40 bit RC2 key",
258       [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
259         "-rc2", "-secretkey", "0001020304",
260         "-stream", "-out", "test.cms" ],
261       [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
262         "-secretkey", "0001020304", "-out", "smtst.txt" ]
263     ],
264
265     [ "encrypted content test streaming PEM format, triple DES key",
266       [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
267         "-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
268         "-stream", "-out", "test.cms" ],
269       [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
270         "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
271         "-out", "smtst.txt" ]
272     ],
273
274     [ "encrypted content test streaming PEM format, 128 bit AES key",
275       [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
276         "-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
277         "-stream", "-out", "test.cms" ],
278       [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
279         "-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
280     ],
281
282 );
283
284 my @smime_cms_comp_tests = (
285
286     [ "compressed content test streaming PEM format",
287       [ "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
288         "-stream", "-out", "test.cms" ],
289       [ "-uncompress", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
290     ]
291
292 );
293
294 my @smime_cms_param_tests = (
295     [ "signed content test streaming PEM format, RSA keys, PSS signature",
296       [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
297         "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
298         "-out", "test.cms" ],
299       [ "-verify", "-in", "test.cms", "-inform", "PEM",
300         "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
301     ],
302
303     [ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes",
304       [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr",
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, SHA384 MGF1",
312       [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
313         "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
314         "-keyopt", "rsa_mgf1_md:sha384", "-out", "test.cms" ],
315       [ "-verify", "-in", "test.cms", "-inform", "PEM",
316         "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
317     ],
318
319     [ "enveloped content test streaming S/MIME format, DES, OAEP default parameters",
320       [ "-encrypt", "-in", $smcont,
321         "-stream", "-out", "test.cms",
322         "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ],
323       [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
324         "-in", "test.cms", "-out", "smtst.txt" ]
325     ],
326
327     [ "enveloped content test streaming S/MIME format, DES, OAEP SHA256",
328       [ "-encrypt", "-in", $smcont,
329         "-stream", "-out", "test.cms",
330         "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep",
331         "-keyopt", "rsa_oaep_md:sha256" ],
332       [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
333         "-in", "test.cms", "-out", "smtst.txt" ]
334     ],
335
336     [ "enveloped content test streaming S/MIME format, DES, ECDH",
337       [ "-encrypt", "-in", $smcont,
338         "-stream", "-out", "test.cms",
339         "-recip", catfile($smdir, "smec1.pem") ],
340       [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
341         "-in", "test.cms", "-out", "smtst.txt" ]
342     ],
343
344     [ "enveloped content test streaming S/MIME format, ECDH, DES, key identifier",
345       [ "-encrypt", "-keyid", "-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, ECDH, AES128, SHA256 KDF",
353       [ "-encrypt", "-in", $smcont,
354         "-stream", "-out", "test.cms",
355         "-recip", catfile($smdir, "smec1.pem"), "-aes128", "-keyopt", "ecdh_kdf_md:sha256" ],
356       [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
357         "-in", "test.cms", "-out", "smtst.txt" ]
358     ],
359
360     [ "enveloped content test streaming S/MIME format, ECDH, K-283, cofactor DH",
361       [ "-encrypt", "-in", $smcont,
362         "-stream", "-out", "test.cms",
363         "-recip", catfile($smdir, "smec2.pem"), "-aes128",
364         "-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
365       [ "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
366         "-in", "test.cms", "-out", "smtst.txt" ]
367     ],
368
369     [ "enveloped content test streaming S/MIME format, X9.42 DH",
370       [ "-encrypt", "-in", $smcont,
371         "-stream", "-out", "test.cms",
372         "-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
373       [ "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
374         "-in", "test.cms", "-out", "smtst.txt" ]
375     ]
376     );
377
378 subtest "CMS => PKCS#7 compatibility tests\n" => sub {
379     plan tests => scalar @smime_pkcs7_tests;
380
381     foreach (@smime_pkcs7_tests) {
382       SKIP: {
383           my $skip_reason = check_availability($$_[0]);
384           skip $skip_reason, 1 if $skip_reason;
385
386           ok(run(app(["openssl", "cms", @{$$_[1]}]))
387              && run(app(["openssl", "smime", @{$$_[2]}]))
388              && compare_text($smcont, "smtst.txt") == 0,
389              $$_[0]);
390         }
391     }
392 };
393 subtest "CMS <= PKCS#7 compatibility tests\n" => sub {
394     plan tests => scalar @smime_pkcs7_tests;
395
396     foreach (@smime_pkcs7_tests) {
397       SKIP: {
398           my $skip_reason = check_availability($$_[0]);
399           skip $skip_reason, 1 if $skip_reason;
400
401           ok(run(app(["openssl", "smime", @{$$_[1]}]))
402              && run(app(["openssl", "cms", @{$$_[2]}]))
403              && compare_text($smcont, "smtst.txt") == 0,
404              $$_[0]);
405         }
406     }
407 };
408
409 subtest "CMS <=> CMS consistency tests\n" => sub {
410     plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests);
411
412     foreach (@smime_pkcs7_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     foreach (@smime_cms_tests) {
424       SKIP: {
425           my $skip_reason = check_availability($$_[0]);
426           skip $skip_reason, 1 if $skip_reason;
427
428           ok(run(app(["openssl", "cms", @{$$_[1]}]))
429              && run(app(["openssl", "cms", @{$$_[2]}]))
430              && compare_text($smcont, "smtst.txt") == 0,
431              $$_[0]);
432         }
433     }
434 };
435
436 subtest "CMS <=> CMS consistency tests, modified key parameters\n" => sub {
437     plan tests =>
438         (scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests);
439
440     foreach (@smime_cms_param_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   SKIP: {
453       skip("Zlib not supported: compression tests skipped",
454            scalar @smime_cms_comp_tests)
455           if $no_zlib;
456
457       foreach (@smime_cms_comp_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 };
470
471 unlink "test.cms";
472 unlink "test2.cms";
473 unlink "smtst.txt";
474
475 sub check_availability {
476     my $tnam = shift;
477
478     return "$tnam: skipped, EC disabled\n"
479         if ($no_ec && $tnam =~ /ECDH/);
480     return "$tnam: skipped, ECDH disabled\n"
481         if ($no_ec && $tnam =~ /ECDH/);
482     return "$tnam: skipped, EC2M disabled\n"
483         if ($no_ec2m && $tnam =~ /K-283/);
484     return "$tnam: skipped, DH disabled\n"
485         if ($no_dh && $tnam =~ /X9\.42/);
486     return "$tnam: skipped, RC2 disabled\n"
487         if ($no_rc2 && $tnam =~ /RC2/);
488     return "$tnam: skipped, DES disabled\n"
489         if ($no_des && $tnam =~ /DES/);
490     return "$tnam: skipped, DSA disabled\n"
491         if ($no_dsa && $tnam =~ / DSA/);
492
493     return "";
494 }