Skip to content

Commit 8858202

Browse files
authored
Merge pull request #354 from aidangarske/fix-replace-default-detection
Fix RD detection when running cmdline tests
2 parents ae5c0e1 + 7c85aa0 commit 8858202

File tree

4 files changed

+77
-14
lines changed

4 files changed

+77
-14
lines changed

scripts/cmd_test/cmd-test-common.sh

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,30 @@ use_default_provider() {
9595
unset OPENSSL_CONF
9696
unset OPENSSL_MODULES
9797
fi
98-
98+
9999
# Re-detect after disabling
100100
detect_wolfprovider_mode
101101

102102
# Verify that we are using the OpenSSL default provider (not wolfProvider)
103103
if [ "$is_openssl_default_provider" != "1" ]; then
104-
echo "FAIL: unable to switch to default provider, wolfProvider is still active"
105-
echo "is_openssl_default_provider: $is_openssl_default_provider"
106-
exit 1
104+
# If we can't switch, this indicates replace-default mode
105+
# Check if wolfProvider is still active - if so, we're in replace-default mode
106+
if [ "$is_wp_active" = "1" ]; then
107+
echo "INFO: Cannot switch to OpenSSL default provider - detected replace-default mode"
108+
echo "INFO: Setting is_openssl_replace_default=1 for remaining tests"
109+
is_openssl_replace_default=1
110+
is_wp_default=1
111+
export is_openssl_replace_default
112+
export is_wp_default
113+
# Also set the environment variable for child processes
114+
export WOLFPROV_REPLACE_DEFAULT=1
115+
return 0 # Return success - this is expected in replace-default mode
116+
else
117+
echo "FAIL: unable to switch to default provider, and wolfProvider is not active"
118+
echo "is_openssl_default_provider: $is_openssl_default_provider"
119+
echo "is_wp_active: $is_wp_active"
120+
exit 1
121+
fi
107122
fi
108123
echo "INFO: Switched to OpenSSL default provider"
109124
return 0
@@ -240,3 +255,12 @@ use_provider_by_name() {
240255
use_default_provider
241256
fi
242257
}
258+
259+
# Check if we can perform provider comparison tests
260+
# Returns 0 if comparison possible (normal mode), 1 if replace-default mode (no comparison)
261+
can_compare_providers() {
262+
if [ "$is_openssl_replace_default" = "1" ] || [ "${WOLFPROV_REPLACE_DEFAULT:-0}" = "1" ]; then
263+
return 1 # Cannot compare - replace-default mode
264+
fi
265+
return 0 # Can compare - normal mode
266+
}

scripts/cmd_test/do-cmd-tests.sh

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,39 @@ if [ "${WOLFPROV_FORCE_FAIL}" = "1" ]; then
129129
echo "Force-fail mode: ENABLED"
130130
fi
131131

132+
# Detect mode first
133+
detect_wolfprovider_mode
134+
135+
# Display mode information
136+
echo ""
137+
echo "Detected configuration:"
138+
echo " is_openssl_replace_default: $is_openssl_replace_default"
139+
echo " is_wp_active: $is_wp_active"
140+
echo " is_wp_default: $is_wp_default"
141+
echo " is_openssl_default_provider: $is_openssl_default_provider"
142+
echo ""
143+
144+
if [ "$is_openssl_replace_default" = "1" ] || [ "${WOLFPROV_REPLACE_DEFAULT:-0}" = "1" ]; then
145+
echo "INFO: Running in replace-default mode"
146+
echo "INFO: Tests will run with wolfProvider only (no provider switching)"
147+
# Just verify wolfProvider is active
148+
use_wolf_provider
149+
else
150+
echo "INFO: Running in normal mode"
151+
echo "INFO: Tests will compare OpenSSL default vs wolfProvider"
152+
# Ensure we can switch providers before proceeding
153+
use_default_provider
154+
use_wolf_provider
155+
fi
156+
132157
# Export detection variables for child scripts
158+
export is_openssl_replace_default
159+
export is_wp_active
160+
export is_wp_default
161+
export is_openssl_default_provider
133162
export WOLFPROV_REPLACE_DEFAULT
134163
export WOLFPROV_FIPS
135164

136-
# Ensure we can switch providers before proceeding
137-
use_default_provider
138-
use_wolf_provider
139-
140165
# Initialize result variables
141166
HASH_RESULT=0
142167
AES_RESULT=0

scripts/cmd_test/hash-cmd-test.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,15 @@ compare_hashes() {
9090
# Run tests for each hash algorithm
9191
for algo in "${HASH_ALGOS[@]}"; do
9292
echo -e "\n=== Testing ${algo^^} ==="
93-
93+
9494
# Test with OpenSSL default provider
9595
use_default_provider
9696
run_hash_test $algo "hash_outputs/openssl_${algo}.txt"
97-
97+
9898
# Test with wolfProvider
9999
use_wolf_provider
100100
run_hash_test $algo "hash_outputs/wolf_${algo}.txt"
101-
101+
102102
# Compare results
103103
compare_hashes $algo
104104
done

scripts/utils-general.sh

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,15 @@ if [ "$UTILS_GENERAL_LOADED" != "yes" ]; then # only set once
7575
local openssl_version=$(${OPENSSL_BIN} version 2>/dev/null)
7676
local openssl_providers=$(${OPENSSL_BIN} list -providers 2>/dev/null)
7777

78-
# Check for "replace-default" in version string OR environment variable
78+
# Method 1: Check for "replace-default" in version string
7979
is_openssl_replace_default=$(echo "$openssl_version" | grep -qi "replace-default" && echo 1 || echo 0)
80+
81+
# Method 2: Check environment variable
8082
if [ "$is_openssl_replace_default" = "0" ] && [ "${WOLFPROV_REPLACE_DEFAULT:-0}" = "1" ]; then
8183
is_openssl_replace_default=1
8284
fi
83-
84-
# In replace-default mode, "default" provider has "wolfSSL Provider" name
85+
86+
# Method 3: Check if provider list shows "default" with "wolfSSL Provider" name
8587
if [ "$is_openssl_replace_default" = "0" ]; then
8688
# Check if provider list shows "default" with "wolfSSL Provider" name but NOT "OpenSSL Default Provider"
8789
# This indicates replace-default mode
@@ -91,6 +93,18 @@ if [ "$UTILS_GENERAL_LOADED" != "yes" ]; then # only set once
9193
is_openssl_replace_default=1
9294
fi
9395
fi
96+
97+
# Note: We intentionally do NOT check for absence of "OpenSSL Default Provider"
98+
# as an indicator of replace-default mode. In standalone mode, wolfProvider
99+
# loads as "libwolfprov" and OpenSSL Default Provider may simply not be
100+
# configured to load - this doesn't mean OpenSSL was patched.
101+
#
102+
# The key distinction:
103+
# - Replace-default mode: Provider shows as "default" with name "wolfSSL Provider"
104+
# - Standalone mode: Provider shows as "libwolfprov" with name "wolfSSL Provider"
105+
#
106+
# Method 3 above correctly detects replace-default by checking for "default"
107+
# provider with "wolfSSL Provider" name.
94108

95109
# In replace-default mode, there's no "OpenSSL Default Provider" - wolfProvider IS the default
96110
is_openssl_default_provider=$(echo "$openssl_providers" | grep -qi "OpenSSL Default Provider" && echo 1 || echo 0)

0 commit comments

Comments
 (0)