Skip to content

Commit 99a0172

Browse files
Test Userpadelsbach
authored andcommitted
Refactor cmd tests
1 parent cf3640f commit 99a0172

File tree

7 files changed

+380
-143
lines changed

7 files changed

+380
-143
lines changed

scripts/cmd_test/aes-cmd-test.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
# aes-cmd-test.sh
33
# AES encryption test for wolfProvider
44
#
5+
# NOTE: This script is designed to be called from do-cmd-tests.sh
6+
# Do not run this script directly - use do-cmd-tests.sh instead
7+
#
58
# Copyright (C) 2006-2025 wolfSSL Inc.
69
#
710
# This file is part of wolfProvider.
@@ -22,12 +25,9 @@
2225
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
2326
source "${SCRIPT_DIR}/cmd-test-common.sh"
2427
source "${SCRIPT_DIR}/clean-cmd-test.sh"
25-
cmd_test_env_setup "aes-test.log"
28+
cmd_test_init "aes-test.log"
2629
clean_cmd_test "aes"
2730

28-
# Redirect all output to log file
29-
exec > >(tee -a "$LOG_FILE") 2>&1
30-
3131
# Create test data and output directories
3232
mkdir -p aes_outputs
3333
echo "This is test data for AES encryption testing." > aes_outputs/test_data.txt
@@ -42,8 +42,6 @@ else
4242
MODES=("ecb" "cbc" "ctr" "cfb")
4343
fi
4444

45-
echo "=== Running AES Algorithm Comparisons ==="
46-
4745
# Run tests for each key size and mode
4846
for key_size in "${KEY_SIZES[@]}"; do
4947
for mode in "${MODES[@]}"; do

scripts/cmd_test/cmd-test-common.sh

Lines changed: 144 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -17,115 +17,178 @@
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
95108
use_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
113154
use_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
131194
check_force_fail() {
@@ -137,6 +200,7 @@ check_force_fail() {
137200
fi
138201
}
139202

203+
140204
# Helper function to get provider name from provider arguments
141205
get_provider_name() {
142206
local provider_args=$1

0 commit comments

Comments
 (0)