1919
2020# Global variables to store wolfProvider installation mode
2121# Only initialize if not already set (allows parent script to export values)
22- WOLFPROV_REPLACE_DEFAULT=${WOLFPROV_REPLACE_DEFAULT:- 0}
23- WOLFPROV_FIPS=${WOLFPROV_FIPS:- 0}
24- WOLFPROV_INSTALLED=${WOLFPROV_INSTALLED:- 0}
2522
2623if [ -z " ${DO_CMD_TESTS:- } " ]; then
2724 echo " This script is designed to be called from do-cmd-tests.sh"
2825 echo " Do not run this script directly - use do-cmd-tests.sh instead"
2926 exit 1
3027fi
3128
32- # Function to detect wolfProvider installation mode
33- detect_wolfprovider_mode () {
34- if [ -z " ${REPO_ROOT:- } " ]; then
35- REPO_ROOT=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " /../.. & > /dev/null && pwd ) "
36- fi
37-
38- # Get OpenSSL version and initial provider info
39- local openssl_version=$( ${OPENSSL_BIN} version 2> /dev/null)
40- local openssl_providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
41-
42- # Detect if wolfProvider is currently active
43- if echo " $openssl_providers " | grep -qi " wolfSSL Provider" ; then
44- WOLFPROV_INSTALLED=1
45- echo " Detected: wolfProvider is currently active"
46- else
47- WOLFPROV_INSTALLED=0
48- echo " Detected: wolfProvider is not currently active"
49- fi
50-
51- # Detect if FIPS mode is active
52- if echo " $openssl_providers " | grep -qi " wolfSSL Provider FIPS" ; then
53- WOLFPROV_FIPS=1
54- echo " Detected: wolfProvider FIPS mode"
55- else
56- WOLFPROV_FIPS=0
57- echo " Detected: wolfProvider non-FIPS mode"
58- fi
59-
60- # Detect replace-default mode
61- if echo " $openssl_providers " | grep -q " default" && echo " $openssl_providers " | grep -qi " wolfSSL Provider" ; then
62- WOLFPROV_REPLACE_DEFAULT=1
63- echo " Detected: wolfProvider installed in replace-default mode (provider: default)"
64- elif echo " $openssl_providers " | grep -qi " libwolfprov" ; then
65- WOLFPROV_REPLACE_DEFAULT=0
66- echo " Detected: wolfProvider installed in non-replace-default mode (provider: libwolfprov)"
67- else
68- WOLFPROV_REPLACE_DEFAULT=0
69- echo " Detected: wolfProvider not in replace-default mode"
70- fi
71-
72- # Print detection summary
73- echo " wolfProvider mode detection:"
74- echo " REPLACE_DEFAULT: $WOLFPROV_REPLACE_DEFAULT "
75- echo " FIPS: $WOLFPROV_FIPS "
76- echo " INSTALLED: $WOLFPROV_INSTALLED "
77- }
78-
29+ CMD_TEST_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
30+ source " ${CMD_TEST_DIR} /../utils-general.sh"
7931
8032# Function to setup the environment for the command-line tests
8133cmd_test_env_setup () {
82- # OPENSSL_BIN must be set by the caller
83- if [ -z " ${OPENSSL_BIN:- } " ]; then
84- echo " Error: OPENSSL_BIN environment variable is not set"
85- exit 1
86- fi
34+ export OPENSSL_BIN=${OPENSSL_BIN:- $(which openssl)}
35+ printf " Using OPENSSL_BIN: %s\n" " $OPENSSL_BIN "
8736
88- # Detect wolfProvider installation mode (only if not already detected)
89- if [ -z " ${WOLFPROV_MODE_DETECTED:- } " ]; then
90- detect_wolfprovider_mode
91- export WOLFPROV_MODE_DETECTED=1
92- fi
37+ OPENSSL_CONF_ORIG=" ${OPENSSL_CONF:- } "
38+ OPENSSL_MODULES_ORIG=" ${OPENSSL_MODULES:- } "
9339}
9440
9541
9642# Individual test setup (called by each test script)
9743cmd_test_init () {
9844 local log_file_name=$1
99- SCRIPT_DIR =" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
45+ CMD_TEST_DIR =" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
10046
10147 # Set up log file
102- export LOG_FILE=" ${SCRIPT_DIR } /${log_file_name} "
48+ export LOG_FILE=" ${CMD_TEST_DIR } /${log_file_name} "
10349 touch " $LOG_FILE "
10450
10551 # Redirect all output to log file
@@ -110,109 +56,112 @@ cmd_test_init() {
11056 FORCE_FAIL_PASSED=0
11157}
11258
59+
11360# Function to use default provider only
11461use_default_provider () {
115- unset OPENSSL_MODULES
116- unset OPENSSL_CONF
62+ return 0
63+
64+ if [ -z " ${OPENSSL_CONF_ORIG:- } " ]; then
65+ export OPENSSL_CONF=" /dev/null"
66+ export OPENSSL_MODULES=" /dev/null"
67+ else
68+ unset OPENSSL_CONF
69+ unset OPENSSL_MODULES
70+ fi
71+ detect_wolfprovider_mode
11772
11873 # Check if wolfProvider is in replace-default mode
119- if [ " $WOLFPROV_REPLACE_DEFAULT " = " 1" ]; then
74+ if [ " $is_openssl_replace_default " = " 1" ]; then
12075 echo " INFO: wolfProvider is installed in replace-default mode"
12176 echo " INFO: wolfProvider IS the default provider and cannot be switched off"
12277
12378 # Verify that wolfProvider (as default) is active
124- local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
125- if echo " $providers " | grep -q " default" && echo " $providers " | grep -qi " wolfSSL Provider" ; then
79+ if [ " $is_wp_active " = " 1" ] && [ " $is_wp_default " = " 1" ]; then
12680 echo " Using default provider (wolfProvider in replace-default mode)"
12781 else
128- echo " FAIL: Expected wolfProvider as default, but provider list doesn't match"
129- echo " Provider list:"
130- echo " $providers "
82+ echo " FAIL: Expected wolfProvider as default, but is_wp_active: $is_wp_active and is_wp_default: $is_wp_default "
13183 exit 1
13284 fi
13385 else
13486 # In non-replace-default mode, unsetting OPENSSL_MODULES should disable wolfProvider
13587 echo " INFO: wolfProvider is installed in non-replace-default mode"
13688
13789 # Verify that we are using the OpenSSL default provider (not wolfProvider)
138- local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
139- if echo " $providers " | grep -qi " libwolfprov" ; then
90+ if [ " $is_openssl_default_provider " != " 1" ]; then
14091 echo " FAIL: unable to switch to default provider, wolfProvider is still active"
141- echo " Provider list:"
142- echo " $providers "
143- exit 1
144- fi
145-
146- # Check if OpenSSL default provider is active
147- if echo " $providers " | grep -q " default" && echo " $providers " | grep -qi " OpenSSL Default Provider" ; then
148- echo " Switched to default provider (OpenSSL)"
149- else
150- echo " FAIL: Expected OpenSSL Default Provider, but provider list doesn't match"
151- echo " Provider list:"
152- echo " $providers "
92+ echo " is_openssl_default_provider: $is_openssl_default_provider "
15393 exit 1
15494 fi
95+ echo " INFO: Switched to default provider (OpenSSL)"
15596 fi
15697}
15798
15899
159100# Function to use wolf provider only
160101use_wolf_provider () {
102+ return 0
103+
104+ if [ -z " ${OPENSSL_CONF_ORIG:- } " ]; then
105+ unset OPENSSL_CONF
106+ unset OPENSSL_MODULES
107+ else
108+ export OPENSSL_CONF=" ${OPENSSL_CONF_ORIG:- } "
109+ export OPENSSL_MODULES=" ${OPENSSL_MODULES_ORIG:- } "
110+ fi
111+ detect_wolfprovider_mode
112+
161113 # Check if wolfProvider is in replace-default mode
162- if [ " $WOLFPROV_REPLACE_DEFAULT " = " 1" ]; then
114+ if [ " $is_openssl_replace_default " = " 1" ]; then
163115 # In replace-default mode, wolfProvider is already the default
164116 # No need to set OPENSSL_MODULES or OPENSSL_CONF
165117 echo " INFO: wolfProvider is installed in replace-default mode"
166118 echo " INFO: wolfProvider is already active as the default provider"
167119
168120 # Verify that wolfProvider is active
169- local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
170- if echo " $providers " | grep -qi " wolfSSL Provider" ; then
121+ if [ " $is_wp_active " = " 1" ] && [ " $is_wp_default " = " 1" ]; then
171122 echo " Using wolfProvider (replace-default mode)"
172123 else
173124 echo " FAIL: wolfProvider is not active"
174- echo " Provider list: "
175- echo " $providers "
125+ echo " is_wp_active: $is_wp_active "
126+ echo " is_wp_default: $is_wp_default "
176127 exit 1
177128 fi
178129 else
179130 # In non-replace-default mode, we need to set OPENSSL_MODULES and OPENSSL_CONF
180131 echo " INFO: wolfProvider is installed in non-replace-default mode"
181- export OPENSSL_MODULES=$WOLFPROV_PATH
182- export OPENSSL_CONF=${WOLFPROV_CONFIG}
183132
184133 # Verify that we are using wolfProvider
185- local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
186- if ! echo " $providers " | grep -qi " wolfprov" ; then
134+ if [ " $is_wp_active " != " 1" ]; then
187135 echo " FAIL: unable to switch to wolfProvider, default provider is still active"
188- echo " Provider list:"
189- echo " $providers "
190- echo " OPENSSL_MODULES: $OPENSSL_MODULES "
191- echo " OPENSSL_CONF: $OPENSSL_CONF "
136+ $OPENSSL_BIN list -providers
137+ echo " is_wp_active: $is_wp_active "
138+ echo " is_wp_default: $is_wp_default "
192139 exit 1
193140 fi
194- echo " Switched to wolfProvider"
141+ echo " INFO: Switched to wolfProvider"
142+ $OPENSSL_BIN list -providers
195143 fi
196144}
197145
198146
199147# Helper function to handle force fail checks
200148check_force_fail () {
201- if is_default_provider && ! is_replace_default; then
149+ detect_wolfprovider_mode
150+ if [ " $is_openssl_default_provider " = " 1" ]; then
151+ # With the OpenSSL provider, don't expect failures
202152 echo " OPENSSL Default provider active, no forced failures expected."
203- elif [ " ${ WOLFPROV_FORCE_FAIL} " = " 1" ]; then
153+ elif [ " $WOLFPROV_FORCE_FAIL " = " 1" ]; then
204154 echo " [PASS] Test passed when force fail was enabled"
205155 FORCE_FAIL_PASSED=1
156+ exit 1
206157 fi
207158}
208159
209-
210- # Helper function to get provider name from provider arguments
211- get_provider_name () {
212- local provider_args=$1
213- if [ " $provider_args " = " -provider default" ]; then
214- echo " default"
160+ use_provider_by_name () {
161+ local provider_name=$1
162+ if [ " $provider_name " = " libwolfprov" ]; then
163+ use_wolf_provider
215164 else
216- echo " libwolfprov "
165+ use_default_provider
217166 fi
218167}
0 commit comments