Commit d8f792f2fa for openssl.org
commit d8f792f2fa7d23c592d8351e6ab7bd0f9c24f58a
Author: Jakub Zelenka <jakub.zelenka@openssl.foundation>
Date: Sat Aug 29 12:20:16 2026 +0200
apps: cover the dsaparam error cases in the test recipe
Cover the bad option failures (unknown option, invalid input and
output formats, unparseable bit sizes and extra arguments) as well
as the failure when loading an invalid parameters file, verifying
the error messages printed to stderr with the shared app_fails
helper.
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Ryan Hooper <ryanh@openssl.foundation>
Merge-date: Thu Sep 24 14:35:00 2026
Merged-from: https://github.com/openssl/openssl/pull/32589
diff --git a/test/recipes/15-test_dsaparam.t b/test/recipes/15-test_dsaparam.t
index 6235a4f20b..fb69f3901a 100644
--- a/test/recipes/15-test_dsaparam.t
+++ b/test/recipes/15-test_dsaparam.t
@@ -13,7 +13,7 @@ use File::Spec;
use File::Copy;
use File::Compare qw/compare_text/;
use OpenSSL::Glob;
-use OpenSSL::Test qw/:DEFAULT data_file/;
+use OpenSSL::Test qw/:DEFAULT data_file app_fails/;
use OpenSSL::Test::Utils;
setup("test_dsaparam");
@@ -68,7 +68,7 @@ plan skip_all => "DSA isn't supported in this build"
my @valid = glob(data_file("valid", "*.pem"));
my @invalid = glob(data_file("invalid", "*.pem"));
-my $num_tests = scalar @valid + scalar @invalid + 4;
+my $num_tests = scalar @valid + scalar @invalid + 5;
plan tests => $num_tests;
foreach (@valid) {
@@ -103,6 +103,37 @@ subtest "dsaparam DER parameter output" => sub {
"read the DER DSA parameters back");
};
+subtest "dsaparam error cases" => sub {
+ plan tests => 14;
+
+ app_fails('dsaparam', "unknown option should fail",
+ qr/Unknown option: -badopt/,
+ '-badopt');
+ app_fails('dsaparam', "invalid input format should fail",
+ qr/Invalid format "BAD" for option -inform/,
+ '-inform', 'BAD', '-in', $srcparams);
+ app_fails('dsaparam', "invalid output format should fail",
+ qr/Invalid format "BAD" for option -outform/,
+ '-outform', 'BAD', '-in', $srcparams);
+ app_fails('dsaparam', "non-numeric bitsize should fail",
+ qr/Can't parse "bad" as a number/,
+ 'bad');
+ app_fails('dsaparam', "non-numeric q bitsize should fail",
+ qr/Can't parse "bad" as a number/,
+ '512', 'bad');
+ app_fails('dsaparam', "extra positional argument should fail",
+ qr/Extra option/,
+ '512', '160', '5');
+
+ my $garbage = "garbage.pem";
+ open(my $fh, '>', $garbage) or die "Cannot write $garbage: $!";
+ print $fh "not a valid DSA parameter file\n";
+ close($fh);
+ app_fails('dsaparam', "loading garbage DSA parameters file should fail",
+ qr/Could not find or decode key parameters/,
+ '-in', $garbage, '-noout');
+};
+
subtest "dsaparam DER private key output with -genkey" => sub {
plan tests => 2;