From 57db17bec2dba2b4756eecd1b024f79273ab3d4e Mon Sep 17 00:00:00 2001 From: "harshal.patil" Date: Wed, 10 Jul 2024 14:24:54 +0530 Subject: [PATCH] feat(esp_security/crypto): Create a generic crypto locking layer across targets --- components/esp_security/CMakeLists.txt | 2 +- .../src/crypto/esp32/esp_crypto_lock.c | 27 ----- .../src/crypto/esp32c2/esp_crypto_lock.c | 26 ----- .../src/crypto/esp32c3/esp_crypto_lock.c | 75 ------------ .../src/crypto/esp32c5/esp_crypto_lock.c | 104 ----------------- .../src/crypto/esp32c6/esp_crypto_lock.c | 89 --------------- .../src/crypto/esp32h2/esp_crypto_lock.c | 107 ------------------ .../src/crypto/esp32s2/esp_crypto_lock.c | 36 ------ .../src/crypto/esp32s3/esp_crypto_lock.c | 67 ----------- .../crypto/{esp32p4 => }/esp_crypto_lock.c | 44 +++++++ 10 files changed, 45 insertions(+), 532 deletions(-) delete mode 100644 components/esp_security/src/crypto/esp32/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32c2/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32c3/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32c5/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32c6/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32h2/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32s2/esp_crypto_lock.c delete mode 100644 components/esp_security/src/crypto/esp32s3/esp_crypto_lock.c rename components/esp_security/src/crypto/{esp32p4 => }/esp_crypto_lock.c (64%) diff --git a/components/esp_security/CMakeLists.txt b/components/esp_security/CMakeLists.txt index ade563f357..5678f9a796 100644 --- a/components/esp_security/CMakeLists.txt +++ b/components/esp_security/CMakeLists.txt @@ -10,7 +10,7 @@ if(NOT BOOTLOADER_BUILD) list(APPEND srcs "src/crypto/esp_dpa_protection.c") endif() - list(APPEND srcs "src/crypto/${IDF_TARGET}/esp_crypto_lock.c") + list(APPEND srcs "src/crypto/esp_crypto_lock.c") endif() idf_component_register(SRCS ${srcs} diff --git a/components/esp_security/src/crypto/esp32/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32/esp_crypto_lock.c deleted file mode 100644 index 3eb303c92b..0000000000 --- a/components/esp_security/src/crypto/esp32/esp_crypto_lock.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -MPI/RSA: independent -*/ - -/* Lock for the MPI/RSA peripheral */ - -static _lock_t s_crypto_mpi_lock; - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} diff --git a/components/esp_security/src/crypto/esp32c2/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32c2/esp_crypto_lock.c deleted file mode 100644 index 53a2500a47..0000000000 --- a/components/esp_security/src/crypto/esp32c2/esp_crypto_lock.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -ECC: independent -*/ - -/* Lock for ECC peripheral */ -static _lock_t s_crypto_ecc_lock; - -void esp_crypto_ecc_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ecc_lock); -} - -void esp_crypto_ecc_lock_release(void) -{ - _lock_release(&s_crypto_ecc_lock); -} diff --git a/components/esp_security/src/crypto/esp32c3/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32c3/esp_crypto_lock.c deleted file mode 100644 index 51b02be94d..0000000000 --- a/components/esp_security/src/crypto/esp32c3/esp_crypto_lock.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -SHA: peripheral independent, but DMA is shared with AES -AES: peripheral independent, but DMA is shared with SHA -MPI/RSA: independent -HMAC: needs SHA -DS: needs HMAC (which needs SHA), AES and MPI -*/ - -/* Lock for DS peripheral */ -static _lock_t s_crypto_ds_lock; - -/* Lock for HMAC peripheral */ -static _lock_t s_crypto_hmac_lock; - -/* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ -static _lock_t s_crypto_mpi_lock; - -/* Single lock for SHA and AES, sharing a reserved GDMA channel */ -static _lock_t s_crypto_sha_aes_lock; - -void esp_crypto_hmac_lock_acquire(void) -{ - _lock_acquire(&s_crypto_hmac_lock); - esp_crypto_sha_aes_lock_acquire(); -} - -void esp_crypto_hmac_lock_release(void) -{ - esp_crypto_sha_aes_lock_release(); - _lock_release(&s_crypto_hmac_lock); -} - -void esp_crypto_ds_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ds_lock); - esp_crypto_hmac_lock_acquire(); - esp_crypto_mpi_lock_acquire(); -} - -void esp_crypto_ds_lock_release(void) -{ - esp_crypto_mpi_lock_release(); - esp_crypto_hmac_lock_release(); - _lock_release(&s_crypto_ds_lock); -} - -void esp_crypto_sha_aes_lock_acquire(void) -{ - _lock_acquire(&s_crypto_sha_aes_lock); -} - -void esp_crypto_sha_aes_lock_release(void) -{ - _lock_release(&s_crypto_sha_aes_lock); -} - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} diff --git a/components/esp_security/src/crypto/esp32c5/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32c5/esp_crypto_lock.c deleted file mode 100644 index f61241298c..0000000000 --- a/components/esp_security/src/crypto/esp32c5/esp_crypto_lock.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -SHA: peripheral independent, but DMA is shared with AES -AES: peripheral independent, but DMA is shared with SHA -MPI/RSA: independent -ECC: independent -HMAC: needs SHA -DS: needs HMAC (which needs SHA), AES and MPI -*/ - -/* Lock for DS peripheral */ -static _lock_t s_crypto_ds_lock; - -/* Lock for HMAC peripheral */ -static _lock_t s_crypto_hmac_lock; - -/* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ -static _lock_t s_crypto_mpi_lock; - -/* Single lock for SHA and AES, sharing a reserved GDMA channel */ -static _lock_t s_crypto_sha_aes_lock; - -/* Lock for ECC peripheral */ -static _lock_t s_crypto_ecc_lock; - -/* Lock for ECDSA peripheral */ -static _lock_t s_crypto_ecdsa_lock; - -void esp_crypto_hmac_lock_acquire(void) -{ - _lock_acquire(&s_crypto_hmac_lock); - esp_crypto_sha_aes_lock_acquire(); -} - -void esp_crypto_hmac_lock_release(void) -{ - esp_crypto_sha_aes_lock_release(); - _lock_release(&s_crypto_hmac_lock); -} - -void esp_crypto_ds_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ds_lock); - esp_crypto_hmac_lock_acquire(); - esp_crypto_mpi_lock_acquire(); -} - -void esp_crypto_ds_lock_release(void) -{ - esp_crypto_mpi_lock_release(); - esp_crypto_hmac_lock_release(); - _lock_release(&s_crypto_ds_lock); -} - -void esp_crypto_sha_aes_lock_acquire(void) -{ - _lock_acquire(&s_crypto_sha_aes_lock); -} - -void esp_crypto_sha_aes_lock_release(void) -{ - _lock_release(&s_crypto_sha_aes_lock); -} - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} - -void esp_crypto_ecc_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ecc_lock); -} - -void esp_crypto_ecc_lock_release(void) -{ - _lock_release(&s_crypto_ecc_lock); -} - -void esp_crypto_ecdsa_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ecdsa_lock); - esp_crypto_ecc_lock_acquire(); -} - -void esp_crypto_ecdsa_lock_release(void) -{ - esp_crypto_ecc_lock_release(); - _lock_release(&s_crypto_ecdsa_lock); -} diff --git a/components/esp_security/src/crypto/esp32c6/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32c6/esp_crypto_lock.c deleted file mode 100644 index 4f02050294..0000000000 --- a/components/esp_security/src/crypto/esp32c6/esp_crypto_lock.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -SHA: peripheral independent, but DMA is shared with AES -AES: peripheral independent, but DMA is shared with SHA -MPI/RSA: independent -ECC: independent -HMAC: needs SHA -DS: needs HMAC (which needs SHA), AES and MPI -*/ - -/* Lock for DS peripheral */ -static _lock_t s_crypto_ds_lock; - -/* Lock for HMAC peripheral */ -static _lock_t s_crypto_hmac_lock; - -/* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ -static _lock_t s_crypto_mpi_lock; - -/* Single lock for SHA and AES, sharing a reserved GDMA channel */ -static _lock_t s_crypto_sha_aes_lock; - -/* Lock for ECC peripheral */ -static _lock_t s_crypto_ecc_lock; - -void esp_crypto_hmac_lock_acquire(void) -{ - _lock_acquire(&s_crypto_hmac_lock); - esp_crypto_sha_aes_lock_acquire(); -} - -void esp_crypto_hmac_lock_release(void) -{ - esp_crypto_sha_aes_lock_release(); - _lock_release(&s_crypto_hmac_lock); -} - -void esp_crypto_ds_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ds_lock); - esp_crypto_hmac_lock_acquire(); - esp_crypto_mpi_lock_acquire(); -} - -void esp_crypto_ds_lock_release(void) -{ - esp_crypto_mpi_lock_release(); - esp_crypto_hmac_lock_release(); - _lock_release(&s_crypto_ds_lock); -} - -void esp_crypto_sha_aes_lock_acquire(void) -{ - _lock_acquire(&s_crypto_sha_aes_lock); -} - -void esp_crypto_sha_aes_lock_release(void) -{ - _lock_release(&s_crypto_sha_aes_lock); -} - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} - -void esp_crypto_ecc_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ecc_lock); -} - -void esp_crypto_ecc_lock_release(void) -{ - _lock_release(&s_crypto_ecc_lock); -} diff --git a/components/esp_security/src/crypto/esp32h2/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32h2/esp_crypto_lock.c deleted file mode 100644 index 209866fe4f..0000000000 --- a/components/esp_security/src/crypto/esp32h2/esp_crypto_lock.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -SHA: peripheral independent, but DMA is shared with AES -AES: peripheral independent, but DMA is shared with SHA -MPI/RSA: independent -ECC: independent -HMAC: needs SHA -DS: needs HMAC (which needs SHA), AES and MPI -ECDSA: needs ECC and MPI -*/ - -/* Lock for DS peripheral */ -static _lock_t s_crypto_ds_lock; - -/* Lock for HMAC peripheral */ -static _lock_t s_crypto_hmac_lock; - -/* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ -static _lock_t s_crypto_mpi_lock; - -/* Single lock for SHA and AES, sharing a reserved GDMA channel */ -static _lock_t s_crypto_sha_aes_lock; - -/* Lock for ECC peripheral */ -static _lock_t s_crypto_ecc_lock; - -/* Lock for ECDSA peripheral */ -static _lock_t s_crypto_ecdsa_lock; - -void esp_crypto_hmac_lock_acquire(void) -{ - _lock_acquire(&s_crypto_hmac_lock); - esp_crypto_sha_aes_lock_acquire(); -} - -void esp_crypto_hmac_lock_release(void) -{ - esp_crypto_sha_aes_lock_release(); - _lock_release(&s_crypto_hmac_lock); -} - -void esp_crypto_ds_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ds_lock); - esp_crypto_hmac_lock_acquire(); - esp_crypto_mpi_lock_acquire(); -} - -void esp_crypto_ds_lock_release(void) -{ - esp_crypto_mpi_lock_release(); - esp_crypto_hmac_lock_release(); - _lock_release(&s_crypto_ds_lock); -} - -void esp_crypto_sha_aes_lock_acquire(void) -{ - _lock_acquire(&s_crypto_sha_aes_lock); -} - -void esp_crypto_sha_aes_lock_release(void) -{ - _lock_release(&s_crypto_sha_aes_lock); -} - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} - -void esp_crypto_ecc_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ecc_lock); -} - -void esp_crypto_ecc_lock_release(void) -{ - _lock_release(&s_crypto_ecc_lock); -} - -void esp_crypto_ecdsa_lock_acquire(void) -{ - _lock_acquire(&s_crypto_ecdsa_lock); - esp_crypto_ecc_lock_acquire(); - esp_crypto_mpi_lock_acquire(); -} - -void esp_crypto_ecdsa_lock_release(void) -{ - esp_crypto_mpi_lock_release(); - esp_crypto_ecc_lock_release(); - _lock_release(&s_crypto_ecdsa_lock); -} diff --git a/components/esp_security/src/crypto/esp32s2/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32s2/esp_crypto_lock.c deleted file mode 100644 index 94269d4776..0000000000 --- a/components/esp_security/src/crypto/esp32s2/esp_crypto_lock.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Single lock for SHA and AES engine which both use the crypto DMA */ - -static _lock_t s_crypto_dma_lock; - -/* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ -static _lock_t s_crypto_mpi_lock; - -void esp_crypto_dma_lock_acquire(void) -{ - _lock_acquire(&s_crypto_dma_lock); -} - -void esp_crypto_dma_lock_release(void) -{ - _lock_release(&s_crypto_dma_lock); -} - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} diff --git a/components/esp_security/src/crypto/esp32s3/esp_crypto_lock.c b/components/esp_security/src/crypto/esp32s3/esp_crypto_lock.c deleted file mode 100644 index a8ca5212f1..0000000000 --- a/components/esp_security/src/crypto/esp32s3/esp_crypto_lock.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -#include "esp_crypto_lock.h" - -/* Lock overview: -SHA: peripheral independent, but DMA is shared with AES -AES: peripheral independent, but DMA is shared with SHA -MPI/RSA: independent -HMAC: needs SHA -DS: needs HMAC (which needs SHA), AES and MPI -*/ - -/* - * Single lock for SHA, HMAC, DS and AES peripherals. - * SHA and AES share a reserved GDMA channel. - * DS uses HMAC, HMAC uses SHA, so they may also not be used simulaneously. - */ -static _lock_t s_crypto_sha_aes_hmac_ds_lock; - -/* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ -static _lock_t s_crypto_mpi_lock; - -void esp_crypto_ds_lock_acquire(void) -{ - _lock_acquire_recursive(&s_crypto_sha_aes_hmac_ds_lock); -} - -void esp_crypto_ds_lock_release(void) -{ - _lock_release_recursive(&s_crypto_sha_aes_hmac_ds_lock); -} - -void esp_crypto_hmac_lock_acquire(void) -{ - _lock_acquire_recursive(&s_crypto_sha_aes_hmac_ds_lock); -} - -void esp_crypto_hmac_lock_release(void) -{ - _lock_release_recursive(&s_crypto_sha_aes_hmac_ds_lock); -} - -void esp_crypto_sha_aes_lock_acquire(void) -{ - _lock_acquire_recursive(&s_crypto_sha_aes_hmac_ds_lock); -} - -void esp_crypto_sha_aes_lock_release(void) -{ - _lock_release_recursive(&s_crypto_sha_aes_hmac_ds_lock); -} - -void esp_crypto_mpi_lock_acquire(void) -{ - _lock_acquire(&s_crypto_mpi_lock); -} - -void esp_crypto_mpi_lock_release(void) -{ - _lock_release(&s_crypto_mpi_lock); -} diff --git a/components/esp_security/src/crypto/esp32p4/esp_crypto_lock.c b/components/esp_security/src/crypto/esp_crypto_lock.c similarity index 64% rename from components/esp_security/src/crypto/esp32p4/esp_crypto_lock.c rename to components/esp_security/src/crypto/esp_crypto_lock.c index e8687c7f02..9eb30eabdc 100644 --- a/components/esp_security/src/crypto/esp32p4/esp_crypto_lock.c +++ b/components/esp_security/src/crypto/esp_crypto_lock.c @@ -18,27 +18,42 @@ DS: needs HMAC (which needs SHA), AES and MPI ECDSA: needs ECC and MPI */ +#ifdef SOC_DIG_SIGN_SUPPORTED /* Lock for DS peripheral */ static _lock_t s_crypto_ds_lock; +#endif /* SOC_DIG_SIGN_SUPPORTED */ +#ifdef SOC_HMAC_SUPPORTED /* Lock for HMAC peripheral */ static _lock_t s_crypto_hmac_lock; +#endif /* SOC_HMAC_SUPPORTED */ +#ifdef SOC_MPI_SUPPORTED /* Lock for the MPI/RSA peripheral, also used by the DS peripheral */ static _lock_t s_crypto_mpi_lock; +#endif /* SOC_MPI_SUPPORTED */ +#if defined(SOC_SHA_SUPPORTED) && defined(SOC_AES_SUPPORTED) /* Single lock for SHA and AES, sharing a reserved GDMA channel */ static _lock_t s_crypto_sha_aes_lock; +#endif /* defined(SOC_SHA_SUPPORTED) && defined(SOC_AES_SUPPORTED) */ +#ifdef SOC_ECC_SUPPORTED /* Lock for ECC peripheral */ static _lock_t s_crypto_ecc_lock; +#endif /* SOC_ECC_SUPPORTED */ +#ifdef SOC_ECDSA_SUPPORTED /* Lock for ECDSA peripheral */ static _lock_t s_crypto_ecdsa_lock; +#endif /* SOC_ECDSA_SUPPORTED */ +#ifdef SOC_KEY_MANAGER_SUPPORTED /* Lock for Key Manager peripheral */ static _lock_t s_crypto_key_manager_lock; +#endif /* SOC_KEY_MANAGER_SUPPORTED */ +#ifdef SOC_HMAC_SUPPORTED void esp_crypto_hmac_lock_acquire(void) { _lock_acquire(&s_crypto_hmac_lock); @@ -50,7 +65,9 @@ void esp_crypto_hmac_lock_release(void) esp_crypto_sha_aes_lock_release(); _lock_release(&s_crypto_hmac_lock); } +#endif /* SOC_HMAC_SUPPORTED */ +#ifdef SOC_DIG_SIGN_SUPPORTED void esp_crypto_ds_lock_acquire(void) { _lock_acquire(&s_crypto_ds_lock); @@ -64,7 +81,9 @@ void esp_crypto_ds_lock_release(void) esp_crypto_hmac_lock_release(); _lock_release(&s_crypto_ds_lock); } +#endif /* SOC_DIG_SIGN_SUPPORTED */ +#if defined(SOC_SHA_SUPPORTED) && defined(SOC_AES_SUPPORTED) void esp_crypto_sha_aes_lock_acquire(void) { _lock_acquire(&s_crypto_sha_aes_lock); @@ -74,7 +93,21 @@ void esp_crypto_sha_aes_lock_release(void) { _lock_release(&s_crypto_sha_aes_lock); } +#endif /* defined(SOC_SHA_SUPPORTED) && defined(SOC_AES_SUPPORTED) */ +#if defined(SOC_SHA_CRYPTO_DMA) && defined(SOC_AES_CRYPTO_DMA) +void esp_crypto_dma_lock_acquire(void) +{ + _lock_acquire(&s_crypto_sha_aes_lock); +} + +void esp_crypto_dma_lock_release(void) +{ + _lock_release(&s_crypto_sha_aes_lock); +} +#endif /* defined(SOC_SHA_CRYPTO_DMA) && defined(SOC_AES_CRYPTO_DMA) */ + +#ifdef SOC_MPI_SUPPORTED void esp_crypto_mpi_lock_acquire(void) { _lock_acquire(&s_crypto_mpi_lock); @@ -84,7 +117,9 @@ void esp_crypto_mpi_lock_release(void) { _lock_release(&s_crypto_mpi_lock); } +#endif /* SOC_MPI_SUPPORTED */ +#ifdef SOC_ECC_SUPPORTED void esp_crypto_ecc_lock_acquire(void) { _lock_acquire(&s_crypto_ecc_lock); @@ -94,21 +129,29 @@ void esp_crypto_ecc_lock_release(void) { _lock_release(&s_crypto_ecc_lock); } +#endif /* SOC_ECC_SUPPORTED */ +#ifdef SOC_ECDSA_SUPPORTED void esp_crypto_ecdsa_lock_acquire(void) { _lock_acquire(&s_crypto_ecdsa_lock); esp_crypto_ecc_lock_acquire(); +#ifdef SOC_ECDSA_USES_MPI esp_crypto_mpi_lock_acquire(); +#endif /* SOC_ECDSA_USES_MPI */ } void esp_crypto_ecdsa_lock_release(void) { +#ifdef SOC_ECDSA_USES_MPI esp_crypto_mpi_lock_release(); +#endif /* SOC_ECDSA_USES_MPI */ esp_crypto_ecc_lock_release(); _lock_release(&s_crypto_ecdsa_lock); } +#endif /* SOC_ECDSA_SUPPORTED */ +#ifdef SOC_KEY_MANAGER_SUPPORTED void esp_crypto_key_manager_lock_acquire(void) { _lock_acquire(&s_crypto_key_manager_lock); @@ -118,3 +161,4 @@ void esp_crypto_key_manager_lock_release(void) { _lock_release(&s_crypto_key_manager_lock); } +#endif /* SOC_KEY_MANAGER_SUPPORTED */