summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2023-06-16 13:56:36 +0200
committerPauli <pauli@openssl.org>2023-06-26 08:02:00 +1000
commitffb29de3c7efaf4b087e4180fb92f9ee562e18cf (patch)
tree09a657115c3c0ee0b9234a48c3bf5f9951afb345 /test
parentb7a29bc837e0181e29514b949cb3a0fadff566c0 (diff)
Add a test case for the password prompt on garbage PKCS#12 file
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21197) (cherry picked from commit 1a27cc3626bd15f8fd9a26a2dbc59a681d505321)
Diffstat (limited to 'test')
-rw-r--r--test/recipes/90-test_store_cases.t36
-rw-r--r--test/recipes/90-test_store_cases_data/garbage-pkcs12.p121
2 files changed, 37 insertions, 0 deletions
diff --git a/test/recipes/90-test_store_cases.t b/test/recipes/90-test_store_cases.t
new file mode 100644
index 0000000000..05b00e6b4e
--- /dev/null
+++ b/test/recipes/90-test_store_cases.t
@@ -0,0 +1,36 @@
+#! /usr/bin/env perl
+# Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the "License"). You may not use
+# this file except in compliance with the License. You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+# This collects specific use cases, and tests our handling
+
+use File::Spec::Functions;
+use File::Copy;
+use MIME::Base64;
+use OpenSSL::Test qw(:DEFAULT srctop_file srctop_dir bldtop_file bldtop_dir
+ data_file);
+use OpenSSL::Test::Utils;
+
+my $test_name = "test_store_cases";
+setup($test_name);
+
+plan tests => 2;
+
+my $stderr;
+
+# The case of the garbage PKCS#12 DER file where a passphrase was
+# prompted for. That should not have happened.
+$stderr = 'garbage-pkcs12.stderr.txt';
+ok(!run(app(['openssl', 'storeutl', '-passin', 'pass:invalidapass',
+ data_file('garbage-pkcs12.p12')],
+ stderr => $stderr)),
+ "checking that storeutl fails when given a garbage pkcs12 file");
+open DATA, $stderr;
+@match = grep /try_pkcs12:.*?:maybe wrong password$/, <DATA>;
+close DATA;
+ok(scalar @match > 0 ? 0 : 1,
+ "checking that storeutl didn't ask for a passphrase");
diff --git a/test/recipes/90-test_store_cases_data/garbage-pkcs12.p12 b/test/recipes/90-test_store_cases_data/garbage-pkcs12.p12
new file mode 100644
index 0000000000..1a9f2578f3
--- /dev/null
+++ b/test/recipes/90-test_store_cases_data/garbage-pkcs12.p12
@@ -0,0 +1 @@
+0[0 *H801 0 UUS10 Upo \ No newline at end of file