4
0
mirror of https://github.com/QuasarApp/openssl.git synced 2025-04-29 19:24:37 +00:00

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)
This commit is contained in:
Richard Levitte 2020-02-14 08:34:40 +01:00
parent 6469d60e63
commit 4b3327e70e

@ -32,150 +32,170 @@ plan tests => 6;
my @smime_pkcs7_tests = ( my @smime_pkcs7_tests = (
[ "signed content DER format, RSA key", [ "signed content DER format, RSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-certfile", catfile($smdir, "smroot.pem"), "-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed detached content DER format, RSA key", [ "signed detached content DER format, RSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt", "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
"-content", $smcont ] "-content", $smcont ],
\&final_compare
], ],
[ "signed content test streaming BER format, RSA", [ "signed content test streaming BER format, RSA",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-stream", "-stream",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed content DER format, DSA key", [ "signed content DER format, DSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed detached content DER format, DSA key", [ "signed detached content DER format, DSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt", "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
"-content", $smcont ] "-content", $smcont ],
\&final_compare
], ],
[ "signed detached content DER format, add RSA signer (with DSA existing)", [ "signed detached content DER format, add RSA signer (with DSA existing)",
[ "-resign", "-inform", "DER", "-in", "test.cms", "-outform", "DER", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test2.cms" ], "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test2.cms", "-inform", "DER", [ "{cmd1}", "-resign", "-in", "{output}.cms", "-inform", "DER", "-outform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt", "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}2.cms" ],
"-content", $smcont ] [ "{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", [ "signed content test streaming BER format, DSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-stream", "-nodetach", "-stream",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys", [ "signed content test streaming BER format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-nodetach", "-stream",
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smdsa1.pem"), "-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa2.pem"), "-signer", catfile($smdir, "smdsa1.pem"),
"-stream", "-out", "test.cms" ], "-signer", catfile($smdir, "smdsa2.pem"),
[ "-verify", "-in", "test.cms", "-inform", "DER", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes",
[ "-sign", "-in", $smcont, "-outform", "DER", "-noattr", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-noattr", "-nodetach", "-stream",
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smdsa1.pem"), "-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa2.pem"), "-signer", catfile($smdir, "smdsa1.pem"),
"-stream", "-out", "test.cms" ], "-signer", catfile($smdir, "smdsa2.pem"),
[ "-verify", "-in", "test.cms", "-inform", "DER", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "signed content S/MIME format, RSA key SHA1",
[ "-sign", "-in", $smcont, "-md", "sha1", [ "{cmd1}", "-sign", "-in", $smcont, "-md", "sha1",
"-certfile", catfile($smdir, "smroot.pem"), "-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", [ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys", [ "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"), "-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"), "-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", [ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys", [ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, [ "{cmd1}", "-sign", "-in", $smcont,
"-signer", catfile($smdir, "smrsa1.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"), "-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"), "-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", [ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients", [ "enveloped content test streaming S/MIME format, DES, 3 recipients",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"), catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"), catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ], catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, 3rd used", [ "enveloped content test streaming S/MIME format, DES, 3 recipients, 3rd used",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"), catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"), catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ], catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, key only used", [ "enveloped content test streaming S/MIME format, DES, 3 recipients, key only used",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"), catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"), catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ], catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"), [ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients", [ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-aes256", "-stream", "-out", "test.cms", "-aes256", "-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"), catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"), catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ], catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
); );
@ -183,125 +203,154 @@ my @smime_pkcs7_tests = (
my @smime_cms_tests = ( my @smime_cms_tests = (
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid", [ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", "-keyid", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-nodetach", "-keyid",
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smdsa1.pem"), "-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa2.pem"), "-signer", catfile($smdir, "smdsa1.pem"),
"-stream", "-out", "test.cms" ], "-signer", catfile($smdir, "smdsa2.pem"),
[ "-verify", "-in", "test.cms", "-inform", "DER", "-stream", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "signed content test streaming PEM format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"), "-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"), "-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "PEM", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed content MIME format, RSA key, signed receipt request", [ "signed content MIME format, RSA key, signed receipt request",
[ "-sign", "-in", $smcont, "-signer", catfile($smdir, "smrsa1.pem"), "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all", "-signer", catfile($smdir, "smrsa1.pem"),
"-out", "test.cms" ], "-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
[ "-verify", "-in", "test.cms", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed receipt MIME format, RSA key", [ "signed receipt MIME format, RSA key",
[ "-sign_receipt", "-in", "test.cms", [ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
"-signer", catfile($smdir, "smrsa2.pem"), "-signer", catfile($smdir, "smrsa1.pem"),
"-out", "test2.cms" ], "-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
[ "-verify_receipt", "test2.cms", "-in", "test.cms", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem") ] [ "{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", [ "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"), "-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER", [ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
], ],
[ "signed content DER format, RSA key, SHA256 md, CAdES-BES compatible", [ "signed content DER format, RSA key, SHA256 md, CAdES-BES compatible",
[ "-sign", "-cades", "-md", "sha256", "-in", $smcont, "-outform", [ "{cmd1}", "-sign", "-cades", "-md", "sha256", "-in", $smcont,
"DER", "-nodetach", "-certfile", catfile($smdir, "smroot.pem"), "-outform", "DER", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ], "-certfile", catfile($smdir, "smroot.pem"),
[ "-verify", "-in", "test.cms", "-inform", "DER", "-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "enveloped content test streaming S/MIME format, DES, 3 recipients, keyid",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-keyid", "-stream", "-out", "{output}.cms", "-keyid",
catfile($smdir, "smrsa1.pem"), catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"), catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ], catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming PEM format, KEK", [ "enveloped content test streaming PEM format, KEK",
[ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128", [ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ], "-secretkeyid", "C0FEE0" ],
[ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM", [ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-inform", "PEM",
"-secretkeyid", "C0FEE0" ] "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ],
\&final_compare
], ],
[ "enveloped content test streaming PEM format, KEK, key only", [ "enveloped content test streaming PEM format, KEK, key only",
[ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128", [ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ], "-secretkeyid", "C0FEE0" ],
[ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM", [ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
"-secretkey", "000102030405060708090A0B0C0D0E0F" ] "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F" ],
\&final_compare
], ],
[ "data content test streaming PEM format", [ "data content test streaming PEM format",
[ "-data_create", "-in", $smcont, "-outform", "PEM", "-nodetach", [ "{cmd1}", "-data_create", "-in", $smcont, "-outform", "PEM",
"-stream", "-out", "test.cms" ], "-nodetach", "-stream", "-out", "{output}.cms" ],
[ "-data_out", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ] [ "{cmd2}", "-data_out", "-in", "{output}.cms", "-inform", "PEM",
"-out", "{output}.txt" ],
\&final_compare
], ],
[ "encrypted content test streaming PEM format, 128 bit RC2 key", [ "encrypted content test streaming PEM format, 128 bit RC2 key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F", "-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ] "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-out", "{output}.txt" ],
\&final_compare
], ],
[ "encrypted content test streaming PEM format, 40 bit RC2 key", [ "encrypted content test streaming PEM format, 40 bit RC2 key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-rc2", "-secretkey", "0001020304", "-rc2", "-secretkey", "0001020304",
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-secretkey", "0001020304", "-out", "smtst.txt" ] "-inform", "PEM",
"-secretkey", "0001020304", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "encrypted content test streaming PEM format, triple DES key", [ "encrypted content test streaming PEM format, triple DES key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617", "-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617", "-inform", "PEM",
"-out", "smtst.txt" ] "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
"-out", "{output}.txt" ],
\&final_compare
], ],
[ "encrypted content test streaming PEM format, 128 bit AES key", [ "encrypted content test streaming PEM format, 128 bit AES key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM", [ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F", "-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM", [ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ] "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-out", "{output}.txt" ],
\&final_compare
], ],
); );
@ -309,124 +358,149 @@ my @smime_cms_tests = (
my @smime_cms_comp_tests = ( my @smime_cms_comp_tests = (
[ "compressed content test streaming PEM format", [ "compressed content test streaming PEM format",
[ "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach", [ "{cmd1}", "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-stream", "-out", "test.cms" ], "-stream", "-out", "{output}.cms" ],
[ "-uncompress", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ] [ "{cmd2}", "-uncompress", "-in", "{output}.cms", "-inform", "PEM",
"-out", "{output}.txt" ],
\&final_compare
] ]
); );
my @smime_cms_param_tests = ( my @smime_cms_param_tests = (
[ "signed content test streaming PEM format, RSA keys, PSS signature", [ "signed content test streaming PEM format, RSA keys, PSS signature",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", "-signer", catfile($smdir, "smrsa1.pem"),
"-out", "test.cms" ], "-keyopt", "rsa_padding_mode:pss",
[ "-verify", "-in", "test.cms", "-inform", "PEM", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "signed content test streaming PEM format, RSA keys, PSS signature, saltlen=max",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", "-signer", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_pss_saltlen:max", "-out", "test.cms" ], "-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_pss_saltlen:max",
[ "-verify", "-in", "test.cms", "-inform", "PEM", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", "-noattr",
"-out", "test.cms" ], "-signer", catfile($smdir, "smrsa1.pem"),
[ "-verify", "-in", "test.cms", "-inform", "PEM", "-keyopt", "rsa_padding_mode:pss",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] "-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", [ "signed content test streaming PEM format, RSA keys, PSS signature, SHA384 MGF1",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", [ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss", "-signer", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_mgf1_md:sha384", "-out", "test.cms" ], "-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_mgf1_md:sha384",
[ "-verify", "-in", "test.cms", "-inform", "PEM", "-out", "{output}.cms" ],
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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", [ "enveloped content test streaming S/MIME format, DES, OAEP default parameters",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ], "-recip", catfile($smdir, "smrsa1.pem"),
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ],
"-in", "test.cms", "-out", "smtst.txt" ] [ "{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", [ "enveloped content test streaming S/MIME format, DES, OAEP SHA256",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep", "-recip", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_oaep_md:sha256" ], "-keyopt", "rsa_padding_mode:oaep",
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_oaep_md:sha256" ],
"-in", "test.cms", "-out", "smtst.txt" ] [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, DES, ECDH", [ "enveloped content test streaming S/MIME format, DES, ECDH",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec1.pem") ], "-recip", catfile($smdir, "smec1.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, DES, ECDH, 2 recipients, key only used", [ "enveloped content test streaming S/MIME format, DES, ECDH, 2 recipients, key only used",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
catfile($smdir, "smec1.pem"), catfile($smdir, "smec1.pem"),
catfile($smdir, "smec3.pem") ], catfile($smdir, "smec3.pem") ],
[ "-decrypt", "-inkey", catfile($smdir, "smec3.pem"), [ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, ECDH, DES, key identifier", [ "enveloped content test streaming S/MIME format, ECDH, DES, key identifier",
[ "-encrypt", "-keyid", "-in", $smcont, [ "{cmd1}", "-encrypt", "-keyid", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec1.pem") ], "-recip", catfile($smdir, "smec1.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF", [ "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec1.pem"), "-aes128", "-keyopt", "ecdh_kdf_md:sha256" ], "-recip", catfile($smdir, "smec1.pem"), "-aes128",
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"), "-keyopt", "ecdh_kdf_md:sha256" ],
"-in", "test.cms", "-out", "smtst.txt" ] [ "{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", [ "enveloped content test streaming S/MIME format, ECDH, K-283, cofactor DH",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec2.pem"), "-aes128", "-recip", catfile($smdir, "smec2.pem"), "-aes128",
"-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ], "-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
[ "-decrypt", "-recip", catfile($smdir, "smec2.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
], ],
[ "enveloped content test streaming S/MIME format, X9.42 DH", [ "enveloped content test streaming S/MIME format, X9.42 DH",
[ "-encrypt", "-in", $smcont, [ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smdh.pem"), "-aes128" ], "-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
[ "-decrypt", "-recip", catfile($smdir, "smdh.pem"), [ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
"-in", "test.cms", "-out", "smtst.txt" ] "-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
] ]
); );
my @contenttype_cms_test = ( my @contenttype_cms_test = (
[ "signed content test - check that content type is added to additional signerinfo, RSA keys", [ "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", "-signer", catfile($smdir, "smrsa1.pem"), "-md", "SHA256",
"-out", "test.cms" ], "-out", "{output}.cms" ],
[ "-resign", "-binary", "-nodetach", "-in", "test.cms", "-inform", "DER", "-outform", "DER", [ "{cmd1}", "-resign", "-binary", "-nodetach", "-in", "{output}.cms",
"-inform", "DER", "-outform", "DER",
"-signer", catfile($smdir, "smrsa2.pem"), "-md", "SHA256", "-signer", catfile($smdir, "smrsa2.pem"), "-md", "SHA256",
"-out", "test2.cms" ], "-out", "{output}2.cms" ],
[ "-verify", "-in", "test2.cms", "-inform", "DER", sub { my %opts = @_; contentType_matches("$opts{output}2.cms") == 2; },
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ] [ "{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" "ct_multiple_attr.cms"
); );
# Runs a standard loop on the input array
sub runner_loop {
my %opts = ( @_ );
my $cnt1 = 0;
foreach (@{$opts{tests}}) {
$cnt1++;
$opts{output} = "$opts{prefix}-$cnt1";
SKIP: {
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 { subtest "CMS => PKCS#7 compatibility tests\n" => sub {
plan tests => scalar @smime_pkcs7_tests; plan tests => scalar @smime_pkcs7_tests;
foreach (@smime_pkcs7_tests) { runner_loop(prefix => 'cms2pkcs7', cmd1 => 'cms', cmd2 => 'smime',
SKIP: { tests => [ @smime_pkcs7_tests ]);
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]);
}
}
}; };
subtest "CMS <= PKCS#7 compatibility tests\n" => sub { subtest "CMS <= PKCS#7 compatibility tests\n" => sub {
plan tests => scalar @smime_pkcs7_tests; plan tests => scalar @smime_pkcs7_tests;
foreach (@smime_pkcs7_tests) { runner_loop(prefix => 'pkcs72cms', cmd1 => 'smime', cmd2 => 'cms',
SKIP: { tests => [ @smime_pkcs7_tests ]);
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]);
}
}
}; };
subtest "CMS <=> CMS consistency tests\n" => sub { subtest "CMS <=> CMS consistency tests\n" => sub {
plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests); plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests);
foreach (@smime_pkcs7_tests) { runner_loop(prefix => 'cms2cms-1', cmd1 => 'cms', cmd2 => 'cms',
SKIP: { tests => [ @smime_pkcs7_tests ]);
my $skip_reason = check_availability($$_[0]); runner_loop(prefix => 'cms2cms-2', cmd1 => 'cms', cmd2 => 'cms',
skip $skip_reason, 1 if $skip_reason; tests => [ @smime_cms_tests ]);
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,
$$_[0]);
}
}
}; };
subtest "CMS <=> CMS consistency tests, modified key parameters\n" => sub { subtest "CMS <=> CMS consistency tests, modified key parameters\n" => sub {
plan tests => plan tests =>
(scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests); (scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests);
foreach (@smime_cms_param_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]);
}
}
runner_loop(prefix => 'cms2cms-mod', cmd1 => 'cms', cmd2 => 'cms',
tests => [ @smime_cms_param_tests ]);
SKIP: { SKIP: {
skip("Zlib not supported: compression tests skipped", skip("Zlib not supported: compression tests skipped",
scalar @smime_cms_comp_tests) scalar @smime_cms_comp_tests)
if $no_zlib; if $no_zlib;
foreach (@smime_cms_comp_tests) { runner_loop(prefix => 'cms2cms-comp', cmd1 => 'cms', cmd2 => 'cms',
SKIP: { tests => [ @smime_cms_comp_tests ]);
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]);
}
}
} }
}; };
@ -547,39 +610,27 @@ sub contentType_matches {
} }
subtest "CMS Check the content type attribute is added for additional signers\n" => sub { subtest "CMS Check the content type attribute is added for additional signers\n" => sub {
plan tests => plan tests => (scalar @contenttype_cms_test);
(scalar @contenttype_cms_test);
foreach (@contenttype_cms_test) { runner_loop(prefix => 'cms2cms-added', cmd1 => 'cms', cmd2 => 'cms',
SKIP: { tests => [ @contenttype_cms_test ]);
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& contentType_matches("test2.cms") == 2
&& run(app(["openssl", "cms", @{$$_[3]}])),
$$_[0]);
}
}
}; };
subtest "CMS Check that bad attributes fail when verifying signers\n" => sub { subtest "CMS Check that bad attributes fail when verifying signers\n" => sub {
plan tests => plan tests =>
(scalar @incorrect_attribute_cms_test); (scalar @incorrect_attribute_cms_test);
my $cnt = 0;
foreach my $name (@incorrect_attribute_cms_test) { foreach my $name (@incorrect_attribute_cms_test) {
my $out = "incorrect-$cnt.txt";
ok(!run(app(["openssl", "cms", "-verify", "-in", ok(!run(app(["openssl", "cms", "-verify", "-in",
catfile($datadir, $name), "-inform", "DER", "-CAfile", catfile($datadir, $name), "-inform", "DER", "-CAfile",
catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ])), catfile($smdir, "smroot.pem"), "-out", $out ])),
$name); $name);
} }
}; };
unlink "test.cms";
unlink "test2.cms";
unlink "smtst.txt";
sub check_availability { sub check_availability {
my $tnam = shift; my $tnam = shift;