Skip to content

Commit fc26c76

Browse files
committed
Gracefully fail with WOLFPROV_FORCE_FAIL=1 enabled
1 parent e9df2a6 commit fc26c76

File tree

5 files changed

+316
-154
lines changed

5 files changed

+316
-154
lines changed

.github/workflows/simple.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,9 @@ jobs:
4444
exit 1 # failure was unexpected (normal test)
4545
fi
4646
}
47-
if [ -z "${{ matrix.force_fail }}" ]; then
48-
./scripts/cmd_test/do-cmd-tests.sh
49-
fi
50-
id: run_tests
47+
48+
# Run the command-line tests
49+
./scripts/cmd_test/do-cmd-tests.sh
5150
5251
- name: Print test logs
5352
if: always()

scripts/cmd_test/aes-cmd-test.sh

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,19 @@ source "${UTILS_DIR}/utils-wolfprovider.sh"
1616
# Initialize the environment
1717
init_wolfprov
1818

19+
# Fail flag
20+
FAIL=0
21+
1922
# Verify wolfProvider is properly loaded
2023
echo -e "\nVerifying wolfProvider configuration:"
2124
if ! $OPENSSL_BIN list -providers | grep -q "wolf"; then
2225
echo "[FAIL] wolfProvider not found in OpenSSL providers!"
2326
echo "Current provider list:"
2427
$OPENSSL_BIN list -providers
25-
exit 1
28+
FAIL=1
29+
else
30+
echo "[PASS] wolfProvider is properly configured"
2631
fi
27-
echo "[PASS] wolfProvider is properly configured"
2832

2933
# Print environment for verification
3034
echo "Environment variables:"
@@ -41,7 +45,6 @@ KEY_SIZES=("128" "192" "256")
4145
# Only include modes supported by wolfProvider
4246
MODES=("ecb" "cbc" "ctr" "cfb")
4347

44-
4548
echo "=== Running AES Algorithm Comparisons ==="
4649

4750
# Run tests for each key size and mode
@@ -60,45 +63,69 @@ for key_size in "${KEY_SIZES[@]}"; do
6063
enc_file="aes_outputs/aes${key_size}_${mode}.enc"
6164
dec_file="aes_outputs/aes${key_size}_${mode}.dec"
6265

63-
# Interop testing: Encrypt with default provider, decrypt with wolfProvider
66+
# Interop testing: Encrypt with default provider, decrypt with wolfProvider
6467
echo "Interop testing (encrypt with default, decrypt with wolfProvider):"
6568

6669
# Encryption with OpenSSL default provider
67-
$OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider default \
68-
-in test.txt -out "$enc_file" -p
70+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider default \
71+
-in test.txt -out "$enc_file" -p; then
72+
echo "[FAIL] Interop AES-${key_size}-${mode}: OpenSSL encrypt failed"
73+
FAIL=1
74+
fi
6975

7076
# Decryption with wolfProvider
71-
$OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider-path $WOLFPROV_PATH -provider libwolfprov \
72-
-in "$enc_file" -out "$dec_file" -d -p
77+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider-path $WOLFPROV_PATH -provider libwolfprov \
78+
-in "$enc_file" -out "$dec_file" -d -p; then
79+
echo "[FAIL] Interop AES-${key_size}-${mode}: wolfProvider decrypt failed"
80+
FAIL=1
81+
fi
7382

74-
if cmp -s "test.txt" "$dec_file"; then
75-
echo "[PASS] Interop AES-${key_size}-${mode}: OpenSSL encrypt, wolfProvider decrypt"
83+
if [ $FAIL -eq 0 ]; then
84+
if cmp -s "test.txt" "$dec_file"; then
85+
echo "[PASS] Interop AES-${key_size}-${mode}: OpenSSL encrypt, wolfProvider decrypt"
86+
else
87+
echo "[FAIL] Interop AES-${key_size}-${mode}: OpenSSL encrypt, wolfProvider decrypt"
88+
FAIL=1
89+
fi
7690
else
77-
echo "[FAIL] Interop AES-${key_size}-${mode}: OpenSSL encrypt, wolfProvider decrypt"
78-
exit 1
91+
echo "[INFO] Cannot verify encryption/decryption - no key available"
7992
fi
8093

8194
# Interop testing: Encrypt with wolfProvider, decrypt with default provider
8295
echo "Interop testing (encrypt with wolfProvider, decrypt with default):"
8396

8497
# Encryption with wolfProvider
85-
$OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider-path $WOLFPROV_PATH -provider libwolfprov \
86-
-in test.txt -out "$enc_file" -p
98+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider-path $WOLFPROV_PATH -provider libwolfprov \
99+
-in test.txt -out "$enc_file" -p; then
100+
echo "[FAIL] Interop AES-${key_size}-${mode}: wolfProvider encrypt failed"
101+
FAIL=1
102+
fi
87103

88104
# Decryption with OpenSSL default provider
89-
$OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider default \
90-
-in "$enc_file" -out "$dec_file" -d -p
105+
if ! $OPENSSL_BIN enc -aes-${key_size}-${mode} -K $key $iv -provider default \
106+
-in "$enc_file" -out "$dec_file" -d -p; then
107+
echo "[FAIL] Interop AES-${key_size}-${mode}: OpenSSL decrypt failed"
108+
FAIL=1
109+
fi
91110

92-
if cmp -s "test.txt" "$dec_file"; then
93-
echo "[PASS] Interop AES-${key_size}-${mode}: wolfProvider encrypt, OpenSSL decrypt"
111+
if [ $FAIL -eq 0 ]; then
112+
if cmp -s "test.txt" "$dec_file"; then
113+
echo "[PASS] Interop AES-${key_size}-${mode}: wolfProvider encrypt, OpenSSL decrypt"
114+
else
115+
echo "[FAIL] Interop AES-${key_size}-${mode}: wolfProvider encrypt, OpenSSL decrypt"
116+
FAIL=1
117+
fi
94118
else
95-
echo "[FAIL] Interop AES-${key_size}-${mode}: wolfProvider encrypt, OpenSSL decrypt"
96-
exit 1
119+
echo "[INFO] Cannot verify encryption/decryption - no key available"
97120
fi
98121
done
99122
done
100123

101-
# End of AES testing
102-
103-
echo -e "\n=== All AES tests completed successfully ==="
104-
exit 0
124+
# Change end of script to check FAIL flag
125+
if [ $FAIL -eq 0 ]; then
126+
echo -e "\n=== All AES tests completed successfully ==="
127+
exit 0
128+
else
129+
echo -e "\n=== AES tests completed with failures ==="
130+
exit 1
131+
fi

0 commit comments

Comments
 (0)