forked from wolfSSL/wolfssl
wc_Sha256Free checks lockDepth for Espressif RTOS
This commit is contained in:
@@ -84,6 +84,7 @@ on the specific device platform.
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* determine if we are using Espressif SHA hardware acceleration */
|
/* determine if we are using Espressif SHA hardware acceleration */
|
||||||
|
#undef WOLFSSL_USE_ESP32WROOM32_CRYPT_HASH_HW
|
||||||
#if defined(WOLFSSL_ESP32WROOM32_CRYPT) && \
|
#if defined(WOLFSSL_ESP32WROOM32_CRYPT) && \
|
||||||
!defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH)
|
!defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH)
|
||||||
/* define a single keyword for simplicity & readability
|
/* define a single keyword for simplicity & readability
|
||||||
@@ -93,7 +94,7 @@ on the specific device platform.
|
|||||||
*/
|
*/
|
||||||
#define WOLFSSL_USE_ESP32WROOM32_CRYPT_HASH_HW
|
#define WOLFSSL_USE_ESP32WROOM32_CRYPT_HASH_HW
|
||||||
#else
|
#else
|
||||||
#undef USE_ESP32WROOM32_CRYPT_HASH
|
#undef WOLFSSL_USE_ESP32WROOM32_CRYPT_HASH_HW
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* fips wrapper calls, user can call direct */
|
/* fips wrapper calls, user can call direct */
|
||||||
@@ -1734,6 +1735,23 @@ void wc_Sha256Free(wc_Sha256* sha256)
|
|||||||
#ifdef WOLFSSL_IMXRT_DCP
|
#ifdef WOLFSSL_IMXRT_DCP
|
||||||
DCPSha256Free(sha256);
|
DCPSha256Free(sha256);
|
||||||
#endif
|
#endif
|
||||||
|
/* Espressif embedded hardware acceleration specific: */
|
||||||
|
#if defined(WOLFSSL_USE_ESP32WROOM32_CRYPT_HASH_HW)
|
||||||
|
if (sha256->ctx.lockDepth > 0) {
|
||||||
|
/* probably due to unclean shutdown, error, or other problem.
|
||||||
|
*
|
||||||
|
* if you find yourself here, code needs to be cleaned up to
|
||||||
|
* properly release hardware. this init is only for handling
|
||||||
|
* the unexpected. by the time free is called, the hardware
|
||||||
|
* should have already been released (lockDepth = 0)
|
||||||
|
*/
|
||||||
|
InitSha256(sha256); /* unlock mutex, set mode to ESP32_SHA_INIT */
|
||||||
|
ESP_LOGE("sha256", "ERROR: hardware unlock needed in wc_Sha256Free");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ESP_LOGV("sha256", "hardware unlock not needed in wc_Sha256Free");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !defined(WOLFSSL_HAVE_PSA) || defined(WOLFSSL_PSA_NO_HASH) */
|
#endif /* !defined(WOLFSSL_HAVE_PSA) || defined(WOLFSSL_PSA_NO_HASH) */
|
||||||
|
Reference in New Issue
Block a user