@@ -1839,8 +1839,12 @@ int esp_mp_mulmod(MATH_INT_T* X, MATH_INT_T* Y, MATH_INT_T* M, MATH_INT_T* Z)
18391839 /* do we have an even moduli? */
18401840 if ((M -> dp [0 ] & 1 ) == 0 ) {
18411841#ifndef NO_ESP_MP_MUL_EVEN_ALT_CALC
1842- /* Z = X * Y mod M in mixed HW & SW*/
1842+ /* Z = X * Y mod M in mixed HW & SW */
1843+ #if defined(NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL )
1844+ ret = mp_mul (X , Y , tmpZ ); /* SW X * Y */
1845+ #else
18431846 ret = esp_mp_mul (X , Y , tmpZ ); /* HW X * Y */
1847+ #endif
18441848 if (ret == MP_OKAY ) {
18451849 /* z = tmpZ mod M, 0 <= Z < M */
18461850 ret = mp_mod (tmpZ , M , Z ); /* SW mod M */
@@ -1940,7 +1944,6 @@ int esp_mp_mulmod(MATH_INT_T* X, MATH_INT_T* Y, MATH_INT_T* M, MATH_INT_T* Z)
19401944
19411945 /* lock HW for use, enable peripheral clock */
19421946 if (ret == MP_OKAY ) {
1943- mulmod_lock_called = TRUE; /* Don't try to unlock unless we locked */
19441947 #ifdef WOLFSSL_HW_METRICS
19451948 {
19461949 /* Only track max values when using HW */
@@ -1954,6 +1957,12 @@ int esp_mp_mulmod(MATH_INT_T* X, MATH_INT_T* Y, MATH_INT_T* M, MATH_INT_T* Z)
19541957 #endif
19551958
19561959 ret = esp_mp_hw_lock ();
1960+ if (ret == ESP_OK ) {
1961+ mulmod_lock_called = TRUE; /* Don't try to unlock unless locked */
1962+ }
1963+ else {
1964+ ret = WC_HW_WAIT_E ;
1965+ }
19571966 }
19581967
19591968#if defined(CONFIG_IDF_TARGET_ESP32 )
@@ -2441,14 +2450,14 @@ int esp_mp_mulmod(MATH_INT_T* X, MATH_INT_T* Y, MATH_INT_T* M, MATH_INT_T* Z)
24412450 esp_mp_mulmod_usage_ct );
24422451 ESP_LOGI (TAG , "esp_mp_mulmod_error_ct = %lu failures" ,
24432452 esp_mp_mulmod_error_ct );
2444- ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE );
2453+ ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE );
24452454 esp_show_mp ("HW Z" , Z ); /* this is the HW result */
24462455 esp_show_mp ("SW Z2" , Z2 ); /* this is the SW result */
24472456 ESP_LOGI (TAG , "esp_mp_mulmod_usage_ct = %lu tries" ,
24482457 esp_mp_mulmod_usage_ct );
24492458 ESP_LOGI (TAG , "esp_mp_mulmod_error_ct = %lu failures" ,
24502459 esp_mp_mulmod_error_ct );
2451- ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE );
2460+ ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE );
24522461
24532462
24542463 #ifndef NO_RECOVER_SOFTWARE_CALC
@@ -2991,7 +3000,7 @@ int esp_hw_show_mp_metrics(void)
29913000 "NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MP_MUL" );
29923001#else
29933002 /* Metrics: esp_mp_mul() */
2994- ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE ); /* mul follows */
3003+ ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE ); /* mul follows */
29953004 ESP_LOGI (TAG , "esp_mp_mul HW acceleration enabled." );
29963005 ESP_LOGI (TAG , "Number of calls to esp_mp_mul: %lu" ,
29973006 esp_mp_mul_usage_ct );
@@ -3010,7 +3019,7 @@ int esp_hw_show_mp_metrics(void)
30103019 "NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_MULMOD" );
30113020#else
30123021 /* Metrics: esp_mp_mulmod() */
3013- ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE ); /* mulmod follows */
3022+ ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE ); /* mulmod follows */
30143023
30153024 ESP_LOGI (TAG , "esp_mp_mulmod HW acceleration enabled." );
30163025 /* Metrics: esp_mp_mulmod() */
@@ -3052,7 +3061,7 @@ int esp_hw_show_mp_metrics(void)
30523061 "NO_WOLFSSL_ESP32_CRYPT_RSA_PRI_EXPTMOD" );
30533062#else
30543063 /* Metrics: sp_mp_exptmod() */
3055- ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE ); /* exptmod follows */
3064+ ESP_LOGI (TAG , WOLFSSL_ESPIDF_BLANKLINE_MESSAGE ); /* exptmod follows */
30563065
30573066 ESP_LOGI (TAG , "Number of calls to esp_mp_exptmod: %lu" ,
30583067 esp_mp_exptmod_usage_ct );
0 commit comments