1717# You should have received a copy of the GNU General Public License
1818# along with wolfProvider. If not, see <http://www.gnu.org/licenses/>.
1919
20+ # Global variables to store wolfProvider installation mode
21+ # 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}
25+
26+ # Function to detect wolfProvider installation mode
27+ detect_wolfprovider_mode () {
28+ if [ -z " ${REPO_ROOT:- } " ]; then
29+ REPO_ROOT=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " /../.. & > /dev/null && pwd ) "
30+ fi
31+
32+ # Get OpenSSL version and initial provider info
33+ local openssl_version=$( ${OPENSSL_BIN} version 2> /dev/null)
34+ local openssl_providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
35+
36+ # Detect if wolfProvider is currently active
37+ if echo " $openssl_providers " | grep -qi " wolfSSL Provider" ; then
38+ WOLFPROV_INSTALLED=1
39+ echo " Detected: wolfProvider is currently active"
40+ else
41+ WOLFPROV_INSTALLED=0
42+ echo " Detected: wolfProvider is not currently active"
43+ fi
44+
45+ # Detect if FIPS mode is active
46+ if echo " $openssl_providers " | grep -qi " wolfSSL Provider FIPS" ; then
47+ WOLFPROV_FIPS=1
48+ echo " Detected: wolfProvider FIPS mode"
49+ else
50+ WOLFPROV_FIPS=0
51+ echo " Detected: wolfProvider non-FIPS mode"
52+ fi
53+
54+ # Detect replace-default mode
55+ if echo " $openssl_providers " | grep -q " default" && echo " $openssl_providers " | grep -qi " wolfSSL Provider" ; then
56+ WOLFPROV_REPLACE_DEFAULT=1
57+ echo " Detected: wolfProvider installed in replace-default mode (provider: default)"
58+ elif echo " $openssl_providers " | grep -qi " libwolfprov" ; then
59+ WOLFPROV_REPLACE_DEFAULT=0
60+ echo " Detected: wolfProvider installed in non-replace-default mode (provider: libwolfprov)"
61+ else
62+ WOLFPROV_REPLACE_DEFAULT=0
63+ echo " Detected: wolfProvider not in replace-default mode"
64+ fi
65+
66+ # Print detection summary
67+ echo " wolfProvider mode detection:"
68+ echo " REPLACE_DEFAULT: $WOLFPROV_REPLACE_DEFAULT "
69+ echo " FIPS: $WOLFPROV_FIPS "
70+ echo " INSTALLED: $WOLFPROV_INSTALLED "
71+ }
72+
73+
74+ # Function to setup the environment for the command-line tests
2075cmd_test_env_setup () {
76+ # OPENSSL_BIN must be set by the caller
77+ if [ -z " ${OPENSSL_BIN:- } " ]; then
78+ echo " Error: OPENSSL_BIN environment variable is not set"
79+ exit 1
80+ fi
81+
82+ # Detect wolfProvider installation mode (only if not already detected)
83+ if [ -z " ${WOLFPROV_MODE_DETECTED:- } " ]; then
84+ detect_wolfprovider_mode
85+ export WOLFPROV_MODE_DETECTED=1
86+ fi
87+ }
88+
89+
90+ # Individual test setup (called by each test script)
91+ cmd_test_init () {
2192 local log_file_name=$1
2293 SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
23- # Set up environment
94+
95+ # Set up log file
2496 export LOG_FILE=" ${SCRIPT_DIR} /${log_file_name} "
2597 touch " $LOG_FILE "
2698
27- # OPENSSL_BIN must be set by the caller
28- if [ -z " ${OPENSSL_BIN:- } " ]; then
29- echo " Error: OPENSSL_BIN environment variable is not set" | tee -a " $LOG_FILE "
30- exit 1
31- fi
99+ # Redirect all output to log file
100+ exec > >( tee -a " $LOG_FILE " ) 2>&1
32101
33102 # Fail flags
34103 FAIL=0
35104 FORCE_FAIL_PASSED=0
36-
37- # Get the force fail parameter
38- if [ " ${WOLFPROV_FORCE_FAIL} " = " 1" ]; then
39- echo " Force fail mode enabled"
40- fi
41- if [ " ${WOLFSSL_ISFIPS} " = " 1" ]; then
42- echo " FIPS mode enabled"
43- fi
44-
45- # Print environment for verification
46- echo " Environment variables:"
47- echo " OPENSSL_MODULES: ${OPENSSL_MODULES} "
48- echo " OPENSSL_BIN: ${OPENSSL_BIN} "
49105}
50106
51107# Function to use default provider only
52108use_default_provider () {
53109 unset OPENSSL_MODULES
54110 unset OPENSSL_CONF
55111
56- # Verify that we are using the default provider
57- if ${OPENSSL_BIN} list -providers | grep -q " wolfprov" ; then
58- echo " FAIL: unable to switch to default provider, wolfProvider is still active"
59- exit 1
112+ # Check if wolfProvider is in replace-default mode
113+ if [ " $WOLFPROV_REPLACE_DEFAULT " = " 1" ]; then
114+ echo " INFO: wolfProvider is installed in replace-default mode"
115+ echo " INFO: wolfProvider IS the default provider and cannot be switched off"
116+
117+ # Verify that wolfProvider (as default) is active
118+ local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
119+ if echo " $providers " | grep -q " default" && echo " $providers " | grep -qi " wolfSSL Provider" ; then
120+ echo " Using default provider (wolfProvider in replace-default mode)"
121+ else
122+ echo " FAIL: Expected wolfProvider as default, but provider list doesn't match"
123+ echo " Provider list:"
124+ echo " $providers "
125+ exit 1
126+ fi
127+ else
128+ # In non-replace-default mode, unsetting OPENSSL_MODULES should disable wolfProvider
129+ echo " INFO: wolfProvider is installed in non-replace-default mode"
130+
131+ # Verify that we are using the OpenSSL default provider (not wolfProvider)
132+ local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
133+ if echo " $providers " | grep -qi " libwolfprov" ; then
134+ echo " FAIL: unable to switch to default provider, wolfProvider is still active"
135+ echo " Provider list:"
136+ echo " $providers "
137+ exit 1
138+ fi
139+
140+ # Check if OpenSSL default provider is active
141+ if echo " $providers " | grep -q " default" && echo " $providers " | grep -qi " OpenSSL Default Provider" ; then
142+ echo " Switched to default provider (OpenSSL)"
143+ else
144+ echo " FAIL: Expected OpenSSL Default Provider, but provider list doesn't match"
145+ echo " Provider list:"
146+ echo " $providers "
147+ exit 1
148+ fi
60149 fi
61- echo " Switched to default provider"
62150}
63151
152+
64153# Function to use wolf provider only
65154use_wolf_provider () {
66- export OPENSSL_MODULES=$WOLFPROV_PATH
67- export OPENSSL_CONF=${WOLFPROV_CONFIG}
155+ # Check if wolfProvider is in replace-default mode
156+ if [ " $WOLFPROV_REPLACE_DEFAULT " = " 1" ]; then
157+ # In replace-default mode, wolfProvider is already the default
158+ # No need to set OPENSSL_MODULES or OPENSSL_CONF
159+ echo " INFO: wolfProvider is installed in replace-default mode"
160+ echo " INFO: wolfProvider is already active as the default provider"
68161
69- # Verify that we are using wolfProvider
70- if ! ${OPENSSL_BIN} list -providers | grep -q " wolfprov" ; then
71- echo " FAIL: unable to switch to wolfProvider, default provider is still active"
72- exit 1
162+ # Verify that wolfProvider is active
163+ local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
164+ if echo " $providers " | grep -qi " wolfSSL Provider" ; then
165+ echo " Using wolfProvider (replace-default mode)"
166+ else
167+ echo " FAIL: wolfProvider is not active"
168+ echo " Provider list:"
169+ echo " $providers "
170+ exit 1
171+ fi
172+ else
173+ # In non-replace-default mode, we need to set OPENSSL_MODULES and OPENSSL_CONF
174+ echo " INFO: wolfProvider is installed in non-replace-default mode"
175+ export OPENSSL_MODULES=$WOLFPROV_PATH
176+ export OPENSSL_CONF=${WOLFPROV_CONFIG}
177+
178+ # Verify that we are using wolfProvider
179+ local providers=$( ${OPENSSL_BIN} list -providers 2> /dev/null)
180+ if ! echo " $providers " | grep -qi " wolfprov" ; then
181+ echo " FAIL: unable to switch to wolfProvider, default provider is still active"
182+ echo " Provider list:"
183+ echo " $providers "
184+ echo " OPENSSL_MODULES: $OPENSSL_MODULES "
185+ echo " OPENSSL_CONF: $OPENSSL_CONF "
186+ exit 1
187+ fi
188+ echo " Switched to wolfProvider"
73189 fi
74- echo " Switched to wolfProvider"
75190}
76191
192+
77193# Helper function to handle force fail checks
78194check_force_fail () {
79195 if [ " ${WOLFPROV_FORCE_FAIL} " = " 1" ]; then
@@ -82,6 +198,7 @@ check_force_fail() {
82198 fi
83199}
84200
201+
85202# Helper function to get provider name from provider arguments
86203get_provider_name () {
87204 local provider_args=$1
0 commit comments