oops, typo
[openssl.git] / test / cms-test.pl
index 7d19e22ccc75bc42a64a13b34fcbc870d99691e2..9c50dff3e9a3c3291ed91857da7ec26bba7b2d59 100644 (file)
 # OpenSSL PKCS#7 and CMS implementations.
 
 my $ossl_path;
-
-if ( -f "../apps/openssl" ) {
+my $redir = " 2>cms.err 1>cms.out";
+# Make MSYS work
+if ( $^O eq "MSWin32" && -f "../apps/openssl.exe" ) {
+    $ossl_path = "cmd /c ..\\apps\\openssl";
+}
+elsif ( -f "../apps/openssl$ENV{EXE_EXT}" ) {
     $ossl_path = "../util/shlib_wrap.sh ../apps/openssl";
 }
 elsif ( -f "..\\out32dll\\openssl.exe" ) {
@@ -74,12 +78,14 @@ my $smdir    = "smime-certs";
 my $halt_err = 1;
 
 my $badcmd = 0;
+my $ossl8 = `$ossl_path version -v` =~ /0\.9\.8/;
 
 my @smime_pkcs7_tests = (
 
     [
         "signed content DER format, RSA key",
         "-sign -in smcont.txt -outform DER -nodetach"
+          . " -certfile $smdir/smroot.pem"
           . " -signer $smdir/smrsa1.pem -out test.cms",
         "-verify -in test.cms -inform DER "
           . " -CAfile $smdir/smroot.pem -out smtst.txt"
@@ -227,6 +233,24 @@ my @smime_cms_tests = (
           . " -CAfile $smdir/smroot.pem -out smtst.txt"
     ],
 
+    [
+        "signed content MIME format, RSA key, signed receipt request",
+        "-sign -in smcont.txt -signer $smdir/smrsa1.pem -nodetach"
+          . " -receipt_request_to test\@openssl.org -receipt_request_all"
+          . " -out test.cms",
+        "-verify -in test.cms "
+          . " -CAfile $smdir/smroot.pem -out smtst.txt"
+    ],
+
+    [
+        "signed receipt MIME format, RSA key",
+        "-sign_receipt -in test.cms"
+          . " -signer $smdir/smrsa2.pem"
+          . " -out test2.cms",
+        "-verify_receipt test2.cms -in test.cms"
+          . " -CAfile $smdir/smroot.pem"
+    ],
+
     [
         "enveloped content test streaming S/MIME format, 3 recipients, keyid",
         "-encrypt -in smcont.txt"
@@ -235,6 +259,27 @@ my @smime_cms_tests = (
         "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt"
     ],
 
+    [
+        "enveloped content test streaming PEM format, KEK",
+        "-encrypt -in smcont.txt -outform PEM -aes128"
+          . " -stream -out test.cms "
+          . " -secretkey 000102030405060708090A0B0C0D0E0F "
+          . " -secretkeyid C0FEE0",
+        "-decrypt -in test.cms -out smtst.txt -inform PEM"
+          . " -secretkey 000102030405060708090A0B0C0D0E0F "
+          . " -secretkeyid C0FEE0"
+    ],
+
+    [
+        "enveloped content test streaming PEM format, KEK, key only",
+        "-encrypt -in smcont.txt -outform PEM -aes128"
+          . " -stream -out test.cms "
+          . " -secretkey 000102030405060708090A0B0C0D0E0F "
+          . " -secretkeyid C0FEE0",
+        "-decrypt -in test.cms -out smtst.txt -inform PEM"
+          . " -secretkey 000102030405060708090A0B0C0D0E0F "
+    ],
+
     [
         "data content test streaming PEM format",
         "-data_create -in smcont.txt -outform PEM -nodetach"
@@ -312,6 +357,8 @@ else {
     print "Zlib not supported: compression tests skipped\n";
 }
 
+print "Running modified tests for OpenSSL 0.9.8 cms backport\n" if($ossl8);
+
 if ($badcmd) {
     print "$badcmd TESTS FAILED!!\n";
 }
@@ -322,20 +369,31 @@ else {
 unlink "test.cms";
 unlink "test2.cms";
 unlink "smtst.txt";
+unlink "cms.out";
+unlink "cms.err";
 
 sub run_smime_tests {
     my ( $rv, $aref, $scmd, $vcmd ) = @_;
 
     foreach $smtst (@$aref) {
         my ( $tnam, $rscmd, $rvcmd ) = @$smtst;
-        system("$scmd$rscmd 2>cms.err 1>cms.out");
+       if ($ossl8)
+               {
+               # Skip smime resign: 0.9.8 smime doesn't support -resign        
+               next if ($scmd =~ /smime/ && $rscmd =~ /-resign/);
+               # Disable streaming: option not supported in 0.9.8
+               $tnam =~ s/streaming//; 
+               $rscmd =~ s/-stream//;  
+               $rvcmd =~ s/-stream//;
+               }
+        system("$scmd$rscmd$redir");
         if ($?) {
             print "$tnam: generation error\n";
             $$rv++;
             exit 1 if $halt_err;
             next;
         }
-        system("$vcmd$rvcmd 2>cms.err 1>cms.out");
+        system("$vcmd$rvcmd$redir");
         if ($?) {
             print "$tnam: verify error\n";
             $$rv++;