diff --git a/components/esp_hw_support/include/esp_crypto_lock.h b/components/esp_hw_support/include/esp_crypto_lock.h index b3996868196..76200e66194 100644 --- a/components/esp_hw_support/include/esp_crypto_lock.h +++ b/components/esp_hw_support/include/esp_crypto_lock.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -122,7 +122,7 @@ void esp_crypto_ecdsa_lock_acquire(void); void esp_crypto_ecdsa_lock_release(void); #endif /* SOC_ECDSA_SUPPORTED */ -#ifdef SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT /** * @brief Acquire lock for Key Manager peripheral * @@ -134,7 +134,7 @@ void esp_crypto_key_manager_lock_acquire(void); * */ void esp_crypto_key_manager_lock_release(void); -#endif /* SOC_KEY_MANAGER_SUPPORTED */ +#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */ #ifdef __cplusplus } diff --git a/components/esp_rom/esp32c5/include/esp32c5/rom/key_mgr.h b/components/esp_rom/esp32c5/include/esp32c5/rom/key_mgr.h index 15be126268d..5dd53a841a9 100644 --- a/components/esp_rom/esp32c5/include/esp32c5/rom/key_mgr.h +++ b/components/esp_rom/esp32c5/include/esp32c5/rom/key_mgr.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,7 +8,6 @@ #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED #include "rom/ets_sys.h" #include "esp_attr.h" @@ -112,4 +111,3 @@ struct km_deploy_ops { #if __cplusplus } #endif -#endif diff --git a/components/esp_rom/esp32c5/include/esp32c5/rom/km.h b/components/esp_rom/esp32c5/include/esp32c5/rom/km.h index 2fe74e77a56..f1bba0c540f 100644 --- a/components/esp_rom/esp32c5/include/esp32c5/rom/km.h +++ b/components/esp_rom/esp32c5/include/esp32c5/rom/km.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,7 +8,6 @@ #define _KM_H #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED #include #include "soc/soc.h" @@ -58,6 +57,5 @@ int esp_rom_km_huk_risk(void); #ifdef __cplusplus } #endif -#endif /* SOC_KEY_MANAGER_SUPPORTED */ #endif /* _KM_H */ diff --git a/components/esp_rom/esp32p4/include/esp32p4/rom/key_mgr.h b/components/esp_rom/esp32p4/include/esp32p4/rom/key_mgr.h index af06c44b363..6ee0cb12af9 100644 --- a/components/esp_rom/esp32p4/include/esp32p4/rom/key_mgr.h +++ b/components/esp_rom/esp32p4/include/esp32p4/rom/key_mgr.h @@ -7,7 +7,6 @@ #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED #include #include "esp_attr.h" #include "ets_sys.h" @@ -109,4 +108,3 @@ struct km_deploy_ops { #if __cplusplus } #endif -#endif diff --git a/components/esp_rom/esp32p4/include/esp32p4/rom/km.h b/components/esp_rom/esp32p4/include/esp32p4/rom/km.h index 395f5908d28..f1bba0c540f 100644 --- a/components/esp_rom/esp32p4/include/esp32p4/rom/km.h +++ b/components/esp_rom/esp32p4/include/esp32p4/rom/km.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,7 +8,6 @@ #define _KM_H #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED #include #include "soc/soc.h" @@ -58,6 +57,5 @@ int esp_rom_km_huk_risk(void); #ifdef __cplusplus } #endif -#endif #endif /* _KM_H */ diff --git a/components/esp_security/include/esp_key_mgr.h b/components/esp_security/include/esp_key_mgr.h index 461c57ae598..c6c584527d2 100644 --- a/components/esp_security/include/esp_key_mgr.h +++ b/components/esp_security/include/esp_key_mgr.h @@ -8,7 +8,7 @@ #include "esp_err.h" #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT #ifdef __cplusplus extern "C" { diff --git a/components/esp_security/src/esp_crypto_lock.c b/components/esp_security/src/esp_crypto_lock.c index d0ed96311f6..2633e7ac25b 100644 --- a/components/esp_security/src/esp_crypto_lock.c +++ b/components/esp_security/src/esp_crypto_lock.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -52,10 +52,10 @@ static _lock_t s_crypto_ecdsa_lock; #endif /* SOC_ECDSA_USES_MPI */ #endif /* SOC_ECDSA_SUPPORTED */ -#ifdef SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT /* Lock for Key Manager peripheral */ static _lock_t s_crypto_key_manager_lock; -#endif /* SOC_KEY_MANAGER_SUPPORTED */ +#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */ #ifdef SOC_HMAC_SUPPORTED void esp_crypto_hmac_lock_acquire(void) @@ -159,7 +159,7 @@ void esp_crypto_ecdsa_lock_release(void) } #endif /* SOC_ECDSA_SUPPORTED */ -#ifdef SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT void esp_crypto_key_manager_lock_acquire(void) { _lock_acquire(&s_crypto_key_manager_lock); @@ -169,7 +169,7 @@ void esp_crypto_key_manager_lock_release(void) { _lock_release(&s_crypto_key_manager_lock); } -#endif /* SOC_KEY_MANAGER_SUPPORTED */ +#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */ #else /* NON_OS_BUILD */ #ifdef SOC_HMAC_SUPPORTED void esp_crypto_hmac_lock_acquire(void) {} @@ -213,9 +213,9 @@ void esp_crypto_ecdsa_lock_acquire(void) {} void esp_crypto_ecdsa_lock_release(void) {} #endif /* SOC_ECDSA_SUPPORTED */ -#ifdef SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT void esp_crypto_key_manager_lock_acquire(void) {} void esp_crypto_key_manager_lock_release(void) {} -#endif /* SOC_KEY_MANAGER_SUPPORTED */ +#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */ #endif /* !NON_OS_BUILD */ diff --git a/components/esp_security/src/esp_crypto_periph_clk.c b/components/esp_security/src/esp_crypto_periph_clk.c index a62c804b35c..99625ea98ed 100644 --- a/components/esp_security/src/esp_crypto_periph_clk.c +++ b/components/esp_security/src/esp_crypto_periph_clk.c @@ -30,7 +30,7 @@ #if SOC_ECDSA_SUPPORTED #include "hal/ecdsa_ll.h" #endif -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT #include "hal/key_mgr_ll.h" #endif /* Crypto DMA, shared between AES and SHA */ @@ -140,7 +140,7 @@ void esp_crypto_ecdsa_enable_periph_clk(bool enable) } #endif -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT void esp_crypto_key_mgr_enable_periph_clk(bool enable) { KEY_MANAGER_RCC_ATOMIC() { diff --git a/components/esp_security/src/esp_key_mgr.c b/components/esp_security/src/esp_key_mgr.c index 0f32d3d3790..4359f6f939a 100644 --- a/components/esp_security/src/esp_key_mgr.c +++ b/components/esp_security/src/esp_key_mgr.c @@ -23,7 +23,6 @@ #include "rom/key_mgr.h" #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED static const char *TAG = "esp_key_mgr"; static _lock_t s_key_mgr_ecdsa_key_lock; @@ -905,4 +904,3 @@ cleanup: esp_key_mgr_release_hardware(true); return esp_ret; } -#endif diff --git a/components/hal/CMakeLists.txt b/components/hal/CMakeLists.txt index d2c9946200e..dc3ce7b9bc8 100644 --- a/components/hal/CMakeLists.txt +++ b/components/hal/CMakeLists.txt @@ -26,8 +26,11 @@ if(CONFIG_SOC_WDT_SUPPORTED AND NOT CONFIG_HAL_WDT_USE_ROM_IMPL) list(APPEND srcs "wdt_hal_iram.c") endif() -if(CONFIG_SOC_KEY_MANAGER_SUPPORTED) +if(CONFIG_SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT) list(APPEND srcs "key_mgr_hal.c") +endif() + +if(CONFIG_SOC_HUK_SUPPORTED) list(APPEND srcs "huk_hal.c") endif() diff --git a/components/hal/ecdsa_hal.c b/components/hal/ecdsa_hal.c index 0ba2303dbcd..d5e9958d7e4 100644 --- a/components/hal/ecdsa_hal.c +++ b/components/hal/ecdsa_hal.c @@ -38,7 +38,7 @@ static void configure_ecdsa_periph(ecdsa_hal_config_t *conf) key_mgr_hal_set_key_usage(ESP_KEY_MGR_ECDSA_KEY, ESP_KEY_MGR_USE_EFUSE_KEY); #endif } -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY else { if (!key_mgr_ll_is_supported()) { HAL_ASSERT(false && "Key manager is not supported"); diff --git a/components/hal/esp32c5/include/hal/huk_ll.h b/components/hal/esp32c5/include/hal/huk_ll.h index d66eed2e417..2a38cc46b67 100644 --- a/components/hal/esp32c5/include/hal/huk_ll.h +++ b/components/hal/esp32c5/include/hal/huk_ll.h @@ -13,7 +13,7 @@ #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_HUK_SUPPORTED #include #include diff --git a/components/hal/esp32p4/include/hal/huk_ll.h b/components/hal/esp32p4/include/hal/huk_ll.h index dc624890501..d4c8b5b23ec 100644 --- a/components/hal/esp32p4/include/hal/huk_ll.h +++ b/components/hal/esp32p4/include/hal/huk_ll.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -13,7 +13,7 @@ #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_HUK_SUPPORTED #include #include diff --git a/components/hal/huk_hal.c b/components/hal/huk_hal.c index 21f1a12959e..d42cae95432 100644 --- a/components/hal/huk_hal.c +++ b/components/hal/huk_hal.c @@ -15,7 +15,7 @@ #include "esp_err.h" #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_HUK_SUPPORTED esp_huk_state_t huk_hal_get_state(void) { return huk_ll_get_state(); diff --git a/components/hal/include/hal/huk_types.h b/components/hal/include/hal/huk_types.h index a0f63193139..b85c86b7ab4 100644 --- a/components/hal/include/hal/huk_types.h +++ b/components/hal/include/hal/huk_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -7,7 +7,7 @@ #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_HUK_SUPPORTED #include "esp_assert.h" #include "rom/km.h" diff --git a/components/hal/include/hal/key_mgr_hal.h b/components/hal/include/hal/key_mgr_hal.h index a8f59ecab49..001ad4a9754 100644 --- a/components/hal/include/hal/key_mgr_hal.h +++ b/components/hal/include/hal/key_mgr_hal.h @@ -9,7 +9,7 @@ #include "soc/soc_caps.h" -#if SOC_KEY_MANAGER_SUPPORTED +#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT #include "hal/key_mgr_types.h" #ifdef __cplusplus @@ -138,4 +138,4 @@ void key_mgr_hal_set_date_info(const uint32_t date_info); #ifdef __cplusplus } #endif -#endif /* SOC_KEY_MANAGER_SUPPORTED */ +#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */ diff --git a/components/hal/test_apps/crypto/main/Kconfig.projbuild b/components/hal/test_apps/crypto/main/Kconfig.projbuild index 823eeb9bc6e..ba7778f670a 100644 --- a/components/hal/test_apps/crypto/main/Kconfig.projbuild +++ b/components/hal/test_apps/crypto/main/Kconfig.projbuild @@ -46,8 +46,11 @@ menu "Test App Configuration" bool default n if IDF_TARGET_ESP32P4 && ESP32P4_SELECTS_REV_LESS_V3 default y - depends on SOC_KEY_MANAGER_SUPPORTED + depends on SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT help A hidden config to determine if the Key Manager tests should be included. + The tests build the esp_key_mgr driver from source so that the Key Manager + hardware stays covered by CI even on targets where IDF does not support + the Key Manager (SOC_KEY_MANAGER_SUPPORTED = 0). endmenu diff --git a/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in b/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in index 83f62dead67..31b545a1077 100644 --- a/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in @@ -245,7 +245,7 @@ config SOC_RNG_SUPPORTED config SOC_KEY_MANAGER_SUPPORTED bool - default y + default n config SOC_HUK_SUPPORTED bool diff --git a/components/soc/esp32c5/include/soc/soc_caps.h b/components/soc/esp32c5/include/soc/soc_caps.h index 2afe3767127..23da4b6bc6d 100644 --- a/components/soc/esp32c5/include/soc/soc_caps.h +++ b/components/soc/esp32c5/include/soc/soc_caps.h @@ -77,7 +77,7 @@ #define SOC_SPI_FLASH_SUPPORTED 1 // TODO: [ESP32C5] IDF-8715 #define SOC_ECDSA_SUPPORTED 1 #define SOC_RNG_SUPPORTED 1 -#define SOC_KEY_MANAGER_SUPPORTED 1 +#define SOC_KEY_MANAGER_SUPPORTED 0 #define SOC_HUK_SUPPORTED 1 #define SOC_MODEM_CLOCK_SUPPORTED 1 #define SOC_LIGHT_SLEEP_SUPPORTED 1 diff --git a/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in b/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in index 4910db5b703..218585e83ca 100644 --- a/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32p4/include/soc/Kconfig.soc_caps.in @@ -209,7 +209,7 @@ config SOC_ECDSA_SUPPORTED config SOC_KEY_MANAGER_SUPPORTED bool - default y + default n config SOC_HUK_SUPPORTED bool diff --git a/components/soc/esp32p4/include/soc/soc_caps.h b/components/soc/esp32p4/include/soc/soc_caps.h index 963dbe5aa93..e854cb2e86f 100644 --- a/components/soc/esp32p4/include/soc/soc_caps.h +++ b/components/soc/esp32p4/include/soc/soc_caps.h @@ -68,7 +68,7 @@ #define SOC_ECC_SUPPORTED 1 #define SOC_ECC_EXTENDED_MODES_SUPPORTED 1 #define SOC_ECDSA_SUPPORTED 1 -#define SOC_KEY_MANAGER_SUPPORTED 1 +#define SOC_KEY_MANAGER_SUPPORTED 0 #define SOC_HUK_SUPPORTED 1 #define SOC_FLASH_ENC_SUPPORTED 1 #define SOC_SECURE_BOOT_SUPPORTED 1