Skip to content

Commit b11184c

Browse files
committed
Unify script code
1 parent d0e67ce commit b11184c

File tree

7 files changed

+98
-170
lines changed

7 files changed

+98
-170
lines changed

.github/workflows/cmdline.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ jobs:
3535
3636
- name: Run tests
3737
run: |
38+
source $GITHUB_WORKSPACE/scripts/env-setup
3839
${{ matrix.force_fail }} ${{ matrix.debug }} ./scripts/cmd_test/do-cmd-tests.sh

.github/workflows/debian-package.yml

Lines changed: 2 additions & 22 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..."
101-
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-
89+
${{ matrix.force_fail }} ${{ matrix.fips_ref == 'FIPS' && 'WOLFSSL_ISFIPS=1' || '' }} ./scripts/cmd_test/do-cmd-tests.sh
11090
echo "PASS: All provider interoperability tests successful"
11191
11292
- name: Uninstall package and verify cleanup

scripts/cmd_test/cmd-test-common.sh

Lines changed: 37 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -19,63 +19,15 @@
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+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
30+
source "${SCRIPT_DIR}/../utils-general.sh"
7931

8032
# Function to setup the environment for the command-line tests
8133
cmd_test_env_setup() {
@@ -110,99 +62,98 @@ cmd_test_init() {
11062
FORCE_FAIL_PASSED=0
11163
}
11264

65+
11366
# Function to use default provider only
11467
use_default_provider() {
11568
unset OPENSSL_MODULES
11669
unset OPENSSL_CONF
70+
if ! declare -F detect_wolfprovider_mode >/dev/null; then
71+
echo "ERROR: detect_wolfprovider_mode function not found"
72+
exit 1
73+
fi
74+
75+
detect_wolfprovider_mode
11776

11877
# Check if wolfProvider is in replace-default mode
119-
if [ "$WOLFPROV_REPLACE_DEFAULT" = "1" ]; then
78+
if [ "$is_openssl_replace_default" = "1" ]; then
12079
echo "INFO: wolfProvider is installed in replace-default mode"
12180
echo "INFO: wolfProvider IS the default provider and cannot be switched off"
12281

12382
# 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
83+
if [ "$is_wp_active" = "1" ] && [ "$is_wp_default" = "1" ]; then
12684
echo "Using default provider (wolfProvider in replace-default mode)"
12785
else
128-
echo "FAIL: Expected wolfProvider as default, but provider list doesn't match"
129-
echo "Provider list:"
130-
echo "$providers"
86+
echo "FAIL: Expected wolfProvider as default, but is_wp_active: $is_wp_active and is_wp_default: $is_wp_default"
13187
exit 1
13288
fi
13389
else
13490
# In non-replace-default mode, unsetting OPENSSL_MODULES should disable wolfProvider
13591
echo "INFO: wolfProvider is installed in non-replace-default mode"
13692

13793
# 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
94+
if [ "$is_openssl_default_provider" != "1" ]; then
14095
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"
96+
echo "is_openssl_default_provider: $is_openssl_default_provider"
15397
exit 1
15498
fi
99+
echo "INFO: Switched to default provider (OpenSSL)"
155100
fi
156101
}
157102

158103

159104
# Function to use wolf provider only
160105
use_wolf_provider() {
106+
export OPENSSL_MODULES=$WOLFPROV_PATH
107+
export OPENSSL_CONF=${WOLFPROV_CONFIG}
108+
if ! declare -F detect_wolfprovider_mode >/dev/null; then
109+
echo "ERROR: detect_wolfprovider_mode function not found"
110+
exit 1
111+
fi
112+
detect_wolfprovider_mode
113+
161114
# Check if wolfProvider is in replace-default mode
162-
if [ "$WOLFPROV_REPLACE_DEFAULT" = "1" ]; then
115+
if [ "$is_openssl_replace_default" = "1" ]; then
163116
# In replace-default mode, wolfProvider is already the default
164117
# No need to set OPENSSL_MODULES or OPENSSL_CONF
165118
echo "INFO: wolfProvider is installed in replace-default mode"
166119
echo "INFO: wolfProvider is already active as the default provider"
167120

168121
# Verify that wolfProvider is active
169-
local providers=$(${OPENSSL_BIN} list -providers 2>/dev/null)
170-
if echo "$providers" | grep -qi "wolfSSL Provider"; then
122+
if [ "$is_wp_active" = "1" ] && [ "$is_wp_default" = "1" ]; then
171123
echo "Using wolfProvider (replace-default mode)"
172124
else
173125
echo "FAIL: wolfProvider is not active"
174-
echo "Provider list:"
175-
echo "$providers"
126+
echo "is_wp_active: $is_wp_active"
127+
echo "is_wp_default: $is_wp_default"
176128
exit 1
177129
fi
178130
else
179131
# In non-replace-default mode, we need to set OPENSSL_MODULES and OPENSSL_CONF
180132
echo "INFO: wolfProvider is installed in non-replace-default mode"
181-
export OPENSSL_MODULES=$WOLFPROV_PATH
182-
export OPENSSL_CONF=${WOLFPROV_CONFIG}
183133

184134
# Verify that we are using wolfProvider
185-
local providers=$(${OPENSSL_BIN} list -providers 2>/dev/null)
186-
if ! echo "$providers" | grep -qi "wolfprov"; then
135+
if [ "$is_wp_active" != "1" ]; then
187136
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"
137+
$OPENSSL_BIN list -providers
138+
echo "is_wp_active: $is_wp_active"
139+
echo "is_wp_default: $is_wp_default"
192140
exit 1
193141
fi
194-
echo "Switched to wolfProvider"
142+
echo "INFO: Switched to wolfProvider"
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

scripts/cmd_test/do-cmd-tests.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@ echo ""
120120
echo "Running command-line test suite..."
121121
echo ""
122122

123-
# Detect installation mode and setup environment
124-
cmd_test_env_setup
125-
126123
echo ""
127124
echo "=== Running wolfProvider Command-Line Tests ==="
128125
echo "Using OPENSSL_BIN: ${OPENSSL_BIN}"

scripts/cmd_test/rsa-cmd-test.sh

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,6 @@ PROVIDER_ARGS=("-provider-path $WOLFPROV_PATH -provider libwolfprov" "-provider
4242

4343
OPENSSL_BIN=${OPENSSL_BIN:-openssl}
4444

45-
rsa_check_force_fail() {
46-
local openssl_providers=$($OPENSSL_BIN list -providers)
47-
is_openssl_default_provider=$(echo "$openssl_providers" | grep -qi "OpenSSL Default Provider" && echo 1 || echo 0)
48-
if [ $is_openssl_default_provider -eq 1 ]; then
49-
# With the OpenSSL provider, don't expect failures
50-
echo "OPENSSL Default provider active, no forced failures expected."
51-
elif [ "${WOLFPROV_FORCE_FAIL}" = "1" ]; then
52-
echo "[PASS] Test passed when force fail was enabled"
53-
FORCE_FAIL_PASSED=1
54-
exit 1
55-
fi
56-
}
57-
5845
# Function to validate key
5946
validate_key() {
6047
local key_type=$1

scripts/utils-general.sh

Lines changed: 54 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -24,43 +24,61 @@ if [ "$UTILS_GENERAL_LOADED" != "yes" ]; then # only set once
2424
}
2525
trap do_trap INT TERM
2626

27-
export UTILS_GENERAL_LOADED=yes
28-
fi
27+
UTILS_GENERAL_LOADED=yes
2928

30-
# Usage: check_git_match <target_ref> [<repo_dir>]
31-
check_git_match() {
32-
local target_ref="$1"
33-
local repo_dir="${2:-.}"
29+
# Usage: check_git_match <target_ref> [<repo_dir>]
30+
check_git_match() {
31+
local target_ref="$1"
32+
local repo_dir="${2:-.}"
3433

35-
pushd "$repo_dir" > /dev/null || return 2
34+
pushd "$repo_dir" > /dev/null || return 2
3635

37-
local current_tag current_branch current_commit_long current_commit_short
38-
current_tag=$(git describe --tags --exact-match 2>/dev/null || true)
39-
current_branch=$(git symbolic-ref --short HEAD 2>/dev/null || true)
40-
current_commit_long=$(git rev-parse HEAD 2>/dev/null || true)
41-
current_commit_short=$(git rev-parse --short HEAD 2>/dev/null || true)
36+
local current_tag current_branch current_commit_long current_commit_short
37+
current_tag=$(git describe --tags --exact-match 2>/dev/null || true)
38+
current_branch=$(git symbolic-ref --short HEAD 2>/dev/null || true)
39+
current_commit_long=$(git rev-parse HEAD 2>/dev/null || true)
40+
current_commit_short=$(git rev-parse --short HEAD 2>/dev/null || true)
4241

43-
if [[ -n "$current_tag" && "$target_ref" == "$current_tag" ]]; then
44-
echo "match: tag ($current_tag)"
45-
popd > /dev/null
46-
return 0
47-
elif [[ -n "$current_branch" && "$target_ref" == "$current_branch" ]]; then
48-
echo "match: branch ($current_branch)"
49-
popd > /dev/null
50-
return 0
51-
elif [[ -n "$current_commit_long" && "$target_ref" == "$current_commit_long" ]]; then
52-
echo "match: commit (long $current_commit_long)"
53-
popd > /dev/null
54-
return 0
55-
elif [[ -n "$current_commit_short" && "$target_ref" == "$current_commit_short" ]]; then
56-
echo "match: commit (short $current_commit_short)"
57-
popd > /dev/null
58-
return 0
59-
else
60-
echo "no match found for $target_ref"
61-
printf "Version inconsistency. Please fix ${repo_dir}\n"
62-
printf "(expected: ${target_ref}, got: ${current_tag} ${current_branch} ${current_commit_long} ${current_commit_short})\n"
63-
popd > /dev/null
64-
exit 1
65-
fi
66-
}
42+
if [[ -n "$current_tag" && "$target_ref" == "$current_tag" ]]; then
43+
echo "match: tag ($current_tag)"
44+
popd > /dev/null
45+
return 0
46+
elif [[ -n "$current_branch" && "$target_ref" == "$current_branch" ]]; then
47+
echo "match: branch ($current_branch)"
48+
popd > /dev/null
49+
return 0
50+
elif [[ -n "$current_commit_long" && "$target_ref" == "$current_commit_long" ]]; then
51+
echo "match: commit (long $current_commit_long)"
52+
popd > /dev/null
53+
return 0
54+
elif [[ -n "$current_commit_short" && "$target_ref" == "$current_commit_short" ]]; then
55+
echo "match: commit (short $current_commit_short)"
56+
popd > /dev/null
57+
return 0
58+
else
59+
echo "no match found for $target_ref"
60+
printf "Version inconsistency. Please fix ${repo_dir}\n"
61+
printf "(expected: ${target_ref}, got: ${current_tag} ${current_branch} ${current_commit_long} ${current_commit_short})\n"
62+
popd > /dev/null
63+
exit 1
64+
fi
65+
}
66+
67+
export is_openssl_replace_default=${is_openssl_replace_default:-0}
68+
export is_openssl_default_provider=${is_openssl_default_provider:-0}
69+
export is_wp_active=${is_wp_active:-0}
70+
export is_wp_default=${is_wp_default:-0}
71+
export is_wp_fips=${is_wp_fips:-0}
72+
73+
# Function to detect wolfProvider installation mode
74+
detect_wolfprovider_mode() {
75+
local openssl_version=$(${OPENSSL_BIN} version 2>/dev/null)
76+
local openssl_providers=$(${OPENSSL_BIN} list -providers 2>/dev/null)
77+
78+
is_openssl_replace_default=$(echo "$openssl_version" | grep -qi "wolfProvider-replace-default" && echo 1 || echo 0)
79+
is_openssl_default_provider=$(echo "$openssl_providers" | grep -qi "OpenSSL Default Provider" && echo 1 || echo 0)
80+
is_wp_active=$(echo "$openssl_providers" | grep -qi "wolfSSL Provider" && echo 1 || echo 0)
81+
is_wp_default=$(echo "$openssl_providers" | grep -q -Pzo 'Providers:\s*\n\s*default\s*\n\s*name:\s*wolfSSL Provider' && echo 1 || echo 0)
82+
is_wp_fips=$(echo "$openssl_providers" | grep -qi "wolfSSL Provider FIPS" && echo 1 || echo 0)
83+
}
84+
fi

scripts/verify-install.sh

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,8 @@ if ! command -v $OPENSSL_BIN >/dev/null 2>&1; then
7373
handle_error "$OPENSSL_BIN not found"
7474
fi
7575

76-
openssl_version=$($OPENSSL_BIN version 2> /dev/null)
77-
openssl_providers=$($OPENSSL_BIN list -providers 2> /dev/null)
78-
dpkg_output=$(dpkg -l 2> /dev/null | grep wolf)
76+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
77+
source "${SCRIPT_DIR}/utils-general.sh"
7978

8079
handle_error() {
8180
local message="$1"
@@ -200,13 +199,8 @@ verify_wolfprovider() {
200199
local replace_default="$2"
201200
local no_wp="$3"
202201

203-
is_openssl_replace_default=$(echo "$openssl_version" | grep -qi "wolfProvider-replace-default" && echo 1 || echo 0)
204-
is_openssl_default_provider=$(echo "$openssl_providers" | grep -qi "OpenSSL Default Provider" && echo 1 || echo 0)
205-
206-
is_wp_active=$(echo "$openssl_providers" | grep -qi "wolfSSL Provider" && echo 1 || echo 0)
207-
is_wp_default=$(echo "$openssl_providers" | grep -q -Pzo 'Providers:\s*\n\s*default\s*\n\s*name:\s*wolfSSL Provider' && echo 1 || echo 0)
208-
is_wp_fips=$(echo "$openssl_providers" | grep -qi "wolfSSL Provider FIPS" && echo 1 || echo 0)
209-
202+
detect_wolfprovider_mode
203+
dpkg_output=$(dpkg -l 2> /dev/null | grep wolf)
210204
is_wolfssl_installed=$(echo "$dpkg_output" | grep -Eq '^ii\s+libwolfssl\s' && echo 1 || echo 0)
211205
is_wolfssl_fips=$(echo "$dpkg_output" | grep -E '^ii\s+libwolfssl\s' | grep -qi "fips" && echo 1 || echo 0)
212206

0 commit comments

Comments
 (0)