# 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";
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-cms > $null_path");
+if ($? == 0)
+ {
+ print "CMS disabled\n";
+ exit 0;
+ }
+
+system ("$ossl_path no-ec > $null_path");
if ($? == 0)
{
$no_ec = 1;
}
-elsif ($? == 256)
+elsif ($? == $failure_code)
{
$no_ec = 0;
}
die "Error checking for EC support\n";
}
-system ("$ossl_path no-ec2m >/dev/null");
+system ("$ossl_path no-ec2m > $null_path");
if ($? == 0)
{
$no_ec2m = 1;
}
-elsif ($? == 256)
+elsif ($? == $failure_code)
{
$no_ec2m = 0;
}
{
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 = (
"-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"
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";