Latest update.

This commit is contained in:
2020-03-03 19:16:19 +09:00
parent f85de4da03
commit b412d79e8b
310 changed files with 32765 additions and 19720 deletions
+8 -1
View File
@@ -24,7 +24,7 @@ use platform;
plan skip_all => "Test only supported in a fips build" if disabled("fips");
plan tests => 9;
plan tests => 10;
my $infile = bldtop_file('providers', platform->dso('fips'));
$ENV{OPENSSL_MODULES} = bldtop_dir("providers");
@@ -92,3 +92,10 @@ ok(!run(app(['openssl', 'fipsinstall', '-out', 'fips.conf', '-module', $infile,
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
'-section_name', 'fips_install', '-corrupt_desc', 'SHA3'])),
"fipsinstall fails when the digest result is corrupted");
# corrupt DRBG
ok(!run(app(['openssl', 'fipsinstall', '-out', 'fips.conf', '-module', $infile,
'-provider_name', 'fips', '-mac_name', 'HMAC',
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
'-section_name', 'fips_install', '-corrupt_desc', 'CTR'])),
"fipsinstall fails when the DRBG CTR result is corrupted");
+27 -8
View File
@@ -16,15 +16,18 @@ use OpenSSL::Test::Utils;
setup("test_ec");
plan tests => 11;
plan tests => 14;
require_ok(srctop_file('test','recipes','tconversion.pl'));
ok(run(test(["ectest"])), "running ectest");
# TODO: remove these when the 'ec' app is removed.
# Also consider moving this to the 20-25 test section because it is testing
# the command line tool in addition to the algorithm.
SKIP: {
skip "Skipping EC conversion test", 3
if disabled("ec");
if disabled("ec") || disabled('deprecated-3.0');
subtest 'EC conversions -- private key' => sub {
tconversion("ec", srctop_file("test","testec-p256.pem"));
@@ -38,29 +41,45 @@ SKIP: {
};
}
SKIP: {
skip "Skipping PKEY conversion test", 3
if disabled("ec");
subtest 'PKEY conversions -- private key' => sub {
tconversion("pkey", srctop_file("test","testec-p256.pem"));
};
subtest 'PKEY conversions -- private key PKCS#8' => sub {
tconversion("pkey", srctop_file("test","testec-p256.pem"), "pkey");
};
subtest 'PKEY conversions -- public key' => sub {
tconversion("pkey", srctop_file("test","testecpub-p256.pem"),
"pkey", "-pubin", "-pubout");
};
}
SKIP: {
skip "Skipping EdDSA conversion test", 6
if disabled("ec");
subtest 'Ed25519 conversions -- private key' => sub {
tconversion("pkey", srctop_file("test","tested25519.pem"));
tconversion("pkey", srctop_file("test", "tested25519.pem"));
};
subtest 'Ed25519 conversions -- private key PKCS#8' => sub {
tconversion("pkey", srctop_file("test","tested25519.pem"), "pkey");
tconversion("pkey", srctop_file("test", "tested25519.pem"), "pkey");
};
subtest 'Ed25519 conversions -- public key' => sub {
tconversion("pkey", srctop_file("test","tested25519pub.pem"),
tconversion("pkey", srctop_file("test", "tested25519pub.pem"),
"pkey", "-pubin", "-pubout");
};
subtest 'Ed448 conversions -- private key' => sub {
tconversion("pkey", srctop_file("test","tested448.pem"));
tconversion("pkey", srctop_file("test", "tested448.pem"));
};
subtest 'Ed448 conversions -- private key PKCS#8' => sub {
tconversion("pkey", srctop_file("test","tested448.pem"), "pkey");
tconversion("pkey", srctop_file("test", "tested448.pem"), "pkey");
};
subtest 'Ed448 conversions -- public key' => sub {
tconversion("pkey", srctop_file("test","tested448pub.pem"),
tconversion("pkey", srctop_file("test", "tested448pub.pem"),
"pkey", "-pubin", "-pubout");
};
}
+23 -9
View File
@@ -23,20 +23,34 @@ plan skip_all => "EC isn't supported in this build"
my @valid = glob(data_file("valid", "*.pem"));
my @invalid = glob(data_file("invalid", "*.pem"));
plan tests => scalar @valid + scalar @invalid + scalar @valid + scalar @invalid;
my $num_tests = scalar @valid + scalar @invalid;
plan tests => 3 * $num_tests;
foreach (@valid) {
ok(run(app([qw{openssl ecparam -noout -check -in}, $_])));
SKIP: {
skip "Skipping EC tests", 2 * $num_tests
if disabled('deprecated-3.0');
foreach (@valid) {
ok(run(app([qw{openssl ecparam -noout -check -in}, $_])));
}
foreach (@valid) {
ok(run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
}
foreach (@invalid) {
ok(!run(app([qw{openssl ecparam -noout -check -in}, $_])));
}
foreach (@invalid) {
ok(!run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
}
}
foreach (@valid) {
ok(run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
ok(run(app([qw{openssl pkeyparam -noout -check -in}, $_])));
}
foreach (@invalid) {
ok(!run(app([qw{openssl ecparam -noout -check -in}, $_])));
}
foreach (@invalid) {
ok(!run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
ok(!run(app([qw{openssl pkeyparam -noout -check -in}, $_])));
}
+29 -24
View File
@@ -55,42 +55,47 @@ sub run_mp_tests {
my $name = ($evp ? "evp" : "") . "${bits}p${primes}";
if ($evp) {
ok(run(app([ 'openssl', 'genpkey', '-out', 'rsamptest.pem',
'-algorithm', 'RSA', '-pkeyopt', "rsa_keygen_primes:$primes",
'-pkeyopt', "rsa_keygen_bits:$bits"])), "genrsa $name");
ok(run(app([ 'openssl', 'genpkey', '-out', "rsamptest-$name.pem",
'-algorithm', 'RSA',
'-pkeyopt', "rsa_keygen_primes:$primes",
'-pkeyopt', "rsa_keygen_bits:$bits"])),
"genrsa $name");
} else {
ok(run(app([ 'openssl', 'genrsa', '-out', 'rsamptest.pem',
'-primes', $primes, $bits])), "genrsa $name");
ok(run(app([ 'openssl', 'genrsa', '-out', "rsamptest-$name.pem",
'-primes', $primes, $bits])),
"genrsa $name");
}
ok(run(app([ 'openssl', 'rsa', '-check', '-in', 'rsamptest.pem',
'-noout'])), "rsa -check $name");
ok(run(app([ 'openssl', 'rsa', '-check', '-in', "rsamptest-$name.pem",
'-noout'])),
"rsa -check $name");
if ($evp) {
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', 'rsamptest.pem',
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', "rsamptest-$name.pem",
'-encrypt', '-in', $cleartext,
'-out', 'rsamptest.enc' ])), "rsa $name encrypt");
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', 'rsamptest.pem',
'-decrypt', '-in', 'rsamptest.enc',
'-out', 'rsamptest.dec' ])), "rsa $name decrypt");
'-out', "rsamptest-$name.enc" ])),
"rsa $name encrypt");
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', "rsamptest-$name.pem",
'-decrypt', '-in', "rsamptest-$name.enc",
'-out', "rsamptest-$name.dec" ])),
"rsa $name decrypt");
} else {
ok(run(app([ 'openssl', 'rsautl', '-inkey', 'rsamptest.pem',
ok(run(app([ 'openssl', 'rsautl', '-inkey', "rsamptest-$name.pem",
'-encrypt', '-in', $cleartext,
'-out', 'rsamptest.enc' ])), "rsa $name encrypt");
ok(run(app([ 'openssl', 'rsautl', '-inkey', 'rsamptest.pem',
'-decrypt', '-in', 'rsamptest.enc',
'-out', 'rsamptest.dec' ])), "rsa $name decrypt");
'-out', "rsamptest-$name.enc" ])),
"rsa $name encrypt");
ok(run(app([ 'openssl', 'rsautl', '-inkey', "rsamptest-$name.pem",
'-decrypt', '-in', "rsamptest-$name.enc",
'-out', "rsamptest-$name.dec" ])),
"rsa $name decrypt");
}
ok(check_msg(), "rsa $name check result");
# clean up temp files
unlink 'rsamptest.pem';
unlink 'rsamptest.enc';
unlink 'rsamptest.dec';
ok(check_msg("rsamptest-$name.dec"), "rsa $name check result");
}
}
sub check_msg {
my $decrypted = shift;
my $msg;
my $dec;
@@ -98,7 +103,7 @@ sub check_msg {
binmode $fh;
read($fh, $msg, 10240);
close $fh;
open($fh, "<", "rsamptest.dec") or return 0;
open($fh, "<", $decrypted ) or return 0;
binmode $fh;
read($fh, $dec, 10240);
close $fh;
-1
View File
@@ -46,4 +46,3 @@ ok(run(app(['openssl', 'dgst', '-prverify', srctop_file('test', 'testrsa.pem'),
'-sigopt', 'rsa_mgf1_md:sha512', '-signature', 'testrsapss.sig',
srctop_file('test', 'testrsa.pem')])),
"openssl dgst -prverify");
unlink 'testrsapss.sig';
+6 -6
View File
@@ -11,6 +11,7 @@ use strict;
use warnings;
use File::Spec;
use File::Basename;
use OpenSSL::Test qw/:DEFAULT with srctop_file/;
use OpenSSL::Test::Utils;
@@ -26,29 +27,28 @@ sub tsignverify {
my $data_to_sign = srctop_file('test', 'README');
my $other_data = srctop_file('test', 'README.external');
my $sigfile = basename($privkey, '.pem') . '.sig';
plan tests => 4;
ok(run(app(['openssl', 'dgst', '-sign', $privkey,
'-out', 'testdgst.sig',
'-out', $sigfile,
$data_to_sign])),
$testtext.": Generating signature");
ok(run(app(['openssl', 'dgst', '-prverify', $privkey,
'-signature', 'testdgst.sig',
'-signature', $sigfile,
$data_to_sign])),
$testtext.": Verify signature with private key");
ok(run(app(['openssl', 'dgst', '-verify', $pubkey,
'-signature', 'testdgst.sig',
'-signature', $sigfile,
$data_to_sign])),
$testtext.": Verify signature with public key");
ok(!run(app(['openssl', 'dgst', '-verify', $pubkey,
'-signature', 'testdgst.sig',
'-signature', $sigfile,
$other_data])),
$testtext.": Expect failure verifying mismatching data");
unlink 'testdgst.sig';
}
SKIP: {
-3
View File
@@ -62,9 +62,6 @@ plan tests => 2 + (scalar @ciphers)*2;
ok(run(app([$cmd, @e, "-in", $test, "-out", $cipherfile]))
&& run(app([$cmd, @d, "-in", $cipherfile, "-out", $clearfile]))
&& compare_text($test,$clearfile) == 0, $t);
unlink $cipherfile, $clearfile;
}
}
}
unlink $test;
-3
View File
@@ -54,8 +54,5 @@ SKIP: {
&& run(app([@common, "-d", "-in", $cipherfile, "-out", $clearfile]))
&& compare_text($plaintext, $clearfile) == 0
, $ciphername);
unlink $cipherfile, $clearfile;
}
}
unlink $plaintext;
+8 -11
View File
@@ -10,6 +10,7 @@ use strict;
use warnings;
use File::Spec;
use File::Basename;
use OpenSSL::Test qw/:DEFAULT srctop_file ok_nofips/;
use OpenSSL::Test::Utils;
@@ -27,13 +28,13 @@ SKIP: {
ok_nofips(run(app(([ 'openssl', 'pkeyutl', '-sign',
'-in', srctop_file('test', 'certs', 'sm2.pem'),
'-inkey', srctop_file('test', 'certs', 'sm2.key'),
'-out', 'signature.dat', '-rawin',
'-out', 'sm2.sig', '-rawin',
'-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))),
"Sign a piece of data using SM2");
ok_nofips(run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin',
'-in', srctop_file('test', 'certs', 'sm2.pem'),
'-inkey', srctop_file('test', 'certs', 'sm2.pem'),
'-sigfile', 'signature.dat', '-rawin',
'-sigfile', 'sm2.sig', '-rawin',
'-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))),
"Verify an SM2 signature against a piece of data");
}
@@ -46,29 +47,27 @@ SKIP: {
ok(run(app(([ 'openssl', 'pkeyutl', '-sign', '-in',
srctop_file('test', 'certs', 'server-ed25519-cert.pem'),
'-inkey', srctop_file('test', 'certs', 'server-ed25519-key.pem'),
'-out', 'signature.dat', '-rawin']))),
'-out', 'Ed25519.sig', '-rawin']))),
"Sign a piece of data using Ed25519");
ok(run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin', '-in',
srctop_file('test', 'certs', 'server-ed25519-cert.pem'),
'-inkey', srctop_file('test', 'certs', 'server-ed25519-cert.pem'),
'-sigfile', 'signature.dat', '-rawin']))),
'-sigfile', 'Ed25519.sig', '-rawin']))),
"Verify an Ed25519 signature against a piece of data");
# Ed448
ok(run(app(([ 'openssl', 'pkeyutl', '-sign', '-in',
srctop_file('test', 'certs', 'server-ed448-cert.pem'),
'-inkey', srctop_file('test', 'certs', 'server-ed448-key.pem'),
'-out', 'signature.dat', '-rawin']))),
'-out', 'Ed448.sig', '-rawin']))),
"Sign a piece of data using Ed448");
ok(run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin', '-in',
srctop_file('test', 'certs', 'server-ed448-cert.pem'),
'-inkey', srctop_file('test', 'certs', 'server-ed448-cert.pem'),
'-sigfile', 'signature.dat', '-rawin']))),
'-sigfile', 'Ed448.sig', '-rawin']))),
"Verify an Ed448 signature against a piece of data");
}
unlink 'signature.dat';
sub tsignverify {
my $testtext = shift;
my $privkey = shift;
@@ -77,7 +76,7 @@ sub tsignverify {
my $data_to_sign = srctop_file('test', 'README');
my $other_data = srctop_file('test', 'README.external');
my $sigfile = 'testpkeyutl.sig';
my $sigfile = basename($privkey, '.pem') . '.sig';
my @args = ();
plan tests => 4;
@@ -113,8 +112,6 @@ sub tsignverify {
push(@args, @extraopts);
ok(!run(app([@args])),
$testtext.": Expect failure verifying mismatching data");
unlink $sigfile;
}
SKIP: {
-1
View File
@@ -40,7 +40,6 @@ ok(run(app(["openssl", "crl", "-text", "-in", $pem, "-out", $out,
"-nameopt", "utf8"])));
is(cmp_text($out, srctop_file("test/certs", "cyrillic_crl.utf8")),
0, 'Comparing utf8 output');
unlink $out;
sub compare1stline {
my ($cmdarray, $str) = @_;
+14 -16
View File
@@ -51,13 +51,13 @@ subtest "generating certificate requests with RSA" => sub {
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-new", "-out", "testreq.pem", "-utf8",
"-new", "-out", "testreq-rsa.pem", "-utf8",
"-key", srctop_file("test", "testrsa.pem")])),
"Generating request");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout"])),
"-verify", "-in", "testreq-rsa.pem", "-noout"])),
"Verifying signature on request");
}
};
@@ -71,13 +71,13 @@ subtest "generating certificate requests with DSA" => sub {
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-new", "-out", "testreq.pem", "-utf8",
"-new", "-out", "testreq-dsa.pem", "-utf8",
"-key", srctop_file("test", "testdsa.pem")])),
"Generating request");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout"])),
"-verify", "-in", "testreq-dsa.pem", "-noout"])),
"Verifying signature on request");
}
};
@@ -91,13 +91,13 @@ subtest "generating certificate requests with ECDSA" => sub {
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-new", "-out", "testreq.pem", "-utf8",
"-new", "-out", "testreq-ec.pem", "-utf8",
"-key", srctop_file("test", "testec-p256.pem")])),
"Generating request");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout"])),
"-verify", "-in", "testreq-ec.pem", "-noout"])),
"Verifying signature on request");
}
};
@@ -111,13 +111,13 @@ subtest "generating certificate requests with Ed25519" => sub {
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-new", "-out", "testreq.pem", "-utf8",
"-new", "-out", "testreq-ed25519.pem", "-utf8",
"-key", srctop_file("test", "tested25519.pem")])),
"Generating request");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout"])),
"-verify", "-in", "testreq-ed25519.pem", "-noout"])),
"Verifying signature on request");
}
};
@@ -131,13 +131,13 @@ subtest "generating certificate requests with Ed448" => sub {
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-new", "-out", "testreq.pem", "-utf8",
"-new", "-out", "testreq-ed448.pem", "-utf8",
"-key", srctop_file("test", "tested448.pem")])),
"Generating request");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout"])),
"-verify", "-in", "testreq-ed448.pem", "-noout"])),
"Verifying signature on request");
}
};
@@ -164,12 +164,12 @@ subtest "generating SM2 certificate requests" => sub {
"-config", srctop_file("test", "test.cnf"),
"-new", "-key", srctop_file("test", "certs", "sm2.key"),
"-sigopt", "sm2_id:1234567812345678",
"-out", "testreq.pem", "-sm3"])),
"-out", "testreq-sm2.pem", "-sm3"])),
"Generating SM2 certificate request");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout",
"-verify", "-in", "testreq-sm2.pem", "-noout",
"-sm2-id", "1234567812345678", "-sm3"])),
"Verifying signature on SM2 certificate request");
@@ -177,12 +177,12 @@ subtest "generating SM2 certificate requests" => sub {
"-config", srctop_file("test", "test.cnf"),
"-new", "-key", srctop_file("test", "certs", "sm2.key"),
"-sigopt", "sm2_hex_id:DEADBEEF",
"-out", "testreq.pem", "-sm3"])),
"-out", "testreq-sm2.pem", "-sm3"])),
"Generating SM2 certificate request with hex id");
ok(run(app(["openssl", "req",
"-config", srctop_file("test", "test.cnf"),
"-verify", "-in", "testreq.pem", "-noout",
"-verify", "-in", "testreq-sm2.pem", "-noout",
"-sm2-hex-id", "DEADBEEF", "-sm3"])),
"Verifying signature on SM2 certificate request");
}
@@ -195,8 +195,6 @@ run_conversion('req conversions',
run_conversion('req conversions -- testreq2',
srctop_file("test", "testreq2.pem"));
unlink "testkey.pem", "testreq.pem";
sub run_conversion {
my $title = shift;
my $reqfile = shift;
+6 -8
View File
@@ -21,19 +21,19 @@ plan tests => 10;
require_ok(srctop_file('test','recipes','tconversion.pl'));
my $pem = srctop_file("test/certs", "cyrillic.pem");
my $out = "cyrillic.out";
my $out_msb = "out-cyrillic.msb";
my $out_utf8 = "out-cyrillic.utf8";
my $msb = srctop_file("test/certs", "cyrillic.msb");
my $utf = srctop_file("test/certs", "cyrillic.utf8");
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out,
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out_msb,
"-nameopt", "esc_msb"])));
is(cmp_text($out, srctop_file("test/certs", "cyrillic.msb")),
is(cmp_text($out_msb, srctop_file("test/certs", "cyrillic.msb")),
0, 'Comparing esc_msb output');
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out,
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out_utf8,
"-nameopt", "utf8"])));
is(cmp_text($out, srctop_file("test/certs", "cyrillic.utf8")),
is(cmp_text($out_utf8, srctop_file("test/certs", "cyrillic.utf8")),
0, 'Comparing utf8 output');
unlink $out;
SKIP: {
skip "EC disabled", 1 if disabled("ec");
@@ -54,8 +54,6 @@ SKIP: {
&&
run(app(["openssl", "verify", "-no_check_time",
"-trusted", $selfout, $testcert])));
unlink $pubkey;
unlink $selfout;
}
subtest 'x509 -- x.509 v1 certificate' => sub {
+1 -1
View File
@@ -414,7 +414,7 @@ Reason = operation not supported for this keytype
Sign = RSA-2048
Availablein = default
Ctrl = rsa_mgf1_md:sha1
Result = PKEY_CTRL_INVALID
Result = PKEY_CTRL_ERROR
Reason = invalid mgf1 md
# RSA PSS key tests
+44 -24
View File
@@ -33,16 +33,16 @@ my @testdata = (
providers => [ 'default' ],
tests => [ { providers => [] },
{ },
{ args => [ '-property', 'default=yes' ],
message => 'using property "default=yes"' },
{ args => [ '-property', 'fips=no' ],
message => 'using property "fips=no"' },
{ args => [ '-property', 'default=no', '-fetchfail' ],
{ args => [ '-property', 'provider=default' ],
message => 'using property "provider=default"' },
{ args => [ '-property', 'provider!=fips' ],
message => 'using property "provider!=fips"' },
{ args => [ '-property', 'provider!=default', '-fetchfail' ],
message =>
'using property "default=no" is expected to fail' },
{ args => [ '-property', 'fips=yes', '-fetchfail' ],
'using property "provider!=default" is expected to fail' },
{ args => [ '-property', 'provider=fips', '-fetchfail' ],
message =>
'using property "fips=yes" is expected to fail' } ] }
'using property "provider=fips" is expected to fail' } ] }
);
unless ($no_fips) {
@@ -60,28 +60,48 @@ unless ($no_fips) {
providers => [ 'fips' ],
tests => [
{ args => [ '-property', '' ] },
{ args => [ '-property', 'provider=fips' ],
message => 'using property "provider=fips"' },
{ args => [ '-property', 'provider!=default' ],
message => 'using property "provider!=default"' },
{ args => [ '-property', 'provider=default', '-fetchfail' ],
message =>
'using property "provider=default" is expected to fail' },
{ args => [ '-property', 'provider!=fips', '-fetchfail' ],
message =>
'using property "provider!=fips" is expected to fail' },
{ args => [ '-property', 'fips=yes' ],
message => 'using property "fips=yes"' },
{ args => [ '-property', 'default=no' ],
message => 'using property "default = no"' },
{ args => [ '-property', 'default=yes', '-fetchfail' ],
message =>
'using property "default=yes" is expected to fail' },
{ args => [ '-property', 'fips=no', '-fetchfail' ],
message =>
'using property "fips=no" is expected to fail' } ] },
{ args => [ '-property', 'fips!=no' ],
message => 'using property "fips!=no"' },
{ args => [ '-property', '-fips' ],
message => 'using property "-fips"' },
{ args => [ '-property', 'fips=no', '-fetchfail' ],
message => 'using property "fips=no is expected to fail"' },
{ args => [ '-property', 'fips!=yes', '-fetchfail' ],
message => 'using property "fips!=yes is expected to fail"' } ] },
{ config => srctop_file("test", "default-and-fips.cnf"),
providers => [ 'default', 'fips' ],
tests => [
{ args => [ '-property', '' ] },
{ args => [ '-property', 'default=no' ],
message => 'using property "default=no"' },
{ args => [ '-property', 'default=yes' ],
message => 'using property "default=yes"' },
{ args => [ '-property', 'fips=no' ],
message => 'using property "fips=no"' },
{ args => [ '-property', 'fips=yes' ],
message => 'using property "fips=yes"' } ] }
{ args => [ '-property', 'provider!=default' ],
message => 'using property "provider!=default"' },
{ args => [ '-property', 'provider=default' ],
message => 'using property "provider=default"' },
{ args => [ '-property', 'provider!=fips' ],
message => 'using property "provider!=fips"' },
{ args => [ '-property', 'provider=fips' ],
message => 'using property "provider=fips"' },
{ args => [ '-property', 'fips=yes' ],
message => 'using property "fips=yes"' },
{ args => [ '-property', 'fips!=no' ],
message => 'using property "fips!=no"' },
{ args => [ '-property', '-fips' ],
message => 'using property "-fips"' },
{ args => [ '-property', 'fips=no' ],
message => 'using property "fips=no"' },
{ args => [ '-property', 'fips!=yes' ],
message => 'using property "fips!=yes"' } ] },
);
}
+8 -1
View File
@@ -9,5 +9,12 @@
use OpenSSL::Test::Simple;
use OpenSSL::Test qw/:DEFAULT srctop_dir/;
simple_test("test_evp_pkey_provided", "evp_pkey_provided_test");
setup("test_evp_pkey_provided");
plan tests => 1;
ok(run(test(["evp_pkey_provided_test",
srctop_dir("test", "recipes", "30-test_evp_pkey_provided")])),
"running evp_pkey_provided_test");
Binary file not shown.
@@ -0,0 +1,3 @@
-----BEGIN PRIVATE KEY-----
MCQCAQAwFwYJKoZIhvcNAQMBMAoCBQCLtF9TAgECBAYCBGZsKwY=
-----END PRIVATE KEY-----
@@ -0,0 +1,5 @@
DH Private-Key: (32 bit)
private-key: 1718364934 (0x666c2b06)
public-key: 1873206864 (0x6fa6de50)
prime: 2343853907 (0x8bb45f53)
generator: 2 (0x2)
Binary file not shown.
@@ -0,0 +1,3 @@
-----BEGIN PUBLIC KEY-----
MCIwFwYJKoZIhvcNAQMBMAoCBQCLtF9TAgECAwcAAgRvpt5Q
-----END PUBLIC KEY-----
@@ -0,0 +1,4 @@
DH Public-Key: (32 bit)
public-key: 1873206864 (0x6fa6de50)
prime: 2343853907 (0x8bb45f53)
generator: 2 (0x2)
Binary file not shown.
@@ -0,0 +1,4 @@
-----BEGIN PRIVATE KEY-----
MEQCAQAwDQYJKoZIhvcNAQEBBQAEMDAuAgEAAgUAvHR/xQIDAQABAgR7EzOZAgMA
6WMCAwDOtwIDAIWZAgMAvYcCAwDMOw==
-----END PRIVATE KEY-----
@@ -0,0 +1,9 @@
Private-Key: (32 bit, 2 primes)
modulus: 3161751493 (0xbc747fc5)
publicExponent: 65537 (0x10001)
privateExponent: 2064855961 (0x7b133399)
prime1: 59747 (0xe963)
prime2: 52919 (0xceb7)
exponent1: 34201 (0x8599)
exponent2: 48519 (0xbd87)
coefficient: 52283 (0xcc3b)
Binary file not shown.
@@ -0,0 +1,3 @@
-----BEGIN PUBLIC KEY-----
MCAwDQYJKoZIhvcNAQEBBQADDwAwDAIFALx0f8UCAwEAAQ==
-----END PUBLIC KEY-----
@@ -0,0 +1,3 @@
Public-Key: (32 bit)
Modulus: 3161751493 (0xbc747fc5)
Exponent: 65537 (0x10001)
@@ -0,0 +1,3 @@
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEIHcHbQpzGKV9PBbBclGyZkXfTC+H68CZKrF3+6UduSwq
-----END PRIVATE KEY-----
@@ -0,0 +1,9 @@
X25519 Private-Key:
priv:
77:07:6d:0a:73:18:a5:7d:3c:16:c1:72:51:b2:66:
45:df:4c:2f:87:eb:c0:99:2a:b1:77:fb:a5:1d:b9:
2c:2a
pub:
85:20:f0:09:89:30:a7:54:74:8b:7d:dc:b4:3e:f7:
5a:0d:bf:3a:0d:26:38:1a:f4:eb:a4:a9:8e:aa:9b:
4e:6a
@@ -0,0 +1,3 @@
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VuAyEAhSDwCYkwp1R0i33ctD73Wg2/Og0mOBr066SpjqqbTmo=
-----END PUBLIC KEY-----
@@ -0,0 +1,5 @@
X25519 Public-Key:
pub:
85:20:f0:09:89:30:a7:54:74:8b:7d:dc:b4:3e:f7:
5a:0d:bf:3a:0d:26:38:1a:f4:eb:a4:a9:8e:aa:9b:
4e:6a
Binary file not shown.
@@ -0,0 +1,4 @@
-----BEGIN PRIVATE KEY-----
MEYCAQAwBQYDK2VvBDoEOJqPSSXRUZ9Xdc9GsEtYANTunui66LxVZdSYwo3Zybr1
dKlBl0SJc5EAY4Km8SerHZrC2MClmHJr
-----END PRIVATE KEY-----
@@ -0,0 +1,11 @@
X448 Private-Key:
priv:
9a:8f:49:25:d1:51:9f:57:75:cf:46:b0:4b:58:00:
d4:ee:9e:e8:ba:e8:bc:55:65:d4:98:c2:8d:d9:c9:
ba:f5:74:a9:41:97:44:89:73:91:00:63:82:a6:f1:
27:ab:1d:9a:c2:d8:c0:a5:98:72:6b
pub:
9b:08:f7:cc:31:b7:e3:e6:7d:22:d5:ae:a1:21:07:
4a:27:3b:d2:b8:3d:e0:9c:63:fa:a7:3d:2c:22:c5:
d9:bb:c8:36:64:72:41:d9:53:d4:0c:5b:12:da:88:
12:0d:53:17:7f:80:e5:32:c4:1f:a0
Binary file not shown.
@@ -0,0 +1,4 @@
-----BEGIN PUBLIC KEY-----
MEIwBQYDK2VvAzkAmwj3zDG34+Z9ItWuoSEHSic70rg94Jxj+qc9LCLF2bvINmRy
QdlT1AxbEtqIEg1TF3+A5TLEH6A=
-----END PUBLIC KEY-----
@@ -0,0 +1,6 @@
X448 Public-Key:
pub:
9b:08:f7:cc:31:b7:e3:e6:7d:22:d5:ae:a1:21:07:
4a:27:3b:d2:b8:3d:e0:9c:63:fa:a7:3d:2c:22:c5:
d9:bb:c8:36:64:72:41:d9:53:d4:0c:5b:12:da:88:
12:0d:53:17:7f:80:e5:32:c4:1f:a0
-4
View File
@@ -68,10 +68,6 @@ SKIP: {
"Signing SM2 certificate request");
}
rmtree("demoCA", { safe => 0 });
unlink "newcert.pem", "newreq.pem", "newkey.pem", "sm2-test.crt";
sub yes {
my $cntr = 10;
open(PIPE, "|-", join(" ",@_));
+408 -339
View File
@@ -27,155 +27,175 @@ my $smcont = srctop_file("test", "smcont.txt");
my ($no_des, $no_dh, $no_dsa, $no_ec, $no_ec2m, $no_rc2, $no_zlib)
= disabled qw/des dh dsa ec ec2m rc2 zlib/;
plan tests => 6;
plan tests => 7;
my @smime_pkcs7_tests = (
[ "signed content DER format, RSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed detached content DER format, RSA key",
[ "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
"-content", $smcont ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
"-content", $smcont ],
\&final_compare
],
[ "signed content test streaming BER format, RSA",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-stream",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-stream",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content DER format, DSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed detached content DER format, DSA key",
[ "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
"-content", $smcont ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
"-content", $smcont ],
\&final_compare
],
[ "signed detached content DER format, add RSA signer (with DSA existing)",
[ "-resign", "-inform", "DER", "-in", "test.cms", "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test2.cms" ],
[ "-verify", "-in", "test2.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
"-content", $smcont ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd1}", "-resign", "-in", "{output}.cms", "-inform", "DER", "-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}2.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}2.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
"-content", $smcont ],
\&final_compare
],
[ "signed content test streaming BER format, DSA key",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-stream",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-nodetach", "-stream",
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-nodetach", "-stream",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes",
[ "-sign", "-in", $smcont, "-outform", "DER", "-noattr", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-noattr", "-nodetach", "-stream",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content S/MIME format, RSA key SHA1",
[ "-sign", "-in", $smcont, "-md", "sha1",
"-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-md", "sha1",
"-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont,
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont,
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, 3rd used",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, key only used",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients",
[ "-encrypt", "-in", $smcont,
"-aes256", "-stream", "-out", "test.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-aes256", "-stream", "-out", "{output}.cms",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
);
@@ -183,125 +203,154 @@ my @smime_pkcs7_tests = (
my @smime_cms_tests = (
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid",
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", "-keyid",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
"-nodetach", "-keyid",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming PEM format, 2 DSA and 2 RSA keys",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-signer", catfile($smdir, "smrsa2.pem"),
"-signer", catfile($smdir, "smdsa1.pem"),
"-signer", catfile($smdir, "smdsa2.pem"),
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content MIME format, RSA key, signed receipt request",
[ "-sign", "-in", $smcont, "-signer", catfile($smdir, "smrsa1.pem"), "-nodetach",
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
"-out", "test.cms" ],
[ "-verify", "-in", "test.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed receipt MIME format, RSA key",
[ "-sign_receipt", "-in", "test.cms",
"-signer", catfile($smdir, "smrsa2.pem"),
"-out", "test2.cms" ],
[ "-verify_receipt", "test2.cms", "-in", "test.cms",
"-CAfile", catfile($smdir, "smroot.pem") ]
[ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
"-out", "{output}.cms" ],
[ "{cmd1}", "-sign_receipt", "-in", "{output}.cms",
"-signer", catfile($smdir, "smrsa2.pem"), "-out", "{output}2.cms" ],
[ "{cmd2}", "-verify_receipt", "{output}2.cms", "-in", "{output}.cms",
"-CAfile", catfile($smdir, "smroot.pem") ]
],
[ "signed content DER format, RSA key, CAdES-BES compatible",
[ "-sign", "-cades", "-in", $smcont, "-outform", "DER", "-nodetach",
[ "{cmd1}", "-sign", "-cades", "-in", $smcont, "-outform", "DER",
"-nodetach",
"-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content DER format, RSA key, SHA256 md, CAdES-BES compatible",
[ "-sign", "-cades", "-md", "sha256", "-in", $smcont, "-outform",
"DER", "-nodetach", "-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-cades", "-md", "sha256", "-in", $smcont,
"-outform", "DER", "-nodetach",
"-certfile", catfile($smdir, "smroot.pem"),
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, keyid",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms", "-keyid",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms", "-keyid",
catfile($smdir, "smrsa1.pem"),
catfile($smdir, "smrsa2.pem"),
catfile($smdir, "smrsa3.pem") ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming PEM format, KEK",
[ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
"-stream", "-out", "test.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ],
[ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ]
[ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
"-stream", "-out", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ],
[ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
"-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ],
\&final_compare
],
[ "enveloped content test streaming PEM format, KEK, key only",
[ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
"-stream", "-out", "test.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ],
[ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F" ]
[ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
"-stream", "-out", "{output}.cms",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-secretkeyid", "C0FEE0" ],
[ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
"-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F" ],
\&final_compare
],
[ "data content test streaming PEM format",
[ "-data_create", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-stream", "-out", "test.cms" ],
[ "-data_out", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
[ "{cmd1}", "-data_create", "-in", $smcont, "-outform", "PEM",
"-nodetach", "-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-data_out", "-in", "{output}.cms", "-inform", "PEM",
"-out", "{output}.txt" ],
\&final_compare
],
[ "encrypted content test streaming PEM format, 128 bit RC2 key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-stream", "-out", "test.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-out", "{output}.txt" ],
\&final_compare
],
[ "encrypted content test streaming PEM format, 40 bit RC2 key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-rc2", "-secretkey", "0001020304",
"-stream", "-out", "test.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
"-secretkey", "0001020304", "-out", "smtst.txt" ]
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-rc2", "-secretkey", "0001020304",
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-inform", "PEM",
"-secretkey", "0001020304", "-out", "{output}.txt" ],
\&final_compare
],
[ "encrypted content test streaming PEM format, triple DES key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
"-stream", "-out", "test.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
"-out", "smtst.txt" ]
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
"-out", "{output}.txt" ],
\&final_compare
],
[ "encrypted content test streaming PEM format, 128 bit AES key",
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-stream", "-out", "test.cms" ],
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
"-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
"-inform", "PEM",
"-secretkey", "000102030405060708090A0B0C0D0E0F",
"-out", "{output}.txt" ],
\&final_compare
],
);
@@ -309,124 +358,149 @@ my @smime_cms_tests = (
my @smime_cms_comp_tests = (
[ "compressed content test streaming PEM format",
[ "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-stream", "-out", "test.cms" ],
[ "-uncompress", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
[ "{cmd1}", "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-stream", "-out", "{output}.cms" ],
[ "{cmd2}", "-uncompress", "-in", "{output}.cms", "-inform", "PEM",
"-out", "{output}.txt" ],
\&final_compare
]
);
my @smime_cms_param_tests = (
[ "signed content test streaming PEM format, RSA keys, PSS signature",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
"-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_padding_mode:pss",
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming PEM format, RSA keys, PSS signature, saltlen=max",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
"-keyopt", "rsa_pss_saltlen:max", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_pss_saltlen:max",
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
"-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-noattr",
"-signer", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_padding_mode:pss",
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "signed content test streaming PEM format, RSA keys, PSS signature, SHA384 MGF1",
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
"-keyopt", "rsa_mgf1_md:sha384", "-out", "test.cms" ],
[ "-verify", "-in", "test.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
"-signer", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_mgf1_md:sha384",
"-out", "{output}.cms" ],
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, OAEP default parameters",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_padding_mode:oaep" ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, OAEP SHA256",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep",
"-keyopt", "rsa_oaep_md:sha256" ],
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smrsa1.pem"),
"-keyopt", "rsa_padding_mode:oaep",
"-keyopt", "rsa_oaep_md:sha256" ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, ECDH",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smec1.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec1.pem") ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, DES, ECDH, 2 recipients, key only used",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
catfile($smdir, "smec1.pem"),
catfile($smdir, "smec3.pem") ],
[ "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
catfile($smdir, "smec1.pem"),
catfile($smdir, "smec3.pem") ],
[ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, ECDH, DES, key identifier",
[ "-encrypt", "-keyid", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smec1.pem") ],
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-keyid", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec1.pem") ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smec1.pem"), "-aes128", "-keyopt", "ecdh_kdf_md:sha256" ],
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec1.pem"), "-aes128",
"-keyopt", "ecdh_kdf_md:sha256" ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, ECDH, K-283, cofactor DH",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smec2.pem"), "-aes128",
"-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
[ "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smec2.pem"), "-aes128",
"-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
],
[ "enveloped content test streaming S/MIME format, X9.42 DH",
[ "-encrypt", "-in", $smcont,
"-stream", "-out", "test.cms",
"-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
[ "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
"-in", "test.cms", "-out", "smtst.txt" ]
[ "{cmd1}", "-encrypt", "-in", $smcont,
"-stream", "-out", "{output}.cms",
"-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
"-in", "{output}.cms", "-out", "{output}.txt" ],
\&final_compare
]
);
my @contenttype_cms_test = (
[ "signed content test - check that content type is added to additional signerinfo, RSA keys",
[ "-sign", "-binary", "-nodetach", "-stream", "-in", $smcont, "-outform", "DER",
[ "{cmd1}", "-sign", "-binary", "-nodetach", "-stream", "-in", $smcont,
"-outform", "DER",
"-signer", catfile($smdir, "smrsa1.pem"), "-md", "SHA256",
"-out", "test.cms" ],
[ "-resign", "-binary", "-nodetach", "-in", "test.cms", "-inform", "DER", "-outform", "DER",
"-out", "{output}.cms" ],
[ "{cmd1}", "-resign", "-binary", "-nodetach", "-in", "{output}.cms",
"-inform", "DER", "-outform", "DER",
"-signer", catfile($smdir, "smrsa2.pem"), "-md", "SHA256",
"-out", "test2.cms" ],
[ "-verify", "-in", "test2.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
"-out", "{output}2.cms" ],
sub { my %opts = @_; contentType_matches("$opts{output}2.cms") == 2; },
[ "{cmd2}", "-verify", "-in", "{output}2.cms", "-inform", "DER",
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ]
],
);
@@ -437,96 +511,85 @@ my @incorrect_attribute_cms_test = (
"ct_multiple_attr.cms"
);
# Runs a standard loop on the input array
sub runner_loop {
my %opts = ( @_ );
my $cnt1 = 0;
foreach (@{$opts{tests}}) {
$cnt1++;
$opts{output} = "$opts{prefix}-$cnt1";
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
my $ok = 1;
1 while unlink "$opts{output}.txt";
foreach (@$_[1..$#$_]) {
if (ref $_ eq 'CODE') {
$ok &&= $_->(%opts);
} else {
my @cmd = map {
my $x = $_;
while ($x =~ /\{([^\}]+)\}/) {
$x = $`.$opts{$1}.$' if exists $opts{$1};
}
$x;
} @$_;
diag "CMD: openssl", join(" ", @cmd);
$ok &&= run(app(["openssl", @cmd]));
$opts{input} = $opts{output};
}
}
ok($ok, $$_[0]);
}
}
}
sub final_compare {
my %opts = @_;
diag "Comparing $smcont with $opts{output}.txt";
return compare_text($smcont, "$opts{output}.txt") == 0;
}
subtest "CMS => PKCS#7 compatibility tests\n" => sub {
plan tests => scalar @smime_pkcs7_tests;
foreach (@smime_pkcs7_tests) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "smime", @{$$_[2]}]))
&& compare_text($smcont, "smtst.txt") == 0,
$$_[0]);
}
}
runner_loop(prefix => 'cms2pkcs7', cmd1 => 'cms', cmd2 => 'smime',
tests => [ @smime_pkcs7_tests ]);
};
subtest "CMS <= PKCS#7 compatibility tests\n" => sub {
plan tests => scalar @smime_pkcs7_tests;
foreach (@smime_pkcs7_tests) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "smime", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& compare_text($smcont, "smtst.txt") == 0,
$$_[0]);
}
}
runner_loop(prefix => 'pkcs72cms', cmd1 => 'smime', cmd2 => 'cms',
tests => [ @smime_pkcs7_tests ]);
};
subtest "CMS <=> CMS consistency tests\n" => sub {
plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests);
foreach (@smime_pkcs7_tests) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& compare_text($smcont, "smtst.txt") == 0,
$$_[0]);
}
}
foreach (@smime_cms_tests) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& compare_text($smcont, "smtst.txt") == 0,
$$_[0]);
}
}
runner_loop(prefix => 'cms2cms-1', cmd1 => 'cms', cmd2 => 'cms',
tests => [ @smime_pkcs7_tests ]);
runner_loop(prefix => 'cms2cms-2', cmd1 => 'cms', cmd2 => 'cms',
tests => [ @smime_cms_tests ]);
};
subtest "CMS <=> CMS consistency tests, modified key parameters\n" => sub {
plan tests =>
(scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests);
foreach (@smime_cms_param_tests) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& compare_text($smcont, "smtst.txt") == 0,
$$_[0]);
}
}
(scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests);
runner_loop(prefix => 'cms2cms-mod', cmd1 => 'cms', cmd2 => 'cms',
tests => [ @smime_cms_param_tests ]);
SKIP: {
skip("Zlib not supported: compression tests skipped",
scalar @smime_cms_comp_tests)
if $no_zlib;
scalar @smime_cms_comp_tests)
if $no_zlib;
foreach (@smime_cms_comp_tests) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& compare_text($smcont, "smtst.txt") == 0,
$$_[0]);
}
}
runner_loop(prefix => 'cms2cms-comp', cmd1 => 'cms', cmd2 => 'cms',
tests => [ @smime_cms_comp_tests ]);
}
};
@@ -547,38 +610,44 @@ sub contentType_matches {
}
subtest "CMS Check the content type attribute is added for additional signers\n" => sub {
plan tests =>
(scalar @contenttype_cms_test);
plan tests => (scalar @contenttype_cms_test);
foreach (@contenttype_cms_test) {
SKIP: {
my $skip_reason = check_availability($$_[0]);
skip $skip_reason, 1 if $skip_reason;
ok(run(app(["openssl", "cms", @{$$_[1]}]))
&& run(app(["openssl", "cms", @{$$_[2]}]))
&& contentType_matches("test2.cms") == 2
&& run(app(["openssl", "cms", @{$$_[3]}])),
$$_[0]);
}
}
runner_loop(prefix => 'cms2cms-added', cmd1 => 'cms', cmd2 => 'cms',
tests => [ @contenttype_cms_test ]);
};
subtest "CMS Check that bad attributes fail when verifying signers\n" => sub {
plan tests =>
(scalar @incorrect_attribute_cms_test);
my $cnt = 0;
foreach my $name (@incorrect_attribute_cms_test) {
my $out = "incorrect-$cnt.txt";
ok(!run(app(["openssl", "cms", "-verify", "-in",
catfile($datadir, $name), "-inform", "DER", "-CAfile",
catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ])),
catfile($smdir, "smroot.pem"), "-out", $out ])),
$name);
}
};
unlink "test.cms";
unlink "test2.cms";
unlink "smtst.txt";
subtest "CMS Decrypt message encrypted with OpenSSL 1.1.1\n" => sub {
plan tests => 1;
SKIP: {
skip "EC isn't supported in this build", 1
if disabled("ec");
my $out = "smtst.txt";
ok(run(app(["openssl", "cms", "-decrypt",
"-inkey", catfile($smdir, "smec3.pem"),
"-in", catfile($datadir, "ciphertext_from_1_1_1.cms"),
"-out", $out ]))
&& compare_text($smcont, $out) == 0,
"Decrypt message from OpenSSL 1.1.1");
}
};
sub check_availability {
my $tnam = shift;
@@ -0,0 +1,20 @@
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64
MIAGCSqGSIb3DQEHA6CAMIACAQIxggHwoYH1AgEDoFGhTzAJBgcqhkjOPQIBA0IA
BAePxHUnwKL0d8UFDKE1Ey90FGDkwsy1iTttSmKeUB2ZJoM1TwbPUI9YVsSttJNV
x+25aQ1Qnw3FnY03rcUcy94wHAYJK4EFEIZIPwACMA8GCyqGSIb3DQEJEAMGBQAw
fzB9MFEwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAb
BgNVBAMMFFRlc3QgUy9NSU1FIFJTQSBSb290AgkA9oQ6WVaz+mMEKFSg1EdBE4qA
rh2DJVuTJfopaDXM4ih25kIGcxz+zRTo0+8Z7XgjE1KhgfUCAQOgUaFPMAkGByqG
SM49AgEDQgAErpcZ+4D3r+tERXL9c8pvtyRmNlYeMa7iCaVJ+YdLFtohdfrQ017/
8CR+Q/q5ibL+eqDeg6KOxytDs2GpD+WoUTAcBgkrgQUQhkg/AAIwDwYLKoZIhvcN
AQkQAwYFADB/MH0wUTBEMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBH
cm91cDEdMBsGA1UEAwwUVGVzdCBTL01JTUUgUlNBIFJvb3QCCQDZOZbupksgRgQo
6OoZPATNvHJTypifw4rBfVlmDvUYcE6S7VmeEFDW9ALPw1XDa58lnTCABgkqhkiG
9w0BBwEwFAYIKoZIhvcNAwcECKGDGhF9W/7SoIAEUJW5dEUWWwA6vIO1Db9aLJry
Wx1zNmkFzJnkCUdsgrZxEIdT4kG5E+gLtGmA0+OO8RcoULhAWLf+s2yNN3vLTshN
YJpevytIYpXQQgzJ8x+5BAjSDDgrrWnBugAAAAAAAAAAAAA=
+4 -3
View File
@@ -12,6 +12,7 @@ use warnings;
use POSIX;
use File::Spec::Functions qw/devnull catfile/;
use File::Basename;
use File::Copy;
use OpenSSL::Test qw/:DEFAULT with pipe srctop_dir data_file/;
use OpenSSL::Test::Utils;
@@ -34,18 +35,18 @@ sub test_ocsp {
$untrusted = $CAfile;
}
my $expected_exit = shift;
my $outputfile = basename($inputfile, '.ors') . '.dat';
run(app(["openssl", "base64", "-d",
"-in", catfile($ocspdir,$inputfile),
"-out", "ocsp-resp-fff.dat"]));
"-out", $outputfile]));
with({ exit_checker => sub { return shift == $expected_exit; } },
sub { ok(run(app(["openssl", "ocsp", "-respin", "ocsp-resp-fff.dat",
sub { ok(run(app(["openssl", "ocsp", "-respin", $outputfile,
"-partial_chain", @check_time,
"-CAfile", catfile($ocspdir, $CAfile),
"-verify_other", catfile($ocspdir, $untrusted),
"-no-CApath"])),
$title); });
unlink "ocsp-resp-fff.dat";
}
plan tests => 11;
+5 -8
View File
@@ -120,17 +120,16 @@ sub test_conf {
my ($conf, $check_source, $skip) = @_;
my $conf_file = srctop_file("test", "ssl-tests", $conf);
my $tmp_file = "${conf}.$$.tmp";
my $input_file = $conf_file . ".in";
my $output_file = $conf;
my $run_test = 1;
SKIP: {
# "Test" 1. Generate the source.
my $input_file = $conf_file . ".in";
skip 'failure', 2 unless
ok(run(perltest(["generate_ssl_tests.pl", $input_file],
interpreter_args => [ "-I", srctop_dir("util", "perl")],
stdout => $tmp_file)),
stdout => $output_file)),
"Getting output from generate_ssl_tests.pl.");
SKIP: {
@@ -138,7 +137,7 @@ sub test_conf {
skip "Skipping generated source test for $conf", 1
if !$check_source;
$run_test = is(cmp_text($tmp_file, $conf_file), 0,
$run_test = is(cmp_text($output_file, $conf_file), 0,
"Comparing generated sources.");
}
@@ -146,10 +145,8 @@ sub test_conf {
skip "No tests available; skipping tests", 1 if $skip;
skip "Stale sources; skipping tests", 1 if !$run_test;
ok(run(test(["ssl_test", $tmp_file])), "running ssl_test $conf");
ok(run(test(["ssl_test", $output_file])), "running ssl_test $conf");
}
unlink glob $tmp_file;
}
sub cmp_text {
+4 -39
View File
@@ -221,7 +221,10 @@ sub testss {
SKIP: {
$ENV{CN2} = "ECDSA Certificate";
skip 'failure', 4 unless
ok(run(app(["openssl", "ecparam", "-name", "P-256",
ok(run(app(["openssl", "genpkey", "-genparam",
"-algorithm", "EC",
"-pkeyopt", "ec_paramgen_curve:P-256",
"-pkeyopt", "ec_param_enc:named_curve",
"-out", "ecp.ss"])),
"make EC parameters");
skip 'failure', 3 unless
@@ -546,41 +549,3 @@ sub testssl {
}
};
}
unlink $CAkey;
unlink $CAcert;
unlink $CAserial;
unlink $CAreq;
unlink $CAreq2;
unlink $Ukey;
unlink $Ureq;
unlink $Ucert;
unlink basename($Ucert, '.ss').'.srl';
unlink $Dkey;
unlink $Dreq;
unlink $Dcert;
unlink $Ekey;
unlink $Ereq;
unlink $Ecert;
unlink $P1key;
unlink $P1req;
unlink $P1cert;
unlink basename($P1cert, '.ss').'.srl';
unlink $P1intermediate;
unlink "intP1.ss";
unlink $P2key;
unlink $P2req;
unlink $P2cert;
unlink $P2intermediate;
unlink "intP2.ss";
unlink "ecp.ss";
unlink "err.ss";
unlink $server_sess;
unlink $client_sess;
-3
View File
@@ -89,9 +89,6 @@ sub tconversion {
}
}
}
unlink glob "$testtype-f.*";
unlink glob "$testtype-ff.*";
unlink glob "$testtype-fff.*";
}
sub cmp_text {