Skip to content

Commit 17429f7

Browse files
committed
Unify script code
1 parent 1114695 commit 17429f7

File tree

12 files changed

+203
-303
lines changed

12 files changed

+203
-303
lines changed

.github/workflows/debian-package.yml

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -82,31 +82,11 @@ jobs:
8282
${{ matrix.fips_ref == 'FIPS' && '--fips' || '' }}
8383
8484
- name: Test OpenSSL provider functionality
85+
shell: bash
8586
run: |
86-
WOLFPROV_CONF_BACKUP="/tmp/wolfprovider.conf.backup"
87-
88-
# Temporarily move wolfprovider config so we can toggle between providers
89-
echo "Temporarily disabling wolfprovider for default provider tests:"
90-
mkdir -p /tmp/openssl-test
91-
if [ -f $WOLFPROV_CONF_FILE ]; then
92-
mv $WOLFPROV_CONF_FILE $WOLFPROV_CONF_BACKUP
93-
echo " - Moved $WOLFPROV_CONF_FILE to $WOLFPROV_CONF_BACKUP"
94-
else
95-
echo "$WOLFPROV_CONF_FILE not found!"
96-
exit 1
97-
fi
98-
9987
# Run the do-cmd-test.sh script to execute interoperability tests
10088
echo "Running OpenSSL provider interoperability tests..."
10189
OPENSSL_BIN=$(eval which openssl) ${{ matrix.force_fail }} ${{ matrix.fips_ref == 'FIPS' && 'WOLFSSL_ISFIPS=1' || '' }} ./scripts/cmd_test/do-cmd-tests.sh
102-
103-
# Restore wolfprovider configuration
104-
echo "Restoring wolfprovider configuration:"
105-
if [ -f $WOLFPROV_CONF_BACKUP ]; then
106-
mv $WOLFPROV_CONF_BACKUP $WOLFPROV_CONF_FILE
107-
echo " - Restored $WOLFPROV_CONF_FILE from $WOLFPROV_CONF_BACKUP"
108-
fi
109-
11090
echo "PASS: All provider interoperability tests successful"
11191
11292
- name: Uninstall package and verify cleanup

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,12 @@ test/**/*.trs
8484
test/**/*.o
8585
test/**/.deps/
8686
test/**/.dirstamp
87+
aes_outputs
88+
ecc_outputs
89+
hash_outputs
8790
req_outputs
88-
scripts/cmd_test/req-test.log
91+
rsa_outputs
92+
scripts/cmd_test/*.log
8993

9094
IDE/Android/android-ndk-r26b/
9195
IDE/Android/openssl-source/

debian/install-wolfprov.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ main() {
188188
exit 1
189189
fi
190190

191-
if [ -n "output_dir" ]; then
191+
if [ -n "$output_dir" ]; then
192192
output_dir=$(realpath $output_dir)
193193
fi
194194

scripts/cmd_test/aes-cmd-test.sh

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
# You should have received a copy of the GNU General Public License
2020
# along with wolfProvider. If not, see <http://www.gnu.org/licenses/>.
2121

22-
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
23-
source "${SCRIPT_DIR}/cmd-test-common.sh"
24-
source "${SCRIPT_DIR}/clean-cmd-test.sh"
22+
CMD_TEST_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
23+
source "${CMD_TEST_DIR}/cmd-test-common.sh"
24+
source "${CMD_TEST_DIR}/clean-cmd-test.sh"
2525

2626
if [ -z "${DO_CMD_TESTS:-}" ]; then
2727
echo "This script is designed to be called from do-cmd-tests.sh"
@@ -69,14 +69,16 @@ for key_size in "${KEY_SIZES[@]}"; do
6969
echo "Interop testing (encrypt with default, decrypt with wolfProvider):"
7070

7171
# Encryption with OpenSSL default provider
72-
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv -provider default \
72+
use_default_provider
73+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv \
7374
-in aes_outputs/test_data.txt -out "$enc_file" -p; then
7475
echo "[FAIL] Interop AES-${key_size}-${mode}: OpenSSL encrypt failed"
7576
FAIL=1
7677
fi
7778

7879
# Decryption with wolfProvider
79-
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv -provider-path "$WOLFPROV_PATH" -provider libwolfprov \
80+
use_wolf_provider
81+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv \
8082
-in "$enc_file" -out "$dec_file" -d -p; then
8183
echo "[FAIL] Interop AES-${key_size}-${mode}: wolfProvider decrypt failed"
8284
FAIL=1
@@ -98,14 +100,16 @@ for key_size in "${KEY_SIZES[@]}"; do
98100
echo "Interop testing (encrypt with wolfProvider, decrypt with default):"
99101

100102
# Encryption with wolfProvider
101-
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv -provider-path "$WOLFPROV_PATH" -provider libwolfprov \
103+
use_wolf_provider
104+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv \
102105
-in aes_outputs/test_data.txt -out "$enc_file" -p; then
103106
echo "[FAIL] Interop AES-${key_size}-${mode}: wolfProvider encrypt failed"
104107
FAIL=1
105108
fi
106109

107110
# Decryption with OpenSSL default provider
108-
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv -provider default \
111+
use_default_provider
112+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K "$key" $iv \
109113
-in "$enc_file" -out "$dec_file" -d -p; then
110114
echo "[FAIL] Interop AES-${key_size}-${mode}: OpenSSL decrypt failed"
111115
FAIL=1

scripts/cmd_test/cmd-test-common.sh

Lines changed: 56 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -19,87 +19,33 @@
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

2623
if [ -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
3027
fi
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
8133
cmd_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)
9743
cmd_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
11461
use_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
160101
use_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
200148
check_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

Comments
 (0)