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- COMMON_SETUP_DONE=0
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
2131
22- cmd_test_env_setup () {
23- # Fail flags
24- FAIL=0
25- FORCE_FAIL_PASSED=0
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)
2635
27- if [ $COMMON_SETUP_DONE -ne 0 ]; then
28- echo " Setup already completed, skipping."
29- return
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"
3043 fi
3144
32- local log_file_name=$1
33- SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
34- # Set up environment
35- export LOG_FILE=" ${SCRIPT_DIR} /${log_file_name} "
36- touch " $LOG_FILE "
37-
38- # If OPENSSL_BIN is not set, assume we are using a local build
39- if [ -z " ${OPENSSL_BIN:- } " ]; then
40- echo " OPENSSL_BIN not set, assuming local build"
41- # Check if the install directories exist
42- if [ ! -d " ${REPO_ROOT} /openssl-install" ] ||
43- [ ! -d " ${REPO_ROOT} /wolfssl-install" ]; then
44- echo " [FAIL] OpenSSL or wolfSSL install directories not found"
45- echo " Please set OPENSSL_BIN or run build-wolfprovider.sh first"
46- exit 1
47- fi
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
4853
49- # Setup the environment for a local build
50- source " ${REPO_ROOT} /scripts/env-setup"
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)"
5161 else
52- echo " Using user-provided OPENSSL_BIN: ${OPENSSL_BIN} "
53- # We are using a user-provided OpenSSL binary, manually set the test
54- # environment variables rather than using env-setup.
55- # Find the location of the wolfProvider modules
56- if [ -z " ${WOLFPROV_PATH:- } " ]; then
57- export WOLFPROV_PATH=$( find /usr/lib /usr/local/lib -type d -name ossl-modules 2> /dev/null | head -n 1)
58- fi
59- # Set the path to the wolfProvider config file
60- if [ -z " ${WOLFPROV_CONFIG:- } " ]; then
61- if [ " ${WOLFSSL_ISFIPS:- 0} " = " 1" ]; then
62- export WOLFPROV_CONFIG=" ${REPO_ROOT} /provider-fips.conf"
63- else
64- export WOLFPROV_CONFIG=" ${REPO_ROOT} /provider.conf"
65- fi
66- fi
62+ WOLFPROV_REPLACE_DEFAULT=0
63+ echo " Detected: wolfProvider not in replace-default mode"
6764 fi
6865
69- # Get the force fail parameter
70- if [ " ${WOLFPROV_FORCE_FAIL} " = " 1" ]; then
71- echo " Force fail mode enabled"
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
75+ cmd_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
7280 fi
73- if [ " ${WOLFSSL_ISFIPS} " = " 1" ]; then
74- echo " FIPS mode enabled"
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
7586 fi
87+ }
7688
77- # Print environment for verification
78- echo " Environment variables:"
79- echo " OPENSSL_MODULES: ${OPENSSL_MODULES} "
80- echo " OPENSSL_BIN: ${OPENSSL_BIN} "
81- echo " WOLFPROV_PATH: ${WOLFPROV_PATH} "
82- echo " WOLFPROV_CONFIG: ${WOLFPROV_CONFIG} "
83- echo " LOG_FILE: ${LOG_FILE} "
8489
85- COMMON_SETUP_DONE=1
86- }
90+ # Individual test setup (called by each test script)
91+ cmd_test_init () {
92+ local log_file_name=$1
93+ SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
94+
95+ # Set up log file
96+ export LOG_FILE=" ${SCRIPT_DIR} /${log_file_name} "
97+ touch " $LOG_FILE "
8798
88- # Check if default provider is in use
89- # Note that this may be wolfProvider if built as replace-default
90- is_default_provider () {
91- return $( $OPENSSL_BIN list -providers | grep -qi " default" )
99+ # Redirect all output to log file
100+ exec > >( tee -a " $LOG_FILE " ) 2>&1
101+
102+ # Fail flags
103+ FAIL=0
104+ FORCE_FAIL_PASSED=0
92105}
93106
94107# Function to use default provider only
95108use_default_provider () {
96109 unset OPENSSL_MODULES
97110 unset OPENSSL_CONF
98111
99- # Verify that we are using the default provider
100- if ! is_default_provider; then
101- echo " FAIL: unable to switch to default provider"
102- $OPENSSL_BIN list -providers
103- 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
104149 fi
105- echo " Switched to default provider"
106150}
107151
108- is_wolf_provider () {
109- return $( $OPENSSL_BIN list -providers | grep -qi " wolfSSL Provider" )
110- }
111152
112153# Function to use wolf provider only
113154use_wolf_provider () {
114- export OPENSSL_MODULES=$WOLFPROV_PATH
115- export OPENSSL_CONF=${WOLFPROV_CONFIG}
116-
117- # Verify that we are using wolfProvider
118- if ! is_wolf_provider; then
119- echo " FAIL: unable to switch to wolfProvider"
120- $OPENSSL_BIN list -providers
121- exit 1
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"
161+
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"
122189 fi
123- echo " Switched to wolfProvider"
124190}
125191
126- is_replace_default () {
127- return $( $OPENSSL_BIN list -providers | grep -qi " wolfSSL Provider" )
128- }
129192
130193# Helper function to handle force fail checks
131194check_force_fail () {
@@ -137,6 +200,7 @@ check_force_fail() {
137200 fi
138201}
139202
203+
140204# Helper function to get provider name from provider arguments
141205get_provider_name () {
142206 local provider_args=$1
0 commit comments