Skip to content

Commit 8b67392

Browse files
committed
examples/pem/pem.c: don't wolfCrypt_Cleanup() unless wolfcrypt_inited;
scripts/pem.test: * add setup for WOLFSSL_NO_DER_TO_PEM, * exit early with skip code if executable dependencies are missing or WOLFSSL_NO_PEM or NO_CODING, and * add clean skip clauses to convert_to_pem(), compare_pem(), and pem_der_exp(), if WOLFSSL_NO_DER_TO_PEM.
1 parent e601e04 commit 8b67392

2 files changed

Lines changed: 68 additions & 4 deletions

File tree

examples/pem/pem.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,7 @@ int main(int argc, char* argv[])
755755
#ifdef DEBUG_WOLFSSL
756756
int log = 0;
757757
#endif
758+
int wolfcrypt_inited = 0;
758759

759760
progname = strrchr(argv[0], '/');
760761
if (progname)
@@ -979,6 +980,7 @@ int main(int argc, char* argv[])
979980
progname, wc_GetErrorString(ret));
980981
exit(1);
981982
}
983+
wolfcrypt_inited = 1;
982984

983985
/* Convert PEM type string to value. */
984986
if (type_str != NULL) {
@@ -1075,10 +1077,12 @@ int main(int argc, char* argv[])
10751077
if ((out_file != stdout) && (out_file != NULL))
10761078
(void)fclose(out_file);
10771079

1078-
ret = wolfCrypt_Cleanup();
1079-
if (ret != 0) {
1080-
fprintf(stderr, "%s: wolfCrypt_Cleanup() failed: %s.\n",
1081-
progname, wc_GetErrorString(ret));
1080+
if (wolfcrypt_inited) {
1081+
ret = wolfCrypt_Cleanup();
1082+
if (ret != 0) {
1083+
fprintf(stderr, "%s: wolfCrypt_Cleanup() failed: %s.\n",
1084+
progname, wc_GetErrorString(ret));
1085+
}
10821086
}
10831087

10841088
return (ret == 0) ? 0 : 1;

scripts/pem.test

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ CR=$'\n'
1919
ENC_STRING="encrypt"
2020
DER_TO_PEM_STRING="input is DER and output is PEM"
2121

22+
if ! "$PEM_EXE" --help >/dev/null 2>&1; then
23+
echo "$PEM_EXE not found -- skipping pem.test."
24+
exit 77
25+
fi
26+
27+
if ! "$ASN1_EXE" --help >/dev/null 2>&1; then
28+
echo "$ASN1_EXE not found -- skipping pem.test."
29+
exit 77
30+
fi
31+
2232
if grep -q -E '^#define HAVE_FIPS$' wolfssl/options.h; then
2333
HAVE_FIPS=1
2434
fi
@@ -51,6 +61,41 @@ if ! grep -q -E '^#define NO_DH$' wolfssl/options.h; then
5161
HAVE_DH=1
5262
fi
5363

64+
if grep -q -E '^#define WOLFSSL_KEY_GEN$' wolfssl/options.h; then
65+
WOLFSSL_KEY_GEN=1
66+
fi
67+
68+
if grep -q -E '^#define WOLFSSL_CERT_GEN$' wolfssl/options.h; then
69+
WOLFSSL_CERT_GEN=1
70+
fi
71+
72+
if grep -q -E '^#define OPENSSL_EXTRA$' wolfssl/options.h; then
73+
OPENSSL_EXTRA=1
74+
fi
75+
76+
if [[ ! -v WOLFSSL_KEY_GEN && ! -v WOLFSSL_CERT_GEN && ! -v OPENSSL_EXTRA ]]; then
77+
WOLFSSL_NO_DER_TO_PEM=1
78+
fi
79+
80+
if grep -q -E '^#define WOLFSSL_NO_PEM$' wolfssl/options.h; then
81+
WOLFSSL_NO_PEM=1
82+
fi
83+
84+
if grep -q -E '^#define NO_CODING$' wolfssl/options.h; then
85+
NO_CODING=1
86+
fi
87+
88+
if [[ -v WOLFSSL_NO_PEM ]]; then
89+
echo "WOLFSSL_NO_PEM is configured -- skipping pem.test."
90+
exit 77
91+
fi
92+
93+
if [[ -v NO_CODING ]]; then
94+
echo "NO_CODING is configured -- skipping pem.test."
95+
exit 77
96+
fi
97+
98+
5499
# Cleanup temporaries created during testing.
55100
do_cleanup() {
56101
echo
@@ -210,6 +255,11 @@ compare_der() {
210255
#
211256
# @param [in] $* Command line parameters to pem example.
212257
convert_to_pem() {
258+
if [[ -v WOLFSSL_NO_DER_TO_PEM ]]; then
259+
echo ' Skipping -- WOLFSSL_NO_DER_TO_PEM'
260+
TEST_SKIP_CNT=$((TEST_SKIP_CNT+1))
261+
return 0
262+
fi
213263
if [ "$SKIP" = "" -a "$FAILED" = "" ]; then
214264
echo " $PEM_EXE --der -t \"$PEM_TYPE\" $* -out $tmp_pem_file"
215265
$PEM_EXE --der "$@" -t "$PEM_TYPE" -out $tmp_pem_file
@@ -239,6 +289,11 @@ compare_pem() {
239289
# @param [in] $3 PEM type expected in PEM file and to place in created PEM
240290
# file.
241291
pem_der_exp() {
292+
if [[ -v WOLFSSL_NO_DER_TO_PEM ]]; then
293+
echo ' Skipping -- WOLFSSL_NO_DER_TO_PEM'
294+
TEST_SKIP_CNT=$((TEST_SKIP_CNT+1))
295+
return 0
296+
fi
242297
if [ "$SKIP" = "" -a "$FAILED" = "" ]; then
243298
PEM_FILE=$1
244299
DER_FILE=$2
@@ -269,6 +324,11 @@ pem_der_exp() {
269324
#
270325
# @param [in] $@ Command line parameters to pem example when encrypting.
271326
der_pem_enc() {
327+
if [[ -v WOLFSSL_NO_DER_TO_PEM ]]; then
328+
echo ' Skipping -- WOLFSSL_NO_DER_TO_PEM'
329+
TEST_SKIP_CNT=$((TEST_SKIP_CNT+1))
330+
return 0
331+
fi
272332
PEM_TYPE="ENCRYPTED PRIVATE KEY"
273333
convert_to_pem -in ./certs/server-key.der -p yassl123 "$@" || return $?
274334
convert_to_der -in $tmp_pem_file -p yassl123 || return $?

0 commit comments

Comments
 (0)