Code style: space after 'if'
[openssl.git] / test / cms-test.pl
index 006733a6befeee223c0431c8a1f9a16417d0cd39..baa3b5948a4428aeccae1e1b1322eed0029d618a 100644 (file)
@@ -58,19 +58,32 @@ my $redir = " 2> cms.err > cms.out";
 # Make VMS work
 if ( $^O eq "VMS" && -f "OSSLX:openssl.exe" ) {
     $ossl_path = "pipe mcr OSSLX:openssl";
+    $null_path = "NL:";
+    # On VMS, the lowest 3 bits of the exit code indicates severity
+    # 1 is success (perl translates it to 0 for $?), 2 is error
+    # (perl doesn't translate it)
+    $failure_code = 512;       # 2 << 8 = 512
 }
 # Make MSYS work
 elsif ( $^O eq "MSWin32" && -f "../apps/openssl.exe" ) {
     $ossl_path = "cmd /c ..\\apps\\openssl";
+    $null_path = "NUL";
+    $failure_code = 256;
 }
 elsif ( -f "../apps/openssl$ENV{EXE_EXT}" ) {
     $ossl_path = "../util/shlib_wrap.sh ../apps/openssl";
+    $null_path = "/dev/null";
+    $failure_code = 256;
 }
 elsif ( -f "..\\out32dll\\openssl.exe" ) {
     $ossl_path = "..\\out32dll\\openssl.exe";
+    $null_path = "NUL";
+    $failure_code = 256;
 }
 elsif ( -f "..\\out32\\openssl.exe" ) {
     $ossl_path = "..\\out32\\openssl.exe";
+    $null_path = "NUL";
+    $failure_code = 256;
 }
 else {
     die "Can't find OpenSSL executable";
@@ -83,14 +96,16 @@ my $halt_err = 1;
 
 my $badcmd = 0;
 my $no_ec;
+my $no_ec2m;
+my $no_ecdh;
 my $ossl8 = `$ossl_path version -v` =~ /0\.9\.8/;
 
-system ("$ossl_path no-ec >/dev/null");
+system ("$ossl_path no-ec > $null_path");
 if ($? == 0)
        {
        $no_ec = 1;
        }
-elsif ($? == 256)
+elsif ($? == $failure_code)
        {
        $no_ec = 0;
        }
@@ -98,7 +113,35 @@ else
        {
        die "Error checking for EC support\n";
        }
+    
+system ("$ossl_path no-ec2m > $null_path");
+if ($? == 0)
+       {
+       $no_ec2m = 1;
+       }
+elsif ($? == $failure_code)
+       {
+       $no_ec2m = 0;
+       }
+else
+       {
+       die "Error checking for EC2M support\n";
+       }
 
+system ("$ossl_path no-ec > $null_path");
+if ($? == 0)
+       {
+       $no_ecdh = 1;
+       }
+elsif ($? == $failure_code)
+       {
+       $no_ecdh = 0;
+       }
+else
+       {
+       die "Error checking for ECDH support\n";
+       }
+    
 my @smime_pkcs7_tests = (
 
     [
@@ -409,6 +452,14 @@ my @smime_cms_param_tests = (
         "-decrypt -recip $smdir/smec1.pem -in test.cms -out smtst.txt"
     ],
 
+    [
+"enveloped content test streaming S/MIME format, ECDH, key identifier",
+        "-encrypt -keyid -in smcont.txt"
+          . " -stream -out test.cms"
+          . " -recip $smdir/smec1.pem",
+        "-decrypt -recip $smdir/smec1.pem -in test.cms -out smtst.txt"
+    ],
+
     [
 "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF",
         "-encrypt -in smcont.txt"
@@ -492,6 +543,16 @@ sub run_smime_tests {
                print "$tnam: skipped, EC disabled\n";
                next;
                }
+       if ($no_ecdh && $tnam =~ /ECDH/)
+               {
+               print "$tnam: skipped, ECDH disabled\n";
+               next;
+               }
+       if ($no_ec2m && $tnam =~ /K-283/)
+               {
+               print "$tnam: skipped, EC2M disabled\n";
+               next;
+               }
         system("$scmd$rscmd$redir");
         if ($?) {
             print "$tnam: generation error\n";