1ebfedea0SLionel Sambuc# test/cms-test.pl 2ebfedea0SLionel Sambuc# Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 3ebfedea0SLionel Sambuc# project. 4ebfedea0SLionel Sambuc# 5ebfedea0SLionel Sambuc# ==================================================================== 6ebfedea0SLionel Sambuc# Copyright (c) 2008 The OpenSSL Project. All rights reserved. 7ebfedea0SLionel Sambuc# 8ebfedea0SLionel Sambuc# Redistribution and use in source and binary forms, with or without 9ebfedea0SLionel Sambuc# modification, are permitted provided that the following conditions 10ebfedea0SLionel Sambuc# are met: 11ebfedea0SLionel Sambuc# 12ebfedea0SLionel Sambuc# 1. Redistributions of source code must retain the above copyright 13ebfedea0SLionel Sambuc# notice, this list of conditions and the following disclaimer. 14ebfedea0SLionel Sambuc# 15ebfedea0SLionel Sambuc# 2. Redistributions in binary form must reproduce the above copyright 16ebfedea0SLionel Sambuc# notice, this list of conditions and the following disclaimer in 17ebfedea0SLionel Sambuc# the documentation and/or other materials provided with the 18ebfedea0SLionel Sambuc# distribution. 19ebfedea0SLionel Sambuc# 20ebfedea0SLionel Sambuc# 3. All advertising materials mentioning features or use of this 21ebfedea0SLionel Sambuc# software must display the following acknowledgment: 22ebfedea0SLionel Sambuc# "This product includes software developed by the OpenSSL Project 23ebfedea0SLionel Sambuc# for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24ebfedea0SLionel Sambuc# 25ebfedea0SLionel Sambuc# 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26ebfedea0SLionel Sambuc# endorse or promote products derived from this software without 27ebfedea0SLionel Sambuc# prior written permission. For written permission, please contact 28ebfedea0SLionel Sambuc# licensing@OpenSSL.org. 29ebfedea0SLionel Sambuc# 30ebfedea0SLionel Sambuc# 5. Products derived from this software may not be called "OpenSSL" 31ebfedea0SLionel Sambuc# nor may "OpenSSL" appear in their names without prior written 32ebfedea0SLionel Sambuc# permission of the OpenSSL Project. 33ebfedea0SLionel Sambuc# 34ebfedea0SLionel Sambuc# 6. Redistributions of any form whatsoever must retain the following 35ebfedea0SLionel Sambuc# acknowledgment: 36ebfedea0SLionel Sambuc# "This product includes software developed by the OpenSSL Project 37ebfedea0SLionel Sambuc# for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38ebfedea0SLionel Sambuc# 39ebfedea0SLionel Sambuc# THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40ebfedea0SLionel Sambuc# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41ebfedea0SLionel Sambuc# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42ebfedea0SLionel Sambuc# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43ebfedea0SLionel Sambuc# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44ebfedea0SLionel Sambuc# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45ebfedea0SLionel Sambuc# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46ebfedea0SLionel Sambuc# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47ebfedea0SLionel Sambuc# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48ebfedea0SLionel Sambuc# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49ebfedea0SLionel Sambuc# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50ebfedea0SLionel Sambuc# OF THE POSSIBILITY OF SUCH DAMAGE. 51ebfedea0SLionel Sambuc# ==================================================================== 52ebfedea0SLionel Sambuc 53ebfedea0SLionel Sambuc# CMS, PKCS7 consistency test script. Run extensive tests on 54ebfedea0SLionel Sambuc# OpenSSL PKCS#7 and CMS implementations. 55ebfedea0SLionel Sambuc 56ebfedea0SLionel Sambucmy $ossl_path; 57ebfedea0SLionel Sambucmy $redir = " 2> cms.err > cms.out"; 58ebfedea0SLionel Sambuc# Make VMS work 59ebfedea0SLionel Sambucif ( $^O eq "VMS" && -f "OSSLX:openssl.exe" ) { 60ebfedea0SLionel Sambuc $ossl_path = "pipe mcr OSSLX:openssl"; 61ebfedea0SLionel Sambuc} 62ebfedea0SLionel Sambuc# Make MSYS work 63ebfedea0SLionel Sambucelsif ( $^O eq "MSWin32" && -f "../apps/openssl.exe" ) { 64ebfedea0SLionel Sambuc $ossl_path = "cmd /c ..\\apps\\openssl"; 65ebfedea0SLionel Sambuc} 66ebfedea0SLionel Sambucelsif ( -f "../apps/openssl$ENV{EXE_EXT}" ) { 67ebfedea0SLionel Sambuc $ossl_path = "../util/shlib_wrap.sh ../apps/openssl"; 68ebfedea0SLionel Sambuc} 69ebfedea0SLionel Sambucelsif ( -f "..\\out32dll\\openssl.exe" ) { 70ebfedea0SLionel Sambuc $ossl_path = "..\\out32dll\\openssl.exe"; 71ebfedea0SLionel Sambuc} 72ebfedea0SLionel Sambucelsif ( -f "..\\out32\\openssl.exe" ) { 73ebfedea0SLionel Sambuc $ossl_path = "..\\out32\\openssl.exe"; 74ebfedea0SLionel Sambuc} 75ebfedea0SLionel Sambucelse { 76ebfedea0SLionel Sambuc die "Can't find OpenSSL executable"; 77ebfedea0SLionel Sambuc} 78ebfedea0SLionel Sambuc 79ebfedea0SLionel Sambucmy $pk7cmd = "$ossl_path smime "; 80ebfedea0SLionel Sambucmy $cmscmd = "$ossl_path cms "; 81ebfedea0SLionel Sambucmy $smdir = "smime-certs"; 82ebfedea0SLionel Sambucmy $halt_err = 1; 83ebfedea0SLionel Sambuc 84ebfedea0SLionel Sambucmy $badcmd = 0; 85ebfedea0SLionel Sambucmy $ossl8 = `$ossl_path version -v` =~ /0\.9\.8/; 86ebfedea0SLionel Sambuc 87ebfedea0SLionel Sambucmy @smime_pkcs7_tests = ( 88ebfedea0SLionel Sambuc 89ebfedea0SLionel Sambuc [ 90ebfedea0SLionel Sambuc "signed content DER format, RSA key", 91ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -nodetach" 92ebfedea0SLionel Sambuc . " -certfile $smdir/smroot.pem" 93ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -out test.cms", 94ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 95ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 96ebfedea0SLionel Sambuc ], 97ebfedea0SLionel Sambuc 98ebfedea0SLionel Sambuc [ 99ebfedea0SLionel Sambuc "signed detached content DER format, RSA key", 100ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\"" 101ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -out test.cms", 102ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 103ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt -content smcont.txt" 104ebfedea0SLionel Sambuc ], 105ebfedea0SLionel Sambuc 106ebfedea0SLionel Sambuc [ 107ebfedea0SLionel Sambuc "signed content test streaming BER format, RSA", 108ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -nodetach" 109ebfedea0SLionel Sambuc . " -stream -signer $smdir/smrsa1.pem -out test.cms", 110ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 111ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 112ebfedea0SLionel Sambuc ], 113ebfedea0SLionel Sambuc 114ebfedea0SLionel Sambuc [ 115ebfedea0SLionel Sambuc "signed content DER format, DSA key", 116ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -nodetach" 117ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -out test.cms", 118ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 119ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 120ebfedea0SLionel Sambuc ], 121ebfedea0SLionel Sambuc 122ebfedea0SLionel Sambuc [ 123ebfedea0SLionel Sambuc "signed detached content DER format, DSA key", 124ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\"" 125ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -out test.cms", 126ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 127ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt -content smcont.txt" 128ebfedea0SLionel Sambuc ], 129ebfedea0SLionel Sambuc 130ebfedea0SLionel Sambuc [ 131ebfedea0SLionel Sambuc "signed detached content DER format, add RSA signer", 132ebfedea0SLionel Sambuc "-resign -inform \"DER\" -in test.cms -outform \"DER\"" 133ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -out test2.cms", 134ebfedea0SLionel Sambuc "-verify -in test2.cms -inform \"DER\" " 135ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt -content smcont.txt" 136ebfedea0SLionel Sambuc ], 137ebfedea0SLionel Sambuc 138ebfedea0SLionel Sambuc [ 139ebfedea0SLionel Sambuc "signed content test streaming BER format, DSA key", 140ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -nodetach" 141ebfedea0SLionel Sambuc . " -stream -signer $smdir/smdsa1.pem -out test.cms", 142ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 143ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 144ebfedea0SLionel Sambuc ], 145ebfedea0SLionel Sambuc 146ebfedea0SLionel Sambuc [ 147ebfedea0SLionel Sambuc "signed content test streaming BER format, 2 DSA and 2 RSA keys", 148ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -nodetach" 149ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem" 150ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem" 151ebfedea0SLionel Sambuc . " -stream -out test.cms", 152ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 153ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 154ebfedea0SLionel Sambuc ], 155ebfedea0SLionel Sambuc 156ebfedea0SLionel Sambuc [ 157ebfedea0SLionel Sambuc"signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes", 158ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -noattr -nodetach" 159ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem" 160ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem" 161ebfedea0SLionel Sambuc . " -stream -out test.cms", 162ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 163ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 164ebfedea0SLionel Sambuc ], 165ebfedea0SLionel Sambuc 166ebfedea0SLionel Sambuc [ 167ebfedea0SLionel Sambuc "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys", 168ebfedea0SLionel Sambuc "-sign -in smcont.txt -nodetach" 169ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem" 170ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem" 171ebfedea0SLionel Sambuc . " -stream -out test.cms", 172ebfedea0SLionel Sambuc "-verify -in test.cms " . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 173ebfedea0SLionel Sambuc ], 174ebfedea0SLionel Sambuc 175ebfedea0SLionel Sambuc [ 176ebfedea0SLionel Sambuc"signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys", 177ebfedea0SLionel Sambuc "-sign -in smcont.txt" 178ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem" 179ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem" 180ebfedea0SLionel Sambuc . " -stream -out test.cms", 181ebfedea0SLionel Sambuc "-verify -in test.cms " . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 182ebfedea0SLionel Sambuc ], 183ebfedea0SLionel Sambuc 184ebfedea0SLionel Sambuc [ 185ebfedea0SLionel Sambuc "enveloped content test streaming S/MIME format, 3 recipients", 186ebfedea0SLionel Sambuc "-encrypt -in smcont.txt" 187ebfedea0SLionel Sambuc . " -stream -out test.cms" 188ebfedea0SLionel Sambuc . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ", 189ebfedea0SLionel Sambuc "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt" 190ebfedea0SLionel Sambuc ], 191ebfedea0SLionel Sambuc 192ebfedea0SLionel Sambuc [ 193ebfedea0SLionel Sambuc"enveloped content test streaming S/MIME format, 3 recipients, 3rd used", 194ebfedea0SLionel Sambuc "-encrypt -in smcont.txt" 195ebfedea0SLionel Sambuc . " -stream -out test.cms" 196ebfedea0SLionel Sambuc . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ", 197ebfedea0SLionel Sambuc "-decrypt -recip $smdir/smrsa3.pem -in test.cms -out smtst.txt" 198ebfedea0SLionel Sambuc ], 199ebfedea0SLionel Sambuc 200ebfedea0SLionel Sambuc [ 201ebfedea0SLionel Sambuc"enveloped content test streaming S/MIME format, 3 recipients, key only used", 202ebfedea0SLionel Sambuc "-encrypt -in smcont.txt" 203ebfedea0SLionel Sambuc . " -stream -out test.cms" 204ebfedea0SLionel Sambuc . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ", 205ebfedea0SLionel Sambuc "-decrypt -inkey $smdir/smrsa3.pem -in test.cms -out smtst.txt" 206ebfedea0SLionel Sambuc ], 207ebfedea0SLionel Sambuc 208ebfedea0SLionel Sambuc [ 209ebfedea0SLionel Sambuc"enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients", 210ebfedea0SLionel Sambuc "-encrypt -in smcont.txt" 211ebfedea0SLionel Sambuc . " -aes256 -stream -out test.cms" 212ebfedea0SLionel Sambuc . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ", 213ebfedea0SLionel Sambuc "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt" 214ebfedea0SLionel Sambuc ], 215ebfedea0SLionel Sambuc 216ebfedea0SLionel Sambuc); 217ebfedea0SLionel Sambuc 218ebfedea0SLionel Sambucmy @smime_cms_tests = ( 219ebfedea0SLionel Sambuc 220ebfedea0SLionel Sambuc [ 221ebfedea0SLionel Sambuc "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid", 222ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform \"DER\" -nodetach -keyid" 223ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem" 224ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem" 225ebfedea0SLionel Sambuc . " -stream -out test.cms", 226ebfedea0SLionel Sambuc "-verify -in test.cms -inform \"DER\" " 227ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 228ebfedea0SLionel Sambuc ], 229ebfedea0SLionel Sambuc 230ebfedea0SLionel Sambuc [ 231ebfedea0SLionel Sambuc "signed content test streaming PEM format, 2 DSA and 2 RSA keys", 232ebfedea0SLionel Sambuc "-sign -in smcont.txt -outform PEM -nodetach" 233ebfedea0SLionel Sambuc . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem" 234ebfedea0SLionel Sambuc . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem" 235ebfedea0SLionel Sambuc . " -stream -out test.cms", 236ebfedea0SLionel Sambuc "-verify -in test.cms -inform PEM " 237ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 238ebfedea0SLionel Sambuc ], 239ebfedea0SLionel Sambuc 240ebfedea0SLionel Sambuc [ 241ebfedea0SLionel Sambuc "signed content MIME format, RSA key, signed receipt request", 242ebfedea0SLionel Sambuc "-sign -in smcont.txt -signer $smdir/smrsa1.pem -nodetach" 243ebfedea0SLionel Sambuc . " -receipt_request_to test\@openssl.org -receipt_request_all" 244ebfedea0SLionel Sambuc . " -out test.cms", 245ebfedea0SLionel Sambuc "-verify -in test.cms " 246ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem -out smtst.txt" 247ebfedea0SLionel Sambuc ], 248ebfedea0SLionel Sambuc 249ebfedea0SLionel Sambuc [ 250ebfedea0SLionel Sambuc "signed receipt MIME format, RSA key", 251ebfedea0SLionel Sambuc "-sign_receipt -in test.cms" 252ebfedea0SLionel Sambuc . " -signer $smdir/smrsa2.pem" 253ebfedea0SLionel Sambuc . " -out test2.cms", 254ebfedea0SLionel Sambuc "-verify_receipt test2.cms -in test.cms" 255ebfedea0SLionel Sambuc . " \"-CAfile\" $smdir/smroot.pem" 256ebfedea0SLionel Sambuc ], 257ebfedea0SLionel Sambuc 258ebfedea0SLionel Sambuc [ 259ebfedea0SLionel Sambuc "enveloped content test streaming S/MIME format, 3 recipients, keyid", 260ebfedea0SLionel Sambuc "-encrypt -in smcont.txt" 261ebfedea0SLionel Sambuc . " -stream -out test.cms -keyid" 262ebfedea0SLionel Sambuc . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ", 263ebfedea0SLionel Sambuc "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt" 264ebfedea0SLionel Sambuc ], 265ebfedea0SLionel Sambuc 266ebfedea0SLionel Sambuc [ 267ebfedea0SLionel Sambuc "enveloped content test streaming PEM format, KEK", 268ebfedea0SLionel Sambuc "-encrypt -in smcont.txt -outform PEM -aes128" 269ebfedea0SLionel Sambuc . " -stream -out test.cms " 270ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F " 271ebfedea0SLionel Sambuc . " -secretkeyid C0FEE0", 272ebfedea0SLionel Sambuc "-decrypt -in test.cms -out smtst.txt -inform PEM" 273ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F " 274ebfedea0SLionel Sambuc . " -secretkeyid C0FEE0" 275ebfedea0SLionel Sambuc ], 276ebfedea0SLionel Sambuc 277ebfedea0SLionel Sambuc [ 278ebfedea0SLionel Sambuc "enveloped content test streaming PEM format, KEK, key only", 279ebfedea0SLionel Sambuc "-encrypt -in smcont.txt -outform PEM -aes128" 280ebfedea0SLionel Sambuc . " -stream -out test.cms " 281ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F " 282ebfedea0SLionel Sambuc . " -secretkeyid C0FEE0", 283ebfedea0SLionel Sambuc "-decrypt -in test.cms -out smtst.txt -inform PEM" 284ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F " 285ebfedea0SLionel Sambuc ], 286ebfedea0SLionel Sambuc 287ebfedea0SLionel Sambuc [ 288ebfedea0SLionel Sambuc "data content test streaming PEM format", 289ebfedea0SLionel Sambuc "-data_create -in smcont.txt -outform PEM -nodetach" 290ebfedea0SLionel Sambuc . " -stream -out test.cms", 291ebfedea0SLionel Sambuc "-data_out -in test.cms -inform PEM -out smtst.txt" 292ebfedea0SLionel Sambuc ], 293ebfedea0SLionel Sambuc 294ebfedea0SLionel Sambuc [ 295ebfedea0SLionel Sambuc "encrypted content test streaming PEM format, 128 bit RC2 key", 296ebfedea0SLionel Sambuc "\"-EncryptedData_encrypt\" -in smcont.txt -outform PEM" 297ebfedea0SLionel Sambuc . " -rc2 -secretkey 000102030405060708090A0B0C0D0E0F" 298ebfedea0SLionel Sambuc . " -stream -out test.cms", 299ebfedea0SLionel Sambuc "\"-EncryptedData_decrypt\" -in test.cms -inform PEM " 300ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F -out smtst.txt" 301ebfedea0SLionel Sambuc ], 302ebfedea0SLionel Sambuc 303ebfedea0SLionel Sambuc [ 304ebfedea0SLionel Sambuc "encrypted content test streaming PEM format, 40 bit RC2 key", 305ebfedea0SLionel Sambuc "\"-EncryptedData_encrypt\" -in smcont.txt -outform PEM" 306ebfedea0SLionel Sambuc . " -rc2 -secretkey 0001020304" 307ebfedea0SLionel Sambuc . " -stream -out test.cms", 308ebfedea0SLionel Sambuc "\"-EncryptedData_decrypt\" -in test.cms -inform PEM " 309ebfedea0SLionel Sambuc . " -secretkey 0001020304 -out smtst.txt" 310ebfedea0SLionel Sambuc ], 311ebfedea0SLionel Sambuc 312ebfedea0SLionel Sambuc [ 313ebfedea0SLionel Sambuc "encrypted content test streaming PEM format, triple DES key", 314ebfedea0SLionel Sambuc "\"-EncryptedData_encrypt\" -in smcont.txt -outform PEM" 315ebfedea0SLionel Sambuc . " -des3 -secretkey 000102030405060708090A0B0C0D0E0F1011121314151617" 316ebfedea0SLionel Sambuc . " -stream -out test.cms", 317ebfedea0SLionel Sambuc "\"-EncryptedData_decrypt\" -in test.cms -inform PEM " 318ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F1011121314151617" 319ebfedea0SLionel Sambuc . " -out smtst.txt" 320ebfedea0SLionel Sambuc ], 321ebfedea0SLionel Sambuc 322ebfedea0SLionel Sambuc [ 323ebfedea0SLionel Sambuc "encrypted content test streaming PEM format, 128 bit AES key", 324ebfedea0SLionel Sambuc "\"-EncryptedData_encrypt\" -in smcont.txt -outform PEM" 325ebfedea0SLionel Sambuc . " -aes128 -secretkey 000102030405060708090A0B0C0D0E0F" 326ebfedea0SLionel Sambuc . " -stream -out test.cms", 327ebfedea0SLionel Sambuc "\"-EncryptedData_decrypt\" -in test.cms -inform PEM " 328ebfedea0SLionel Sambuc . " -secretkey 000102030405060708090A0B0C0D0E0F -out smtst.txt" 329ebfedea0SLionel Sambuc ], 330ebfedea0SLionel Sambuc 331ebfedea0SLionel Sambuc); 332ebfedea0SLionel Sambuc 333ebfedea0SLionel Sambucmy @smime_cms_comp_tests = ( 334ebfedea0SLionel Sambuc 335ebfedea0SLionel Sambuc [ 336ebfedea0SLionel Sambuc "compressed content test streaming PEM format", 337ebfedea0SLionel Sambuc "-compress -in smcont.txt -outform PEM -nodetach" 338ebfedea0SLionel Sambuc . " -stream -out test.cms", 339ebfedea0SLionel Sambuc "-uncompress -in test.cms -inform PEM -out smtst.txt" 340ebfedea0SLionel Sambuc ] 341ebfedea0SLionel Sambuc 342ebfedea0SLionel Sambuc); 343ebfedea0SLionel Sambuc 344ebfedea0SLionel Sambucprint "CMS => PKCS#7 compatibility tests\n"; 345ebfedea0SLionel Sambuc 346ebfedea0SLionel Sambucrun_smime_tests( \$badcmd, \@smime_pkcs7_tests, $cmscmd, $pk7cmd ); 347ebfedea0SLionel Sambuc 348ebfedea0SLionel Sambucprint "CMS <= PKCS#7 compatibility tests\n"; 349ebfedea0SLionel Sambuc 350ebfedea0SLionel Sambucrun_smime_tests( \$badcmd, \@smime_pkcs7_tests, $pk7cmd, $cmscmd ); 351ebfedea0SLionel Sambuc 352ebfedea0SLionel Sambucprint "CMS <=> CMS consistency tests\n"; 353ebfedea0SLionel Sambuc 354ebfedea0SLionel Sambucrun_smime_tests( \$badcmd, \@smime_pkcs7_tests, $cmscmd, $cmscmd ); 355ebfedea0SLionel Sambucrun_smime_tests( \$badcmd, \@smime_cms_tests, $cmscmd, $cmscmd ); 356ebfedea0SLionel Sambuc 357ebfedea0SLionel Sambucif ( `$ossl_path version -f` =~ /ZLIB/ ) { 358ebfedea0SLionel Sambuc run_smime_tests( \$badcmd, \@smime_cms_comp_tests, $cmscmd, $cmscmd ); 359ebfedea0SLionel Sambuc} 360ebfedea0SLionel Sambucelse { 361ebfedea0SLionel Sambuc print "Zlib not supported: compression tests skipped\n"; 362ebfedea0SLionel Sambuc} 363ebfedea0SLionel Sambuc 364ebfedea0SLionel Sambucprint "Running modified tests for OpenSSL 0.9.8 cms backport\n" if($ossl8); 365ebfedea0SLionel Sambuc 366ebfedea0SLionel Sambucif ($badcmd) { 367ebfedea0SLionel Sambuc print "$badcmd TESTS FAILED!!\n"; 368ebfedea0SLionel Sambuc} 369ebfedea0SLionel Sambucelse { 370ebfedea0SLionel Sambuc print "ALL TESTS SUCCESSFUL.\n"; 371ebfedea0SLionel Sambuc} 372ebfedea0SLionel Sambuc 373ebfedea0SLionel Sambucunlink "test.cms"; 374ebfedea0SLionel Sambucunlink "test2.cms"; 375ebfedea0SLionel Sambucunlink "smtst.txt"; 376ebfedea0SLionel Sambucunlink "cms.out"; 377ebfedea0SLionel Sambucunlink "cms.err"; 378ebfedea0SLionel Sambuc 379ebfedea0SLionel Sambucsub run_smime_tests { 380ebfedea0SLionel Sambuc my ( $rv, $aref, $scmd, $vcmd ) = @_; 381ebfedea0SLionel Sambuc 382ebfedea0SLionel Sambuc foreach $smtst (@$aref) { 383ebfedea0SLionel Sambuc my ( $tnam, $rscmd, $rvcmd ) = @$smtst; 384ebfedea0SLionel Sambuc if ($ossl8) 385ebfedea0SLionel Sambuc { 386ebfedea0SLionel Sambuc # Skip smime resign: 0.9.8 smime doesn't support -resign 387ebfedea0SLionel Sambuc next if ($scmd =~ /smime/ && $rscmd =~ /-resign/); 388ebfedea0SLionel Sambuc # Disable streaming: option not supported in 0.9.8 389ebfedea0SLionel Sambuc $tnam =~ s/streaming//; 390ebfedea0SLionel Sambuc $rscmd =~ s/-stream//; 391ebfedea0SLionel Sambuc $rvcmd =~ s/-stream//; 392ebfedea0SLionel Sambuc } 393ebfedea0SLionel Sambuc system("$scmd$rscmd$redir"); 394ebfedea0SLionel Sambuc if ($?) { 395ebfedea0SLionel Sambuc print "$tnam: generation error\n"; 396ebfedea0SLionel Sambuc $$rv++; 397ebfedea0SLionel Sambuc exit 1 if $halt_err; 398ebfedea0SLionel Sambuc next; 399ebfedea0SLionel Sambuc } 400ebfedea0SLionel Sambuc system("$vcmd$rvcmd$redir"); 401ebfedea0SLionel Sambuc if ($?) { 402ebfedea0SLionel Sambuc print "$tnam: verify error\n"; 403ebfedea0SLionel Sambuc $$rv++; 404ebfedea0SLionel Sambuc exit 1 if $halt_err; 405ebfedea0SLionel Sambuc next; 406ebfedea0SLionel Sambuc } 407ebfedea0SLionel Sambuc if (!cmp_files("smtst.txt", "smcont.txt")) { 408ebfedea0SLionel Sambuc print "$tnam: content verify error\n"; 409ebfedea0SLionel Sambuc $$rv++; 410ebfedea0SLionel Sambuc exit 1 if $halt_err; 411ebfedea0SLionel Sambuc next; 412ebfedea0SLionel Sambuc } 413ebfedea0SLionel Sambuc print "$tnam: OK\n"; 414ebfedea0SLionel Sambuc } 415ebfedea0SLionel Sambuc} 416ebfedea0SLionel Sambuc 417ebfedea0SLionel Sambucsub cmp_files { 418*0a6a1f1dSLionel Sambuc use FileHandle; 419ebfedea0SLionel Sambuc my ( $f1, $f2 ) = @_; 420*0a6a1f1dSLionel Sambuc my $fp1 = FileHandle->new(); 421*0a6a1f1dSLionel Sambuc my $fp2 = FileHandle->new(); 422ebfedea0SLionel Sambuc 423ebfedea0SLionel Sambuc my ( $rd1, $rd2 ); 424ebfedea0SLionel Sambuc 425ebfedea0SLionel Sambuc if ( !open( $fp1, "<$f1" ) ) { 426ebfedea0SLionel Sambuc print STDERR "Can't Open file $f1\n"; 427ebfedea0SLionel Sambuc return 0; 428ebfedea0SLionel Sambuc } 429ebfedea0SLionel Sambuc 430ebfedea0SLionel Sambuc if ( !open( $fp2, "<$f2" ) ) { 431ebfedea0SLionel Sambuc print STDERR "Can't Open file $f2\n"; 432ebfedea0SLionel Sambuc return 0; 433ebfedea0SLionel Sambuc } 434ebfedea0SLionel Sambuc 435ebfedea0SLionel Sambuc binmode $fp1; 436ebfedea0SLionel Sambuc binmode $fp2; 437ebfedea0SLionel Sambuc 438ebfedea0SLionel Sambuc my $ret = 0; 439ebfedea0SLionel Sambuc 440ebfedea0SLionel Sambuc for ( ; ; ) { 441ebfedea0SLionel Sambuc $n1 = sysread $fp1, $rd1, 4096; 442ebfedea0SLionel Sambuc $n2 = sysread $fp2, $rd2, 4096; 443ebfedea0SLionel Sambuc last if ( $n1 != $n2 ); 444ebfedea0SLionel Sambuc last if ( $rd1 ne $rd2 ); 445ebfedea0SLionel Sambuc 446ebfedea0SLionel Sambuc if ( $n1 == 0 ) { 447ebfedea0SLionel Sambuc $ret = 1; 448ebfedea0SLionel Sambuc last; 449ebfedea0SLionel Sambuc } 450ebfedea0SLionel Sambuc 451ebfedea0SLionel Sambuc } 452ebfedea0SLionel Sambuc 453ebfedea0SLionel Sambuc close $fp1; 454ebfedea0SLionel Sambuc close $fp2; 455ebfedea0SLionel Sambuc 456ebfedea0SLionel Sambuc return $ret; 457ebfedea0SLionel Sambuc 458ebfedea0SLionel Sambuc} 459ebfedea0SLionel Sambuc 460