Skip to content

[Bug]: Forcing FreeRTOS Espressif to SINGLE_THREADED causes SHA256 test failure #7540

@gojimmypi

Description

@gojimmypi

Contact Details

No response

Version

latest master

Description

Related to #7528 and #7533 the SHA256 test (only) fails on the ESP32 when #define SINGLE_THREADED is included in the user_settings.h.

Even though the ESP32 is already a multi-task FreeRTOS environment, forcing the SINGLE_THREADED mode should not cause a SHA256 failure.

Additionally, I discovered there's a macro logic problem when surgically disabling only SHA256 and/or SHA224:

    #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA256
    #define NO_WOLFSSL_ESP32_CRYPT_HASH_SHA224

Reproduction steps

Add above noted settings to respective user_settings.h for the wolfssl_test example.

Relevant log output

The SHA256 failuee looks like this:


I (642) esp32_util: LIBWOLFSSL_VERSION_STRING = 5.7.0
I (648) esp32_util: LIBWOLFSSL_VERSION_HEX = 5007000
I (653) esp32_util: Stack HWM: 9212
I (657) esp32_util: 
I (660) esp32_util: Macro Name                 Defined   Not Defined
I (667) esp32_util: ------------------------- --------- -------------
I (674) esp32_util: NO_ESPIDF_DEFAULT........                 X
I (681) esp32_util: HW_MATH_ENABLED..........     X
I (687) esp32_util: WOLFSSL_SHA224...........     X
I (692) esp32_util: WOLFSSL_SHA384...........     X
I (698) esp32_util: WOLFSSL_SHA512...........     X
I (703) esp32_util: WOLFSSL_SHA3.............     X
I (709) esp32_util: HAVE_ED25519.............     X
I (714) esp32_util: HAVE_AES_ECB.............                 X
I (721) esp32_util: HAVE_AES_DIRECT..........                 X
I (728) esp32_util: USE_FAST_MATH............     X
I (733) esp32_util: WOLFSSL_SP_MATH_ALL......                 X
I (740) esp32_util: SP_MATH..................                 X
I (746) esp32_util: WOLFSSL_HW_METRICS.......     X
I (752) esp32_util: RSA_LOW_MEM..............     X
I (757) esp32_util: SMALL_SESSION_CACHE......                 X
I (764) esp32_util: WC_NO_HARDEN.............                 X
I (771) esp32_util: TFM_TIMING_RESISTANT.....     X
I (776) esp32_util: ECC_TIMING_RESISTANT.....     X
I (782) esp32_util: WC_NO_CACHE_RESISTANT....     X
I (787) esp32_util: WC_AES_BITSLICED.........                 X
I (794) esp32_util: WOLFSSL_AES_NO_UNROLL....                 X
I (800) esp32_util: TFM_TIMING_RESISTANT.....     X
I (806) esp32_util: ECC_TIMING_RESISTANT.....     X
I (812) esp32_util: WC_RSA_BLINDING..........     X
I (817) esp32_util: NO_WRITEV................     X
I (823) esp32_util: FREERTOS.................     X
I (828) esp32_util: NO_WOLFSSL_DIR...........     X
I (834) esp32_util: WOLFSSL_NO_CURRDIR.......     X
I (839) esp32_util: WOLFSSL_LWIP.............     X
I (845) esp32_util:
I (848) esp32_util: Compiler Optimization: Default
I (853) esp32_util:
I (856) esp32_util: CONFIG_IDF_TARGET = esp32
W (861) esp32_util: Watchdog active; missing WOLFSSL_ESP_NO_WATCHDOG definition.
I (869) esp32_util: CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ: 240 MHz
I (876) esp32_util: Xthal_have_ccount: 1
I (880) esp32_util: CONFIG_MAIN_TASK_STACK_SIZE: 10500
I (886) esp32_util: CONFIG_ESP_MAIN_TASK_STACK_SIZE: 10500
I (892) esp32_util: CONFIG_TIMER_TASK_STACK_SIZE: 3584
I (898) esp32_util: CONFIG_TIMER_TASK_STACK_DEPTH: 2048
I (904) esp32_util: Stack HWM: 3ffb65af
I (908) esp32_util: ESP32_CRYPT is enabled for ESP32.
I (914) esp32_util: SINGLE_THREADED
I (918) esp32_util: Boot count: 1
------------------------------------------------------------------------------
 wolfSSL version 5.7.0
------------------------------------------------------------------------------
error    test passed!
MEMORY   test passed!
base64   test passed!
base16   test passed!
asn      test passed!
RANDOM   test passed!
MD5      test passed!
MD2      test passed!
MD4      test passed!
SHA      test passed!
SHA-224  test passed!
E (969) wc_test: Failed: Error = -1610916146 during sha256_test, line 3410

Attempting to disable HW SHA256 (only) and forcing SINGLE_THREADED causes this compile-time error:

-- wolfSSL @ 5.7.0-test.rev02
Building in release mode
Compiling .pio\build\esp32dev\libb61\wolfSSL\wolfcrypt\src\sha256.o
.pio/libdeps/esp32dev/wolfSSL/src/wolfcrypt/src/sha256.c: In function 'wc_Sha224Update':
.pio/libdeps/esp32dev/wolfSSL/src/wolfcrypt/src/sha256.c:2090:15: error: 'wc_Sha224' {aka 'struct wc_Sha256'} has no member named 'ctx'
 2090 |         sha224->ctx.mode = ESP32_SHA_SW; /* no SHA224 HW, so always SW */
      |               ^~
*** [.pio\build\esp32dev\libb61\wolfSSL\wolfcrypt\src\sha256.o] Error 1
=================================================================== [FAILED] Took 20.16 seconds ===================================================================

 *  The terminal process "C:\Users\gojimmypi\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. 

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions