Skip to content

Commit a7c7b75

Browse files
committed
feat(soc): Update ESP32-C5's key manager reg and struct files to ECO2
- Also added a new soc_cap to denote if key manager key deployment is available
1 parent 662d793 commit a7c7b75

File tree

9 files changed

+95
-869
lines changed

9 files changed

+95
-869
lines changed

components/esp_security/src/init.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@
1414
#include "esp_err.h"
1515
#include "hal/efuse_hal.h"
1616

17-
#if SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY || SOC_KEY_MANAGER_FE_KEY_DEPLOY
17+
#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT
1818
#include "hal/key_mgr_ll.h"
19-
#endif
19+
#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */
2020

2121
__attribute__((unused)) static const char *TAG = "esp_security";
2222

2323
static void esp_key_mgr_init(void)
2424
{
2525
// The following code initializes the key manager.
26-
#if SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY || SOC_KEY_MANAGER_FE_KEY_DEPLOY
26+
#if SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT
2727
// Enable key manager clock
2828
// Using ll APIs which do not require critical section
2929
_key_mgr_ll_enable_bus_clock(true);
3030
_key_mgr_ll_enable_peripheral_clock(true);
3131
_key_mgr_ll_reset_register();
3232
while (key_mgr_ll_get_state() != ESP_KEY_MGR_STATE_IDLE) {
3333
};
34-
#endif /* SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY || SOC_KEY_MANAGER_FE_KEY_DEPLOY */
34+
#endif /* SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT */
3535
}
3636

3737
ESP_SYSTEM_INIT_FN(esp_security_init, SECONDARY, BIT(0), 103)

components/soc/esp32c5/include/soc/Kconfig.soc_caps.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,6 +1407,10 @@ config SOC_EFUSE_ECDSA_KEY_P384
14071407
bool
14081408
default y
14091409

1410+
config SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT
1411+
bool
1412+
default y
1413+
14101414
config SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY
14111415
bool
14121416
default y

components/soc/esp32c5/include/soc/soc_caps.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,8 +541,9 @@
541541
#define SOC_EFUSE_ECDSA_KEY_P384 1
542542

543543
/*-------------------------- Key Manager CAPS----------------------------*/
544-
#define SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY 1 /*!< Key manager responsible to deploy ECDSA key */
545-
#define SOC_KEY_MANAGER_FE_KEY_DEPLOY 1 /*!< Key manager responsible to deploy Flash Encryption key */
544+
#define SOC_KEY_MANAGER_SUPPORT_KEY_DEPLOYMENT 1 /*!< Key manager supports key deployment */
545+
#define SOC_KEY_MANAGER_ECDSA_KEY_DEPLOY 1 /*!< Key manager responsible to deploy ECDSA key */
546+
#define SOC_KEY_MANAGER_FE_KEY_DEPLOY 1 /*!< Key manager responsible to deploy Flash Encryption key */
546547

547548
/*-------------------------- Secure Boot CAPS----------------------------*/
548549
#define SOC_SECURE_BOOT_V2_RSA 1

components/soc/esp32c5/register/soc/keymng_reg.h

Lines changed: 50 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -148,44 +148,46 @@ extern "C" {
148148
#define KEYMNG_USE_EFUSE_KEY_V 0x0000001FU
149149
#define KEYMNG_USE_EFUSE_KEY_S 0
150150

151-
/* KEYMNG_USE_EFUSE_KEY_ECDSA : R/W ;bitpos:[0] ;default: 1'd0 ; */
152-
/*description: Set this bit to choose efuse key instead of key manager deployed key for ecdsa.*/
151+
/** KEYMNG_USE_EFUSE_KEY_ECDSA : R/W; bitpos:[0]; default: 0;
152+
* Set this bit to choose efuse key instead of key manager deployed key for ecdsa.
153+
*/
153154
#define KEYMNG_USE_EFUSE_KEY_ECDSA (BIT(0))
154-
#define KEYMNG_USE_EFUSE_KEY_ECDSA_M ((KEYMNG_USE_EFUSE_KEY_ECDSA_V)<<(KEYMNG_USE_EFUSE_KEY_ECDSA_S))
155-
#define KEYMNG_USE_EFUSE_KEY_ECDSA_V 0x1
155+
#define KEYMNG_USE_EFUSE_KEY_ECDSA_M (KEYMNG_USE_EFUSE_KEY_ECDSA_V << KEYMNG_USE_EFUSE_KEY_ECDSA_S)
156+
#define KEYMNG_USE_EFUSE_KEY_ECDSA_V 0x00000001U
156157
#define KEYMNG_USE_EFUSE_KEY_ECDSA_S 0
157158

158-
/* KEYMNG_USE_EFUSE_KEY_FLASH : R/W ;bitpos:[1] ;default: 1'd0 ; */
159-
/*description: Set this bit to choose efuse key instead of key manager deployed key for flash.*/
159+
/** KEYMNG_USE_EFUSE_KEY_FLASH : R/W; bitpos:[1]; default: 0;
160+
* Set this bit to choose efuse key instead of key manager deployed key for flash.
161+
*/
160162
#define KEYMNG_USE_EFUSE_KEY_FLASH (BIT(1))
161-
#define KEYMNG_USE_EFUSE_KEY_FLASH_M ((KEYMNG_USE_EFUSE_KEY_FLASH_V)<<(KEYMNG_USE_EFUSE_KEY_FLASH_S))
162-
#define KEYMNG_USE_EFUSE_KEY_FLASH_V 0x1
163+
#define KEYMNG_USE_EFUSE_KEY_FLASH_M (KEYMNG_USE_EFUSE_KEY_FLASH_V << KEYMNG_USE_EFUSE_KEY_FLASH_S)
164+
#define KEYMNG_USE_EFUSE_KEY_FLASH_V 0x00000001U
163165
#define KEYMNG_USE_EFUSE_KEY_FLASH_S 1
164166

165-
166-
/* KEYMNG_USE_EFUSE_KEY_HMAC : R/W ;bitpos:[0] ;default: 1'd0 ; */
167-
/*description: Set this bit to choose efuse key instead of key manager deployed key for hmac.*/
167+
/** KEYMNG_USE_EFUSE_KEY_HMAC : R/W; bitpos:[0]; default: 0;
168+
* Set this bit to choose efuse key instead of key manager deployed key for hmac.
169+
*/
168170
#define KEYMNG_USE_EFUSE_KEY_HMAC (BIT(2))
169-
#define KEYMNG_USE_EFUSE_KEY_HMAC_M ((KEYMNG_USE_EFUSE_KEY_HMAC_V)<<(KEYMNG_USE_EFUSE_KEY_HMAC_S))
170-
#define KEYMNG_USE_EFUSE_KEY_HMAC_V 0x1
171+
#define KEYMNG_USE_EFUSE_KEY_HMAC_M (KEYMNG_USE_EFUSE_KEY_HMAC_V << KEYMNG_USE_EFUSE_KEY_HMAC_S)
172+
#define KEYMNG_USE_EFUSE_KEY_HMAC_V 0x00000001U
171173
#define KEYMNG_USE_EFUSE_KEY_HMAC_S 2
172174

173-
/* KEYMNG_USE_EFUSE_KEY_DS : R/W ;bitpos:[1] ;default: 1'd0 ; */
174-
/*description: Set this bit to choose efuse key instead of key manager deployed key for ds.*/
175+
/** KEYMNG_USE_EFUSE_KEY_DS : R/W; bitpos:[1]; default: 0;
176+
* Set this bit to choose efuse key instead of key manager deployed key for ds.
177+
*/
175178
#define KEYMNG_USE_EFUSE_KEY_DS (BIT(3))
176-
#define KEYMNG_USE_EFUSE_KEY_DS_M ((KEYMNG_USE_EFUSE_KEY_DS_V)<<(KEYMNG_USE_EFUSE_KEY_DS_S))
177-
#define KEYMNG_USE_EFUSE_KEY_DS_V 0x1
179+
#define KEYMNG_USE_EFUSE_KEY_DS_M (KEYMNG_USE_EFUSE_KEY_DS_V << KEYMNG_USE_EFUSE_KEY_DS_S)
180+
#define KEYMNG_USE_EFUSE_KEY_DS_V 0x00000001U
178181
#define KEYMNG_USE_EFUSE_KEY_DS_S 3
179182

180-
181-
/* KEYMNG_USE_EFUSE_KEY_PSRAM : R/W ;bitpos:[1] ;default: 1'd0 ; */
182-
/*description: Set this bit to choose efuse key instead of key manager deployed key for psram.*/
183+
/** KEYMNG_USE_EFUSE_KEY_PSRAM : R/W; bitpos:[1]; default: 0;
184+
* Set this bit to choose efuse key instead of key manager deployed key for psram.
185+
*/
183186
#define KEYMNG_USE_EFUSE_KEY_PSRAM (BIT(4))
184-
#define KEYMNG_USE_EFUSE_KEY_PSRAM_M ((KEYMNG_USE_EFUSE_KEY_PSRAM_V)<<(KEYMNG_USE_EFUSE_KEY_PSRAM_S))
185-
#define KEYMNG_USE_EFUSE_KEY_PSRAM_V 0x1
187+
#define KEYMNG_USE_EFUSE_KEY_PSRAM_M (KEYMNG_USE_EFUSE_KEY_PSRAM_V << KEYMNG_USE_EFUSE_KEY_PSRAM_S)
188+
#define KEYMNG_USE_EFUSE_KEY_PSRAM_V 0x00000001U
186189
#define KEYMNG_USE_EFUSE_KEY_PSRAM_S 4
187190

188-
189191
/** KEYMNG_RND_SWITCH_CYCLE : R/W; bitpos: [9:5]; default: 15;
190192
* The core clock cycle number to sample one rng input data. Please set it bigger than
191193
* the clock cycle ratio: T_rng/T_km
@@ -231,70 +233,42 @@ extern "C" {
231233
#define KEYMNG_USE_EFUSE_KEY_LOCK_V 0x0000001FU
232234
#define KEYMNG_USE_EFUSE_KEY_LOCK_S 0
233235

234-
/* KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA : R/W1 ;bitpos:[0] ;default: 1'd0 ; */
235-
236-
/*description: Write 1 to lock reg_use_efuse_key for esdsa*/
237-
236+
/** KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA : R/W1 ;bitpos:[0]; default: 0;
237+
* Write 1 to lock reg_use_efuse_key for esdsa
238+
*/
238239
#define KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA (BIT(0))
239-
240-
#define KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_M ((KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_V)<<(KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_S))
241-
242-
#define KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_V 0x1
243-
240+
#define KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_M (KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_V << KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_S)
241+
#define KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_V 0x00000001U
244242
#define KEYMNG_USE_EFUSE_KEY_LOCK_ECDSA_S 0
245-
246-
/* KEYMNG_USE_EFUSE_KEY_LOCK_FLASH : R/W1 ;bitpos:[1] ;default: 1'd0 ; */
247-
248-
/*description: Write 1 to lock reg_use_efuse_key for FLASH*/
249-
243+
/** KEYMNG_USE_EFUSE_KEY_LOCK_FLASH : R/W1 ;bitpos:[1]; default: 0;
244+
* Write 1 to lock reg_use_efuse_key for FLASH
245+
*/
250246
#define KEYMNG_USE_EFUSE_KEY_LOCK_FLASH (BIT(1))
251-
252-
#define KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_M ((KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_V)<<(KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_S))
253-
254-
#define KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_V 0x1
255-
247+
#define KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_M (KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_V << KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_S)
248+
#define KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_V 0x00000001U
256249
#define KEYMNG_USE_EFUSE_KEY_LOCK_FLASH_S 1
257-
258-
259-
/* KEYMNG_USE_EFUSE_KEY_LOCK_HMAC : R/W1 ;bitpos:[0] ;default: 1'd0 ; */
260-
261-
/*description: Write 1 to lock reg_use_efuse_key for hmac*/
262-
250+
/** KEYMNG_USE_EFUSE_KEY_LOCK_HMAC : R/W1 ;bitpos:[0]; default: 0;
251+
* Write 1 to lock reg_use_efuse_key for hmac
252+
*/
263253
#define KEYMNG_USE_EFUSE_KEY_LOCK_HMAC (BIT(2))
264-
265-
#define KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_M ((KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_V)<<(KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_S))
266-
267-
#define KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_V 0x1
268-
254+
#define KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_M (KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_V << KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_S)
255+
#define KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_V 0x00000001U
269256
#define KEYMNG_USE_EFUSE_KEY_LOCK_HMAC_S 2
270-
271-
272-
/* KEYMNG_USE_EFUSE_KEY_LOCK_DS : R/W1 ;bitpos:[1] ;default: 1'd0 ; */
273-
274-
/*description: Write 1 to lock reg_use_efuse_key for ds*/
275-
257+
/** KEYMNG_USE_EFUSE_KEY_LOCK_DS : R/W1 ;bitpos:[1]; default: 0;
258+
* Write 1 to lock reg_use_efuse_key for ds
259+
*/
276260
#define KEYMNG_USE_EFUSE_KEY_LOCK_DS (BIT(3))
277-
278-
#define KEYMNG_USE_EFUSE_KEY_LOCK_DS_M ((KEYMNG_USE_EFUSE_KEY_LOCK_DS_V)<<(KEYMNG_USE_EFUSE_KEY_LOCK_DS_S))
279-
280-
#define KEYMNG_USE_EFUSE_KEY_LOCK_DS_V 0x1
281-
261+
#define KEYMNG_USE_EFUSE_KEY_LOCK_DS_M (KEYMNG_USE_EFUSE_KEY_LOCK_DS_V << KEYMNG_USE_EFUSE_KEY_LOCK_DS_S)
262+
#define KEYMNG_USE_EFUSE_KEY_LOCK_DS_V 0x00000001U
282263
#define KEYMNG_USE_EFUSE_KEY_LOCK_DS_S 3
283-
284-
285-
/* KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM : R/W1 ;bitpos:[1] ;default: 1'd0 ; */
286-
287-
/*description: Write 1 to lock reg_use_efuse_key for PSRAM*/
288-
264+
/** KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM : R/W1 ;bitpos:[1]; default: 0;
265+
* Write 1 to lock reg_use_efuse_key for PSRAM
266+
*/
289267
#define KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM (BIT(4))
290-
291-
#define KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_M ((KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_V)<<(KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_S))
292-
293-
#define KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_V 0x1
294-
268+
#define KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_M (KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_V << KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_S)
269+
#define KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_V 0x00000001U
295270
#define KEYMNG_USE_EFUSE_KEY_LOCK_PSRAM_S 4
296271

297-
298272
/** KEYMNG_RND_SWITCH_CYCLE_LOCK : R/W1; bitpos: [5]; default: 0;
299273
* Write 1 to lock reg_rnd_switch_cycle.
300274
*/

0 commit comments

Comments
 (0)