|
17 | 17 | # You should have received a copy of the GNU General Public License |
18 | 18 | # along with wolfProvider. If not, see <http://www.gnu.org/licenses/>. |
19 | 19 |
|
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) |
21 | 22 |
|
22 | | -cmd_test_env_setup() { |
23 | | - # Fail flags |
24 | | - FAIL=0 |
25 | | - FORCE_FAIL_PASSED=0 |
| 23 | +if [ -z "${DO_CMD_TESTS:-}" ]; then |
| 24 | + echo "This script is designed to be called from do-cmd-tests.sh" |
| 25 | + echo "Do not run this script directly - use do-cmd-tests.sh instead" |
| 26 | + exit 1 |
| 27 | +fi |
26 | 28 |
|
27 | | - if [ $COMMON_SETUP_DONE -ne 0 ]; then |
28 | | - echo "Setup already completed, skipping." |
29 | | - return |
30 | | - fi |
| 29 | +CMD_TEST_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" |
| 30 | +source "${CMD_TEST_DIR}/../utils-general.sh" |
31 | 31 |
|
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" |
| 32 | +# Function to setup the environment for the command-line tests |
| 33 | +cmd_test_env_setup() { |
| 34 | + export OPENSSL_BIN=${OPENSSL_BIN:-$(which openssl)} |
| 35 | + printf "Using OPENSSL_BIN: %s\n" "$OPENSSL_BIN" |
37 | 36 |
|
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 |
| 37 | + OPENSSL_CONF_ORIG="${OPENSSL_CONF:-}" |
| 38 | + OPENSSL_MODULES_ORIG="${OPENSSL_MODULES:-}" |
| 39 | +} |
48 | 40 |
|
49 | | - # Setup the environment for a local build |
50 | | - source "${REPO_ROOT}/scripts/env-setup" |
51 | | - 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 |
67 | | - fi |
68 | 41 |
|
69 | | - # Get the force fail parameter |
70 | | - if [ "${WOLFPROV_FORCE_FAIL}" = "1" ]; then |
71 | | - echo "Force fail mode enabled" |
72 | | - fi |
73 | | - if [ "${WOLFSSL_ISFIPS}" = "1" ]; then |
74 | | - echo "FIPS mode enabled" |
75 | | - fi |
| 42 | +# Individual test setup (called by each test script) |
| 43 | +cmd_test_init() { |
| 44 | + local log_file_name=$1 |
| 45 | + CMD_TEST_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" |
76 | 46 |
|
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}" |
| 47 | + # Set up log file |
| 48 | + export LOG_FILE="${CMD_TEST_DIR}/${log_file_name}" |
| 49 | + touch "$LOG_FILE" |
84 | 50 |
|
85 | | - COMMON_SETUP_DONE=1 |
86 | | -} |
| 51 | + # Redirect all output to log file |
| 52 | + exec > >(tee -a "$LOG_FILE") 2>&1 |
87 | 53 |
|
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") |
| 54 | + # Fail flags |
| 55 | + FAIL=0 |
| 56 | + FORCE_FAIL_PASSED=0 |
92 | 57 | } |
93 | 58 |
|
| 59 | + |
94 | 60 | # Function to use default provider only |
95 | 61 | use_default_provider() { |
96 | | - unset OPENSSL_MODULES |
97 | | - unset OPENSSL_CONF |
| 62 | + return 0 |
98 | 63 |
|
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 |
| 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 |
104 | 70 | fi |
105 | | - echo "Switched to default provider" |
106 | | -} |
| 71 | + detect_wolfprovider_mode |
| 72 | + |
| 73 | + # Check if wolfProvider is in replace-default mode |
| 74 | + if [ "$is_openssl_replace_default" = "1" ]; then |
| 75 | + echo "INFO: wolfProvider is installed in replace-default mode" |
| 76 | + echo "INFO: wolfProvider IS the default provider and cannot be switched off" |
| 77 | + |
| 78 | + # Verify that wolfProvider (as default) is active |
| 79 | + if [ "$is_wp_active" = "1" ] && [ "$is_wp_default" = "1" ]; then |
| 80 | + echo "Using default provider (wolfProvider in replace-default mode)" |
| 81 | + else |
| 82 | + echo "FAIL: Expected wolfProvider as default, but is_wp_active: $is_wp_active and is_wp_default: $is_wp_default" |
| 83 | + exit 1 |
| 84 | + fi |
| 85 | + else |
| 86 | + # In non-replace-default mode, unsetting OPENSSL_MODULES should disable wolfProvider |
| 87 | + echo "INFO: wolfProvider is installed in non-replace-default mode" |
107 | 88 |
|
108 | | -is_wolf_provider() { |
109 | | - return $($OPENSSL_BIN list -providers | grep -qi "wolfSSL Provider") |
| 89 | + # Verify that we are using the OpenSSL default provider (not wolfProvider) |
| 90 | + if [ "$is_openssl_default_provider" != "1" ]; then |
| 91 | + echo "FAIL: unable to switch to default provider, wolfProvider is still active" |
| 92 | + echo "is_openssl_default_provider: $is_openssl_default_provider" |
| 93 | + exit 1 |
| 94 | + fi |
| 95 | + echo "INFO: Switched to default provider (OpenSSL)" |
| 96 | + fi |
110 | 97 | } |
111 | 98 |
|
| 99 | + |
112 | 100 | # Function to use wolf provider only |
113 | 101 | 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" |
| 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 | + |
| 113 | + # Check if wolfProvider is in replace-default mode |
| 114 | + if [ "$is_openssl_replace_default" = "1" ]; then |
| 115 | + # In replace-default mode, wolfProvider is already the default |
| 116 | + # No need to set OPENSSL_MODULES or OPENSSL_CONF |
| 117 | + echo "INFO: wolfProvider is installed in replace-default mode" |
| 118 | + echo "INFO: wolfProvider is already active as the default provider" |
| 119 | + |
| 120 | + # Verify that wolfProvider is active |
| 121 | + if [ "$is_wp_active" = "1" ] && [ "$is_wp_default" = "1" ]; then |
| 122 | + echo "Using wolfProvider (replace-default mode)" |
| 123 | + else |
| 124 | + echo "FAIL: wolfProvider is not active" |
| 125 | + echo "is_wp_active: $is_wp_active" |
| 126 | + echo "is_wp_default: $is_wp_default" |
| 127 | + exit 1 |
| 128 | + fi |
| 129 | + else |
| 130 | + # In non-replace-default mode, we need to set OPENSSL_MODULES and OPENSSL_CONF |
| 131 | + echo "INFO: wolfProvider is installed in non-replace-default mode" |
| 132 | + |
| 133 | + # Verify that we are using wolfProvider |
| 134 | + if [ "$is_wp_active" != "1" ]; then |
| 135 | + echo "FAIL: unable to switch to wolfProvider, default provider is still active" |
| 136 | + $OPENSSL_BIN list -providers |
| 137 | + echo "is_wp_active: $is_wp_active" |
| 138 | + echo "is_wp_default: $is_wp_default" |
| 139 | + exit 1 |
| 140 | + fi |
| 141 | + echo "INFO: Switched to wolfProvider" |
120 | 142 | $OPENSSL_BIN list -providers |
121 | | - exit 1 |
122 | 143 | fi |
123 | | - echo "Switched to wolfProvider" |
124 | 144 | } |
125 | 145 |
|
126 | | -is_replace_default() { |
127 | | - return $($OPENSSL_BIN list -providers | grep -qi "wolfSSL Provider") |
128 | | -} |
129 | 146 |
|
130 | 147 | # Helper function to handle force fail checks |
131 | 148 | check_force_fail() { |
132 | | - 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 |
133 | 152 | echo "OPENSSL Default provider active, no forced failures expected." |
134 | | - elif [ "${WOLFPROV_FORCE_FAIL}" = "1" ]; then |
| 153 | + elif [ "$WOLFPROV_FORCE_FAIL" = "1" ]; then |
135 | 154 | echo "[PASS] Test passed when force fail was enabled" |
136 | 155 | FORCE_FAIL_PASSED=1 |
| 156 | + exit 1 |
137 | 157 | fi |
138 | 158 | } |
139 | 159 |
|
140 | | -# Helper function to get provider name from provider arguments |
141 | | -get_provider_name() { |
142 | | - local provider_args=$1 |
143 | | - if [ "$provider_args" = "-provider default" ]; then |
144 | | - echo "default" |
| 160 | +use_provider_by_name() { |
| 161 | + local provider_name=$1 |
| 162 | + if [ "$provider_name" = "libwolfprov" ]; then |
| 163 | + use_wolf_provider |
145 | 164 | else |
146 | | - echo "libwolfprov" |
| 165 | + use_default_provider |
147 | 166 | fi |
148 | 167 | } |
0 commit comments