25-test_x509.t: Add test for suitable error report loading unsupported sm2 cert
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Mon, 28 Sep 2020 17:44:49 +0000 (19:44 +0200)
committerDr. David von Oheimb <David.von.Oheimb@siemens.com>
Wed, 30 Sep 2020 18:49:44 +0000 (20:49 +0200)
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/13023)

test/recipes/25-test_x509.t

index 4b37ee6464bb88214a5288b02af0bb221377e604..f5b4245960eff99b8c0b441531b1c628dd6ea5c3 100644 (file)
@@ -16,7 +16,7 @@ use OpenSSL::Test qw/:DEFAULT srctop_file/;
 
 setup("test_x509");
 
-plan tests => 14;
+plan tests => 15;
 
 require_ok(srctop_file('test','recipes','tconversion.pl'));
 
@@ -105,9 +105,10 @@ sub test_errors { # actually tests diagnostics of OSSL_STORE
     my ($expected, $cert, @opts) = @_;
     my $infile = srctop_file('test', 'certs', $cert);
     my @args = qw(openssl x509 -in);
-    push(@args, "$infile", @opts);
+    push(@args, $infile, @opts);
     my $tmpfile = 'out.txt';
-    my $res = !run(app([@args], stderr => $tmpfile));
+    my $res =  grep(/-text/, @opts) ? run(app([@args], stdout => $tmpfile))
+                                    : !run(app([@args], stderr => $tmpfile));
     my $found = 0;
     open(my $in, '<', $tmpfile) or die "Could not open file $tmpfile";
     while(<$in>) {
@@ -116,7 +117,7 @@ sub test_errors { # actually tests diagnostics of OSSL_STORE
         $found = 1 if m/$expected/; # output must include $expected
     }
     close $in;
-    unlink $tmpfile;
+    # $tmpfile is kept to help with investigation in case of failure
     return $res && $found;
 }
 
@@ -124,3 +125,9 @@ ok(test_errors("Can't open any-dir/", "root-cert.pem", '-out', 'any-dir/'),
    "load root-cert errors");
 ok(test_errors("RC2-40-CBC", "v3-certs-RC2.p12", '-passin', 'pass:v3-certs'),
    "load v3-certs-RC2 no asn1 errors");
+SKIP: {
+    skip "sm2 not disabled", 1 if !disabled("sm2");
+
+    ok(test_errors("unknown group|unsupported algorithm", "sm2.pem", '-text'),
+       "error loading unsupported sm2 cert");
+}