From 30d5465e54ca586a21b8e3576eaa0e59b86583f1 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 16 Jun 2023 13:56:36 +0200 Subject: [PATCH] Add a test case for the password prompt on garbage PKCS#12 file Reviewed-by: Tomas Mraz Reviewed-by: Dmitry Belyavskiy Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/21197) (cherry picked from commit 1a27cc3626bd15f8fd9a26a2dbc59a681d505321) --- test/recipes/90-test_store_cases.t | 36 +++++++++++++++++++ .../garbage-pkcs12.p12 | 1 + 2 files changed, 37 insertions(+) create mode 100644 test/recipes/90-test_store_cases.t create mode 100644 test/recipes/90-test_store_cases_data/garbage-pkcs12.p12 diff --git a/test/recipes/90-test_store_cases.t b/test/recipes/90-test_store_cases.t new file mode 100644 index 0000000000000..05b00e6b4eb13 --- /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$/, ; +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 0000000000000..1a9f2578f33fc --- /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