summaryrefslogtreecommitdiffstats
path: root/test/recipes/80-test_cms.t
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2020-02-14 08:34:40 +0100
committerRichard Levitte <levitte@openssl.org>2020-02-18 09:45:53 +0100
commit4b3327e70e1e97550a65a5d4aa26e017770e2214 (patch)
treead7bd3d6206917d5065f185cc327ffa246a2fd8a /test/recipes/80-test_cms.t
parent6469d60e63a8edd1e060be017dc39829e7b4cc8b (diff)
TEST: Modify test/recipes/80-test_cms.t to leave artifacts behind
Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/11080)
Diffstat (limited to 'test/recipes/80-test_cms.t')
-rw-r--r--test/recipes/80-test_cms.t731
1 files changed, 391 insertions, 340 deletions
diff --git a/test/recipes/80-test_cms.t b/test/recipes/80-test_cms.t
index 868affc545..ee227f3cdb 100644
--- a/test/recipes/80-test_cms.t
+++ b/test/recipes/80-test_cms.t
@@ -32,150 +32,170 @@ plan tests => 6;
my @smime_pkcs7_tests = (
[ "signed content DER format, RSA key",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
- "-certfile", catfile($smdir, "smroot.pem"),
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
+ "-certfile", catfile($smdir, "smroot.pem"),
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed detached content DER format, RSA key",
- [ "-sign", "-in", $smcont, "-outform", "DER",
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
- "-content", $smcont ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
+ "-content", $smcont ],
+ \&final_compare
],
[ "signed content test streaming BER format, RSA",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
- "-stream",
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
+ "-stream",
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content DER format, DSA key",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
- "-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
+ "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed detached content DER format, DSA key",
- [ "-sign", "-in", $smcont, "-outform", "DER",
- "-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
- "-content", $smcont ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
+ "-content", $smcont ],
+ \&final_compare
],
[ "signed detached content DER format, add RSA signer (with DSA existing)",
- [ "-resign", "-inform", "DER", "-in", "test.cms", "-outform", "DER",
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test2.cms" ],
- [ "-verify", "-in", "test2.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
- "-content", $smcont ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd1}", "-resign", "-in", "{output}.cms", "-inform", "DER", "-outform", "DER",
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}2.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}2.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
+ "-content", $smcont ],
+ \&final_compare
],
[ "signed content test streaming BER format, DSA key",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
- "-stream",
- "-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-nodetach", "-stream",
+ "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"),
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-signer", catfile($smdir, "smdsa1.pem"),
- "-signer", catfile($smdir, "smdsa2.pem"),
- "-stream", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-nodetach", "-stream",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-signer", catfile($smdir, "smrsa2.pem"),
+ "-signer", catfile($smdir, "smdsa1.pem"),
+ "-signer", catfile($smdir, "smdsa2.pem"),
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-noattr", "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"),
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-signer", catfile($smdir, "smdsa1.pem"),
- "-signer", catfile($smdir, "smdsa2.pem"),
- "-stream", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-noattr", "-nodetach", "-stream",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-signer", catfile($smdir, "smrsa2.pem"),
+ "-signer", catfile($smdir, "smdsa1.pem"),
+ "-signer", catfile($smdir, "smdsa2.pem"),
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content S/MIME format, RSA key SHA1",
- [ "-sign", "-in", $smcont, "-md", "sha1",
- "-certfile", catfile($smdir, "smroot.pem"),
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-md", "sha1",
+ "-certfile", catfile($smdir, "smroot.pem"),
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys",
- [ "-sign", "-in", $smcont, "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"),
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-signer", catfile($smdir, "smdsa1.pem"),
- "-signer", catfile($smdir, "smdsa2.pem"),
- "-stream", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-signer", catfile($smdir, "smrsa2.pem"),
+ "-signer", catfile($smdir, "smdsa1.pem"),
+ "-signer", catfile($smdir, "smdsa2.pem"),
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys",
- [ "-sign", "-in", $smcont,
- "-signer", catfile($smdir, "smrsa1.pem"),
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-signer", catfile($smdir, "smdsa1.pem"),
- "-signer", catfile($smdir, "smdsa2.pem"),
- "-stream", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont,
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-signer", catfile($smdir, "smrsa2.pem"),
+ "-signer", catfile($smdir, "smdsa1.pem"),
+ "-signer", catfile($smdir, "smdsa2.pem"),
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- catfile($smdir, "smrsa1.pem"),
- catfile($smdir, "smrsa2.pem"),
- catfile($smdir, "smrsa3.pem") ],
- [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ catfile($smdir, "smrsa1.pem"),
+ catfile($smdir, "smrsa2.pem"),
+ catfile($smdir, "smrsa3.pem") ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, 3rd used",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- catfile($smdir, "smrsa1.pem"),
- catfile($smdir, "smrsa2.pem"),
- catfile($smdir, "smrsa3.pem") ],
- [ "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ catfile($smdir, "smrsa1.pem"),
+ catfile($smdir, "smrsa2.pem"),
+ catfile($smdir, "smrsa3.pem") ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, key only used",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- catfile($smdir, "smrsa1.pem"),
- catfile($smdir, "smrsa2.pem"),
- catfile($smdir, "smrsa3.pem") ],
- [ "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ catfile($smdir, "smrsa1.pem"),
+ catfile($smdir, "smrsa2.pem"),
+ catfile($smdir, "smrsa3.pem") ],
+ [ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients",
- [ "-encrypt", "-in", $smcont,
- "-aes256", "-stream", "-out", "test.cms",
- catfile($smdir, "smrsa1.pem"),
- catfile($smdir, "smrsa2.pem"),
- catfile($smdir, "smrsa3.pem") ],
- [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-aes256", "-stream", "-out", "{output}.cms",
+ catfile($smdir, "smrsa1.pem"),
+ catfile($smdir, "smrsa2.pem"),
+ catfile($smdir, "smrsa3.pem") ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
);
@@ -183,125 +203,154 @@ my @smime_pkcs7_tests = (
my @smime_cms_tests = (
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid",
- [ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", "-keyid",
- "-signer", catfile($smdir, "smrsa1.pem"),
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-signer", catfile($smdir, "smdsa1.pem"),
- "-signer", catfile($smdir, "smdsa2.pem"),
- "-stream", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
+ "-nodetach", "-keyid",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-signer", catfile($smdir, "smrsa2.pem"),
+ "-signer", catfile($smdir, "smdsa1.pem"),
+ "-signer", catfile($smdir, "smdsa2.pem"),
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming PEM format, 2 DSA and 2 RSA keys",
- [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"),
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-signer", catfile($smdir, "smdsa1.pem"),
- "-signer", catfile($smdir, "smdsa2.pem"),
- "-stream", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "PEM",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-signer", catfile($smdir, "smrsa2.pem"),
+ "-signer", catfile($smdir, "smdsa1.pem"),
+ "-signer", catfile($smdir, "smdsa2.pem"),
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content MIME format, RSA key, signed receipt request",
- [ "-sign", "-in", $smcont, "-signer", catfile($smdir, "smrsa1.pem"), "-nodetach",
- "-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
- "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed receipt MIME format, RSA key",
- [ "-sign_receipt", "-in", "test.cms",
- "-signer", catfile($smdir, "smrsa2.pem"),
- "-out", "test2.cms" ],
- [ "-verify_receipt", "test2.cms", "-in", "test.cms",
- "-CAfile", catfile($smdir, "smroot.pem") ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
+ "-out", "{output}.cms" ],
+ [ "{cmd1}", "-sign_receipt", "-in", "{output}.cms",
+ "-signer", catfile($smdir, "smrsa2.pem"), "-out", "{output}2.cms" ],
+ [ "{cmd2}", "-verify_receipt", "{output}2.cms", "-in", "{output}.cms",
+ "-CAfile", catfile($smdir, "smroot.pem") ]
],
[ "signed content DER format, RSA key, CAdES-BES compatible",
- [ "-sign", "-cades", "-in", $smcont, "-outform", "DER", "-nodetach",
+ [ "{cmd1}", "-sign", "-cades", "-in", $smcont, "-outform", "DER",
+ "-nodetach",
"-certfile", catfile($smdir, "smroot.pem"),
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content DER format, RSA key, SHA256 md, CAdES-BES compatible",
- [ "-sign", "-cades", "-md", "sha256", "-in", $smcont, "-outform",
- "DER", "-nodetach", "-certfile", catfile($smdir, "smroot.pem"),
- "-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-cades", "-md", "sha256", "-in", $smcont,
+ "-outform", "DER", "-nodetach",
+ "-certfile", catfile($smdir, "smroot.pem"),
+ "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, keyid",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms", "-keyid",
- catfile($smdir, "smrsa1.pem"),
- catfile($smdir, "smrsa2.pem"),
- catfile($smdir, "smrsa3.pem") ],
- [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms", "-keyid",
+ catfile($smdir, "smrsa1.pem"),
+ catfile($smdir, "smrsa2.pem"),
+ catfile($smdir, "smrsa3.pem") ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming PEM format, KEK",
- [ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
- "-stream", "-out", "test.cms",
- "-secretkey", "000102030405060708090A0B0C0D0E0F",
- "-secretkeyid", "C0FEE0" ],
- [ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
- "-secretkey", "000102030405060708090A0B0C0D0E0F",
- "-secretkeyid", "C0FEE0" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
+ "-stream", "-out", "{output}.cms",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-secretkeyid", "C0FEE0" ],
+ [ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
+ "-inform", "PEM",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-secretkeyid", "C0FEE0" ],
+ \&final_compare
],
[ "enveloped content test streaming PEM format, KEK, key only",
- [ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
- "-stream", "-out", "test.cms",
- "-secretkey", "000102030405060708090A0B0C0D0E0F",
- "-secretkeyid", "C0FEE0" ],
- [ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
- "-secretkey", "000102030405060708090A0B0C0D0E0F" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
+ "-stream", "-out", "{output}.cms",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-secretkeyid", "C0FEE0" ],
+ [ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
+ "-inform", "PEM",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F" ],
+ \&final_compare
],
[ "data content test streaming PEM format",
- [ "-data_create", "-in", $smcont, "-outform", "PEM", "-nodetach",
- "-stream", "-out", "test.cms" ],
- [ "-data_out", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-data_create", "-in", $smcont, "-outform", "PEM",
+ "-nodetach", "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-data_out", "-in", "{output}.cms", "-inform", "PEM",
+ "-out", "{output}.txt" ],
+ \&final_compare
],
[ "encrypted content test streaming PEM format, 128 bit RC2 key",
- [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
- "-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
- "-stream", "-out", "test.cms" ],
- [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
- "-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
+ "-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
+ "-inform", "PEM",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-out", "{output}.txt" ],
+ \&final_compare
],
[ "encrypted content test streaming PEM format, 40 bit RC2 key",
- [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
- "-rc2", "-secretkey", "0001020304",
- "-stream", "-out", "test.cms" ],
- [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
- "-secretkey", "0001020304", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
+ "-rc2", "-secretkey", "0001020304",
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
+ "-inform", "PEM",
+ "-secretkey", "0001020304", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "encrypted content test streaming PEM format, triple DES key",
- [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
- "-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
- "-stream", "-out", "test.cms" ],
- [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
- "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
- "-out", "smtst.txt" ]
+ [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
+ "-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
+ "-inform", "PEM",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
+ "-out", "{output}.txt" ],
+ \&final_compare
],
[ "encrypted content test streaming PEM format, 128 bit AES key",
- [ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
- "-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
- "-stream", "-out", "test.cms" ],
- [ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
- "-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
+ "-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
+ "-inform", "PEM",
+ "-secretkey", "000102030405060708090A0B0C0D0E0F",
+ "-out", "{output}.txt" ],
+ \&final_compare
],
);
@@ -309,124 +358,149 @@ my @smime_cms_tests = (
my @smime_cms_comp_tests = (
[ "compressed content test streaming PEM format",
- [ "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
- "-stream", "-out", "test.cms" ],
- [ "-uncompress", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
+ "-stream", "-out", "{output}.cms" ],
+ [ "{cmd2}", "-uncompress", "-in", "{output}.cms", "-inform", "PEM",
+ "-out", "{output}.txt" ],
+ \&final_compare
]
);
my @smime_cms_param_tests = (
[ "signed content test streaming PEM format, RSA keys, PSS signature",
- [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
- "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "PEM",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-keyopt", "rsa_padding_mode:pss",
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming PEM format, RSA keys, PSS signature, saltlen=max",
- [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
- "-keyopt", "rsa_pss_saltlen:max", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "PEM",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_pss_saltlen:max",
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes",
- [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr",
- "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
- "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "PEM",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
+ "-noattr",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-keyopt", "rsa_padding_mode:pss",
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "signed content test streaming PEM format, RSA keys, PSS signature, SHA384 MGF1",
- [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
- "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
- "-keyopt", "rsa_mgf1_md:sha384", "-out", "test.cms" ],
- [ "-verify", "-in", "test.cms", "-inform", "PEM",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
+ "-signer", catfile($smdir, "smrsa1.pem"),
+ "-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_mgf1_md:sha384",
+ "-out", "{output}.cms" ],
+ [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, OAEP default parameters",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ],
- [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smrsa1.pem"),
+ "-keyopt", "rsa_padding_mode:oaep" ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, OAEP SHA256",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep",
- "-keyopt", "rsa_oaep_md:sha256" ],
- [ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smrsa1.pem"),
+ "-keyopt", "rsa_padding_mode:oaep",
+ "-keyopt", "rsa_oaep_md:sha256" ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, ECDH",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smec1.pem") ],
- [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smec1.pem") ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, ECDH, 2 recipients, key only used",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- catfile($smdir, "smec1.pem"),
- catfile($smdir, "smec3.pem") ],
- [ "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ catfile($smdir, "smec1.pem"),
+ catfile($smdir, "smec3.pem") ],
+ [ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, ECDH, DES, key identifier",
- [ "-encrypt", "-keyid", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smec1.pem") ],
- [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-keyid", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smec1.pem") ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smec1.pem"), "-aes128", "-keyopt", "ecdh_kdf_md:sha256" ],
- [ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smec1.pem"), "-aes128",
+ "-keyopt", "ecdh_kdf_md:sha256" ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, ECDH, K-283, cofactor DH",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smec2.pem"), "-aes128",
- "-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
- [ "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smec2.pem"), "-aes128",
+ "-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
],
[ "enveloped content test streaming S/MIME format, X9.42 DH",
- [ "-encrypt", "-in", $smcont,
- "-stream", "-out", "test.cms",
- "-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
- [ "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
- "-in", "test.cms", "-out", "smtst.txt" ]
+ [ "{cmd1}", "-encrypt", "-in", $smcont,
+ "-stream", "-out", "{output}.cms",
+ "-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
+ [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
+ "-in", "{output}.cms", "-out", "{output}.txt" ],
+ \&final_compare
]
);
my @contenttype_cms_test = (
[ "signed content test - check that content type is added to additional signerinfo, RSA keys",
- [ "-sign", "-binary", "-nodetach", "-stream", "-in", $smcont, "-outform", "DER",
+ [ "{cmd1}", "-sign", "-binary", "-nodetach", "-stream", "-in", $smcont,
+ "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-md", "SHA256",
- "-out", "test.cms" ],
- [ "-resign", "-binary", "-nodetach", "-in", "test.cms", "-inform", "DER", "-outform", "DER",
+ "-out", "{output}.cms" ],
+ [ "{cmd1}", "-resign", "-binary", "-nodetach", "-in", "{output}.cms",
+ "-inform", "DER", "-outform", "DER",
"-signer", catfile($smdir, "smrsa2.pem"), "-md", "SHA256",
- "-out", "test2.cms" ],
- [ "-verify", "-in", "test2.cms", "-inform", "DER",
- "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+ "-out", "{output}2.cms" ],
+ sub { my %opts = @_; contentType_matches("$opts{output}2.cms") == 2; },
+ [ "{cmd2}", "-verify", "-in", "{output}2.cms", "-inform", "DER",
+ "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ]
],
);
@@ -437,96 +511,85 @@ my @incorrect_attribute_cms_test = (
"ct_multiple_attr.cms"
);
-subtest "CMS => PKCS#7 compatibility tests\n" => sub {
- plan tests => scalar @smime_pkcs7_tests;
+# Runs a standard loop on the input array
+sub runner_loop {
+ my %opts = ( @_ );
+ my $cnt1 = 0;
- foreach (@smime_pkcs7_tests) {
+ foreach (@{$opts{tests}}) {
+ $cnt1++;
+ $opts{output} = "$opts{prefix}-$cnt1";
SKIP: {
- my $skip_reason = check_availability($$_[0]);
- skip $skip_reason, 1 if $skip_reason;
-
- ok(run(app(["openssl", "cms", @{$$_[1]}]))
- && run(app(["openssl", "smime", @{$$_[2]}]))
- && compare_text($smcont, "smtst.txt") == 0,
- $$_[0]);
- }
+ my $skip_reason = check_availability($$_[0]);
+ skip $skip_reason, 1 if $skip_reason;
+ my $ok = 1;
+ 1 while unlink "$opts{output}.txt";
+
+ foreach (@$_[1..$#$_]) {
+ if (ref $_ eq 'CODE') {
+ $ok &&= $_->(%opts);
+ } else {
+ my @cmd = map {
+ my $x = $_;
+ while ($x =~ /\{([^\}]+)\}/) {
+ $x = $`.$opts{$1}.$' if exists $opts{$1};
+ }
+ $x;
+ } @$_;
+
+ diag "CMD: openssl", join(" ", @cmd);
+ $ok &&= run(app(["openssl", @cmd]));
+ $opts{input} = $opts{output};
+ }
+ }
+
+ ok($ok, $$_[0]);
+ }
}
+}
+
+sub final_compare {
+ my %opts = @_;
+
+ diag "Comparing $smcont with $opts{output}.txt";
+ return compare_text($smcont, "$opts{output}.txt") == 0;
+}
+
+subtest "CMS => PKCS#7 compatibility tests\n" => sub {
+ plan tests => scalar @smime_pkcs7_tests;
+
+ runner_loop(prefix => 'cms2pkcs7', cmd1 => 'cms', cmd2 => 'smime',
+ tests => [ @smime_pkcs7_tests ]);
};
subtest "CMS <= PKCS#7 compatibility tests\n" => sub {
plan tests => scalar @smime_pkcs7_tests;
- foreach (@smime_pkcs7_tests) {
- SKIP: {
- my $skip_reason = check_availability($$_[0]);
- skip $skip_reason, 1 if $skip_reason;
-
- ok(run(app(["openssl", "smime", @{$$_[1]}]))
- && run(app(["openssl", "cms", @{$$_[2]}]))
- && compare_text($smcont, "smtst.txt") == 0,
- $$_[0]);
- }
- }
+ runner_loop(prefix => 'pkcs72cms', cmd1 => 'smime', cmd2 => 'cms',
+ tests => [ @smime_pkcs7_tests ]);
};
subtest "CMS <=> CMS consistency tests\n" => sub {
plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests);
- foreach (@smime_pkcs7_tests) {
- SKIP: {
- my $skip_reason = check_availability($$_[0]);
- skip $skip_reason, 1 if $skip_reason;
-
- ok(run(app(["openssl", "cms", @{$$_[1]}]))
- && run(app(["openssl", "cms", @{$$_[2]}]))
- && compare_text($smcont, "smtst.txt") == 0,
- $$_[0]);
- }
- }
- foreach (@smime_cms_tests) {
- SKIP: {
- my $skip_reason = check_availability($$_[0]);
- skip $skip_reason, 1 if $skip_reason;
-
- ok(run(app(["openssl", "cms", @{$$_[1]}]))
- && run(app(["openssl", "cms", @{$$_[2]}]))
- && compare_text($smcont, "smtst.txt") == 0,