# 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 $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;
}
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-ecdh >/dev/null");
+system ("$ossl_path no-ec > $null_path");
if ($? == 0)
{
$no_ecdh = 1;
}
-elsif ($? == 256)
+elsif ($? == $failure_code)
{
$no_ecdh = 0;
}
"-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"