Skip to content

Commit fe751dc

Browse files
authored
Merge pull request wolfSSL#196 from aidangarske/rsa_decode_fix
Fix RSA decode and empty Keygen OID with FIPS
2 parents ff8bba6 + ebd8414 commit fe751dc

File tree

4 files changed

+14
-4
lines changed

4 files changed

+14
-4
lines changed

scripts/utils-wolfssl.sh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ WOLFSSL_SOURCE_DIR=${SCRIPT_DIR}/../wolfssl-source
2727
WOLFSSL_INSTALL_DIR=${SCRIPT_DIR}/../wolfssl-install
2828
WOLFSSL_ISFIPS=${WOLFSSL_ISFIPS:-0}
2929
WOLFSSL_FIPS_CONFIG_OPTS=${WOLFSSL_CONFIG_OPTS:-'--enable-opensslcoexist '}
30-
WOLFSSL_FIPS_CONFIG_CFLAGS=${WOLFSSL_CONFIG_CFLAGS:-"-I${OPENSSL_INSTALL_DIR}/include"}
30+
WOLFSSL_FIPS_CONFIG_CFLAGS=${WOLFSSL_CONFIG_CFLAGS:-"-I${OPENSSL_INSTALL_DIR}/include -DWOLFSSL_OLD_OID_SUM"}
3131
WOLFSSL_CONFIG_OPTS=${WOLFSSL_CONFIG_OPTS:-'--enable-all-crypto --with-eccminsz=192 --with-max-ecc-bits=1024 --enable-opensslcoexist --enable-sha'}
3232
WOLFSSL_CONFIG_CFLAGS=${WOLFSSL_CONFIG_CFLAGS:-"-I${OPENSSL_INSTALL_DIR}/include -DWC_RSA_NO_PADDING -DWOLFSSL_PUBLIC_MP -DHAVE_PUBLIC_FFDHE -DHAVE_FFDHE_6144 -DHAVE_FFDHE_8192 -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_PSS_SALT_LEN_DISCOVER -DRSA_MIN_SIZE=1024 -DWOLFSSL_OLD_OID_SUM "}
3333

34+
WOLFSSL_DEBUG_ASN_TEMPLATE=${DWOLFSSL_DEBUG_ASN_TEMPLATE:-0}
35+
WOLFPROV_DISABLE_ERR_TRACE=${WOLFPROV_DISABLE_ERR_TRACE:-0}
3436
WOLFPROV_DEBUG=${WOLFPROV_DEBUG:-0}
3537
USE_CUR_TAG=${USE_CUR_TAG:-0}
3638

@@ -84,12 +86,17 @@ install_wolfssl() {
8486

8587
if [ "$WOLFPROV_DEBUG" = "1" ]; then
8688
CONF_ARGS+=" --enable-debug --enable-keylog-export"
87-
if [[ "$OSTYPE" != "darwin"* ]]; then
89+
if [[ "$OSTYPE" != "darwin"* ]] && [ "$WOLFPROV_DISABLE_ERR_TRACE" != "1" ]; then
8890
# macOS doesn't support backtrace
8991
CONF_ARGS+=" --enable-debug-trace-errcodes=backtrace"
9092
fi
9193
WOLFSSL_CONFIG_CFLAGS+=" -DWOLFSSL_LOGGINGENABLED_DEFAULT=1"
9294
fi
95+
if [ "$WOLFSSL_DEBUG_ASN_TEMPLATE" = "1" ] && ( [ "$WOLFSSL_ISFIPS" != "1" ] || [ -z "$WOLFSSL_FIPS_BUNDLE" ] ); then
96+
WOLFSSL_CONFIG_CFLAGS+=" -DWOLFSSL_DEBUG_ASN_TEMPLATE"
97+
elif [ "$WOLFSSL_DEBUG_ASN_TEMPLATE" = "1" ] && ( [ "$WOLFSSL_ISFIPS" = "1" ] || [ -n "$WOLFSSL_FIPS_BUNDLE" ] ); then
98+
WOLFSSL_FIPS_CONFIG_CFLAGS+=" -DWOLFSSL_DEBUG_ASN_TEMPLATE"
99+
fi
93100
if [ -n "$WOLFSSL_FIPS_BUNDLE" ]; then
94101
if [ ! -n "$WOLFSSL_FIPS_VERSION" ]; then
95102
printf "ERROR, must specify version if using FIPS bundle (v5, v6, ready)"

src/wp_dh_kmgmt.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2655,6 +2655,8 @@ static int wp_dh_encode(wp_DhEncDecCtx* ctx, OSSL_CORE_BIO *cBio,
26552655
OPENSSL_free(pemData);
26562656
}
26572657
OPENSSL_free(cipherInfo);
2658+
2659+
BIO_free(out);
26582660
#else
26592661
(void)ctx;
26602662
(void)cBio;
@@ -2665,7 +2667,6 @@ static int wp_dh_encode(wp_DhEncDecCtx* ctx, OSSL_CORE_BIO *cBio,
26652667
(void)pwCbArg;
26662668
#endif
26672669

2668-
BIO_free(out);
26692670
WOLFPROV_LEAVE(WP_LOG_KE, __FILE__ ":" WOLFPROV_STRINGIZE(__LINE__), ok);
26702671
return ok;
26712672
}

src/wp_internal.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,7 @@ int wp_cipher_from_params(const OSSL_PARAM params[], int* cipher,
573573
}
574574

575575
#ifndef WOLFSSL_ENCRYPTED_KEYS
576+
#ifdef WP_HAVE_MD5
576577
/*
577578
* wolfProvider version of EncryptedInfo.
578579
*/
@@ -695,6 +696,7 @@ static int wp_BufferKeyEncrypt(wp_EncryptedInfo* info, byte* der, word32 derSz,
695696

696697
return ret;
697698
}
699+
#endif /* WP_HAVE_MD5 */
698700
#endif /* WOLFSSL_ENCRYPTED_KEYS */
699701

700702
/**

src/wp_rsa_kmgmt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2167,7 +2167,7 @@ static int wp_rsa_decode_pki(wp_Rsa* rsa, unsigned char* data, word32 len)
21672167
if (rc != 0) {
21682168
ok = 0;
21692169
}
2170-
#if LIBWOLFSSL_VERSION_HEX < 0x05000000
2170+
#if LIBWOLFSSL_VERSION_HEX < 0x05000000 || defined(HAVE_FIPS)
21712171
if (!ok) {
21722172
idx = 0;
21732173
rc = wc_GetPkcs8TraditionalOffset(data, &idx, len);

0 commit comments

Comments
 (0)