Add test for DSA pubkey without param import and check
authorTomas Mraz <tomas@openssl.org>
Fri, 13 Jan 2023 17:46:15 +0000 (18:46 +0100)
committerTomas Mraz <tomas@openssl.org>
Tue, 7 Feb 2023 16:05:10 +0000 (17:05 +0100)
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
test/recipes/91-test_pkey_check.t
test/recipes/91-test_pkey_check_data/dsapub.pem [new file with mode: 0644]
test/recipes/91-test_pkey_check_data/dsapub_noparam.der [new file with mode: 0644]

index 354e33575e1a7284aef773705554477ad959c08d..c290b0ba729681ad61db54753e413c075e044d7f 100644 (file)
@@ -11,19 +11,24 @@ use strict;
 use warnings;
 
 use File::Spec;
-use OpenSSL::Test qw/:DEFAULT data_file/;
+use OpenSSL::Test qw/:DEFAULT data_file with/;
 use OpenSSL::Test::Utils;
 
 sub pkey_check {
     my $f = shift;
+    my $pubcheck = shift;
+    my @checkopt = ('-check');
 
-    return run(app(['openssl', 'pkey', '-check', '-text',
+    @checkopt = ('-pubcheck', '-pubin') if $pubcheck;
+
+    return run(app(['openssl', 'pkey', @checkopt, '-text',
                     '-in', $f]));
 }
 
 sub check_key {
     my $f = shift;
     my $should_fail = shift;
+    my $pubcheck = shift;
     my $str;
 
 
@@ -33,11 +38,10 @@ sub check_key {
     $f = data_file($f);
 
     if ( -s $f ) {
-        if ($should_fail) {
-            ok(!pkey_check($f), $str);
-        } else {
-            ok(pkey_check($f), $str);
-        }
+        with({ exit_checker => sub { return shift == $should_fail; } },
+            sub {
+                ok(pkey_check($f, $pubcheck), $str);
+            });
     } else {
         fail("Missing file $f");
     }
@@ -66,15 +70,37 @@ push(@positive_tests, (
     "dhpkey.pem"
     )) unless disabled("dh");
 
+my @negative_pubtests = ();
+
+push(@negative_pubtests, (
+    "dsapub_noparam.der"
+    )) unless disabled("dsa");
+
+my @positive_pubtests = ();
+
+push(@positive_pubtests, (
+    "dsapub.pem"
+    )) unless disabled("dsa");
+
 plan skip_all => "No tests within the current enabled feature set"
-    unless @negative_tests && @positive_tests;
+    unless @negative_tests && @positive_tests
+           && @negative_pubtests && @positive_pubtests;
 
-plan tests => scalar(@negative_tests) + scalar(@positive_tests);
+plan tests => scalar(@negative_tests) + scalar(@positive_tests)
+              + scalar(@negative_pubtests) + scalar(@positive_pubtests);
 
 foreach my $t (@negative_tests) {
-    check_key($t, 1);
+    check_key($t, 1, 0);
 }
 
 foreach my $t (@positive_tests) {
-    check_key($t, 0);
+    check_key($t, 0, 0);
+}
+
+foreach my $t (@negative_pubtests) {
+    check_key($t, 1, 1);
+}
+
+foreach my $t (@positive_pubtests) {
+    check_key($t, 0, 1);
 }
diff --git a/test/recipes/91-test_pkey_check_data/dsapub.pem b/test/recipes/91-test_pkey_check_data/dsapub.pem
new file mode 100644 (file)
index 0000000..0ff4bd8
--- /dev/null
@@ -0,0 +1,12 @@
+-----BEGIN PUBLIC KEY-----
+MIIBvzCCATQGByqGSM44BAEwggEnAoGBAIjbXpOVVciVNuagg26annKkghIIZFI4
+4WdMomnV+I/oXyxHbZTBBBpW9xy/E1+yMjbp4GmX+VxyDj3WxUWxXllzL+miEkzD
+9Xz638VzIBhjFbMvk1/N4kS4bKVUd9yk7HfvYzAdnRphk0WI+RoDiDrBNPPxSoQD
+CEWgvwgsLIDhAh0A6dbz1IQpQwGF4+Ca28x6OO+UfJJv3ggeZ++fNwKBgQCA9XKV
+lRrTY8ALBxS0KbZjpaIXuUj5nr3i1lIDyP3ISksDF0ekyLtn6eK9VijX6Pm65Np+
+4ic9Nr5WKLKhPaUSpLNRx1gDqo3sd92hYgiEUifzEuhLYfK/CsgFED+l2hDXtJUq
+bISNSHVwI5lsyNXLu7HI1Fk8F5UO3LqsboFAngOBhAACgYATxFY89nEYcUhgHGgr
+YDHhXBQfMKnTKYdvon4DN7WQ9ip+t4VUsLpTD1ZE9zrM2R/B04+8C6KGoViwyeER
+kS4dxWOkX71x4X2DlNpYevcR53tNcTDqmMD7YKfDDmrb0lftMyfW8aESaiymVMys
+DRjhKHBjdo0rZeSM8DAk3ctrXA==
+-----END PUBLIC KEY-----
diff --git a/test/recipes/91-test_pkey_check_data/dsapub_noparam.der b/test/recipes/91-test_pkey_check_data/dsapub_noparam.der
new file mode 100644 (file)
index 0000000..b8135f1
Binary files /dev/null and b/test/recipes/91-test_pkey_check_data/dsapub_noparam.der differ