mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
feat(esp_security): Added support for key manager for esp32c5
This commit is contained in:
@@ -11,12 +11,12 @@
|
||||
|
||||
#include "esp_assert.h"
|
||||
#include "rom/km.h"
|
||||
#include "rom/key_mgr.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define HUK_INFO_SIZE 384
|
||||
#define HUK_RISK_ALERT_LEVEL 4
|
||||
|
||||
/**
|
||||
@@ -35,7 +35,7 @@ ESP_STATIC_ASSERT(sizeof(esp_huk_mode_t) == sizeof(huk_mode_t), "Size of esp_huk
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_HUK_STATE_IDLE = 0, /* Key Manager is idle */
|
||||
ESP_HUK_STATE_LOAD, /* Key Manager is read to recieve input */
|
||||
ESP_HUK_STATE_LOAD, /* Key Manager is read to receive input */
|
||||
ESP_HUK_STATE_GAIN, /* Key Manager is ready to provide output */
|
||||
ESP_HUK_STATE_BUSY /* Key Manager is busy */
|
||||
} esp_huk_state_t;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -31,16 +31,22 @@ typedef enum {
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_KEY_MGR_XTS_AES_LEN_256 = 0, /* xts-aes key is 256 bit, please note that xts-aes algorithm is XTS_AES_128*/
|
||||
ESP_KEY_MGR_XTS_AES_LEN_512, /* xts-aes key is 512 bit, please note that xts-aes algorithm is XTS_AES_256 */
|
||||
ESP_KEY_MGR_XTS_AES_LEN_512, /* xts-aes key is 512 bit, please note that xts-aes algorithm is XTS_AES_256 */
|
||||
} esp_key_mgr_xts_aes_key_len_t;
|
||||
|
||||
/**
|
||||
* @brief Type of the key: ECDSA, XTS
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_KEY_MGR_ECDSA_KEY = 0, /* ECDSA key */
|
||||
ESP_KEY_MGR_XTS_AES_128_KEY, /* XTS-AES 128 key */
|
||||
ESP_KEY_MGR_XTS_AES_256_KEY, /* XTS-AES 256 key */
|
||||
ESP_KEY_MGR_XTS_AES_128_KEY, /* XTS-AES 128-bit key */
|
||||
ESP_KEY_MGR_XTS_AES_256_KEY, /* XTS-AES 256-bit key */
|
||||
ESP_KEY_MGR_ECDSA_192_KEY, /* ECDSA 192-bit key */
|
||||
ESP_KEY_MGR_ECDSA_256_KEY, /* ECDSA 256-bit key */
|
||||
ESP_KEY_MGR_ECDSA_384_KEY, /* ECDSA 384-bit key */
|
||||
ESP_KEY_MGR_HMAC_KEY, /* HMAC key */
|
||||
ESP_KEY_MGR_DS_KEY, /* Digital signature key */
|
||||
ESP_KEY_MGR_PSRAM_128_KEY, /* PSRAM 128-bit key */
|
||||
ESP_KEY_MGR_PSRAM_256_KEY, /* PSRAM 256-bit key */
|
||||
} esp_key_mgr_key_type_t;
|
||||
|
||||
/*
|
||||
@@ -48,7 +54,7 @@ typedef enum {
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_KEY_MGR_USE_OWN_KEY = 0, /* Use key from the key manager */
|
||||
ESP_KEY_MGR_USE_EFUSE_KEY, /* Use key from the eFuse */
|
||||
ESP_KEY_MGR_USE_EFUSE_KEY, /* Use key from the eFuse */
|
||||
ESP_KEY_MGR_USAGE_INVALID,
|
||||
} esp_key_mgr_key_usage_t;
|
||||
|
||||
@@ -56,10 +62,21 @@ typedef enum {
|
||||
* @brief Key Purpose to be set for a particular key in the Key Manager
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_KEY_MGR_KEY_PURPOSE_ECDSA = 1,
|
||||
ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 = 2, /* First half of the XTS AES 256 bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 = 3, /* Second half of the XTS AES 256 bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_128 = 4, /* XTS AES 128 bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_ECDSA_192 = 1, /* ECDSA 192-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_ECDSA_256 = 2, /* ECDSA 256-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_FLASH_256_1 = 3, /* First half of flash 256-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 = ESP_KEY_MGR_KEY_PURPOSE_FLASH_256_1,
|
||||
ESP_KEY_MGR_KEY_PURPOSE_FLASH_256_2 = 4, /* Second half of flash 256-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 = ESP_KEY_MGR_KEY_PURPOSE_FLASH_256_2,
|
||||
ESP_KEY_MGR_KEY_PURPOSE_FLASH_128 = 5, /* Flash 128-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_128 = ESP_KEY_MGR_KEY_PURPOSE_FLASH_128,
|
||||
ESP_KEY_MGR_KEY_PURPOSE_HMAC = 6, /* HMAC key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_DS = 7, /* Digital signature key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1 = 8, /* First half of PSRAM 256-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2 = 9, /* Second half of PSRAM 256-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_PSRAM_128 = 10, /* PSRAM 128-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_ECDSA_384_L = 11, /* Lower half of ECDSA 384-bit key */
|
||||
ESP_KEY_MGR_KEY_PURPOSE_ECDSA_384_H = 12, /* Higher half of ECDSA 384-bit key */
|
||||
} esp_key_mgr_key_purpose_t;
|
||||
|
||||
/**
|
||||
@@ -86,7 +103,7 @@ typedef enum {
|
||||
|
||||
// store huk info, occupy 96 words
|
||||
typedef struct PACKED_ATTR {
|
||||
#define HUK_INFO_LEN 384
|
||||
#define HUK_INFO_LEN 660
|
||||
uint8_t info[HUK_INFO_LEN];
|
||||
uint32_t crc;
|
||||
} esp_key_mgr_huk_info_t;
|
||||
|
||||
Reference in New Issue
Block a user