mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-04-27 02:04:37 +00:00
TEST: Clarify and adjust test/recipes/30-test_evp.t
There are a few test cases at the end of test/recipes/30-test_evp.t, which are designed to check that loading DSA keys when DSA is disabled, or SM2 keys when SM2 is disables fail in an understandable way. These needed a small adjustment. Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14314)
This commit is contained in:
parent
c640b68785
commit
55d9ccca8e
@ -130,19 +130,29 @@ foreach my $f ( @defltfiles ) {
|
||||
"running evp_test -config $conf $f");
|
||||
}
|
||||
|
||||
# test_errors OPTIONS
|
||||
#
|
||||
# OPTIONS may include:
|
||||
#
|
||||
# key => "filename" # expected to be found in $SRCDIR/test/certs
|
||||
# out => "filename" # file to write error strings to
|
||||
# args => [ ... extra openssl pkey args ... ]
|
||||
# expected => regexps to match error lines against
|
||||
sub test_errors { # actually tests diagnostics of OSSL_STORE
|
||||
my ($expected, $key, @opts) = @_;
|
||||
my $infile = srctop_file('test', 'certs', $key);
|
||||
my @args = qw(openssl pkey -in);
|
||||
push(@args, $infile, @opts);
|
||||
my $tmpfile = 'out.txt';
|
||||
my $res = !run(app([@args], stderr => $tmpfile));
|
||||
my $found = 0;
|
||||
open(my $in, '<', $tmpfile) or die "Could not open file $tmpfile";
|
||||
while(<$in>) {
|
||||
print; # this may help debugging
|
||||
$res &&= !m/asn1 encoding/; # output must not include ASN.1 parse errors
|
||||
$found = 1 if m/$expected/; # output must include $expected
|
||||
my %opts = @_;
|
||||
my $infile = srctop_file('test', 'certs', $opts{key});
|
||||
my @args = ( qw(openssl pkey -in), $infile, @{$opts{args} // []} );
|
||||
my $res = !run(app([@args], stderr => $opts{out}));
|
||||
my $found = !exists $opts{expected};
|
||||
open(my $in, '<', $opts{out}) or die "Could not open file $opts{out}";
|
||||
while(my $errline = <$in>) {
|
||||
print $errline; # this may help debugging
|
||||
|
||||
# output must not include ASN.1 parse errors
|
||||
$res &&= $errline !~ m/asn1 encoding/;
|
||||
# output must include what is expressed in $opts{$expected}
|
||||
$found = 1
|
||||
if exists $opts{expected} && $errline =~ m/$opts{expected}/;
|
||||
}
|
||||
close $in;
|
||||
# $tmpfile is kept to help with investigation in case of failure
|
||||
@ -152,15 +162,19 @@ sub test_errors { # actually tests diagnostics of OSSL_STORE
|
||||
SKIP: {
|
||||
skip "DSA not disabled", 2 if !disabled("dsa");
|
||||
|
||||
ok(test_errors("unsupported algorithm", "server-dsa-key.pem"),
|
||||
"error loading unsupported dsa private key");
|
||||
ok(test_errors("unsupported algorithm", "server-dsa-pubkey.pem", "-pubin"),
|
||||
"error loading unsupported dsa public key");
|
||||
ok(test_errors(key => 'server-dsa-key.pem',
|
||||
out => 'server-dsa-key.err'),
|
||||
"expected error loading unsupported dsa private key");
|
||||
ok(test_errors(key => 'server-dsa-pubkey.pem',
|
||||
out => 'server-dsa-pubkey.err',
|
||||
args => [ '-pubin' ],
|
||||
expected => 'unsupported algorithm'),
|
||||
"expected error loading unsupported dsa public key");
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
skip "sm2 not disabled", 1 if !disabled("sm2");
|
||||
skip "SM2 not disabled", 1 if !disabled("sm2");
|
||||
|
||||
ok(test_errors("unknown group|unsupported algorithm", "sm2.key"),
|
||||
"error loading unsupported sm2 private key");
|
||||
ok(test_errors(key => 'sm2.key', out => 'sm2.err'),
|
||||
"expected error loading unsupported sm2 private key");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user