Skip to content

Commit bba1448

Browse files
committed
feat(esp_key_mgr): Support PSRAM XTS-AES key deployments using Key Manager
1 parent ffefa99 commit bba1448

File tree

5 files changed

+125
-51
lines changed

5 files changed

+125
-51
lines changed

components/esp_security/src/esp_key_mgr.c

Lines changed: 71 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ static _lock_t s_key_mgr_ecdsa_key_lock;
2727
static _lock_t s_key_mgr_xts_aes_key_lock;
2828
static _lock_t s_key_mgr_hmac_key_lock;
2929
static _lock_t s_key_mgr_ds_key_lock;
30+
static _lock_t s_key_mgr_psram_key_lock;
3031

3132
ESP_STATIC_ASSERT(sizeof(esp_key_mgr_key_recovery_info_t) == sizeof(struct huk_key_block), "Size of esp_key_mgr_key_recovery_info_t should match huk_key_block (from ROM)");
3233
ESP_STATIC_ASSERT(sizeof(esp_key_mgr_key_info_t) == sizeof(struct key_info), "Size of esp_key_mgr_key_info_t should match key_info (from ROM)");
@@ -50,6 +51,10 @@ static void esp_key_mgr_acquire_key_lock(esp_key_mgr_key_type_t key_type)
5051
case ESP_KEY_MGR_DS_KEY:
5152
_lock_acquire(&s_key_mgr_ds_key_lock);
5253
break;
54+
case ESP_KEY_MGR_PSRAM_128_KEY:
55+
case ESP_KEY_MGR_PSRAM_256_KEY:
56+
_lock_acquire(&s_key_mgr_psram_key_lock);
57+
break;
5358
default:
5459
ESP_LOGE(TAG, "Invalid key type");
5560
break;
@@ -75,6 +80,10 @@ static void esp_key_mgr_release_key_lock(esp_key_mgr_key_type_t key_type)
7580
case ESP_KEY_MGR_DS_KEY:
7681
_lock_release(&s_key_mgr_ds_key_lock);
7782
break;
83+
case ESP_KEY_MGR_PSRAM_128_KEY:
84+
case ESP_KEY_MGR_PSRAM_256_KEY:
85+
_lock_release(&s_key_mgr_psram_key_lock);
86+
break;
7887
default:
7988
ESP_LOGE(TAG, "Invalid key type");
8089
break;
@@ -241,7 +250,7 @@ static esp_err_t key_mgr_deploy_key_aes_mode(aes_deploy_config_t *config)
241250
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_IDLE);
242251

243252
if ((!key_mgr_hal_is_huk_valid()) || (!config->huk_deployed)) {
244-
// For purpose ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 this part shall be already executed
253+
// For purpose ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 or ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2 this part shall be already executed
245254
huk_deploy_config_t huk_deploy_config = {};
246255
huk_deploy_config.use_pre_generated_huk_info = config->key_config->use_pre_generated_huk_info;
247256
huk_deploy_config.pre_generated_huk_info = &config->key_config->huk_info;
@@ -269,10 +278,10 @@ static esp_err_t key_mgr_deploy_key_aes_mode(aes_deploy_config_t *config)
269278
// Set key length for XTS-AES key
270279
esp_key_mgr_key_type_t key_type = (esp_key_mgr_key_type_t) config->key_config->key_type;
271280

272-
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY) {
273-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_256);
274-
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
275-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_512);
281+
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY || key_type == ESP_KEY_MGR_PSRAM_128_KEY) {
282+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_256);
283+
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
284+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_512);
276285
}
277286

278287
if (config->key_config->use_pre_generated_sw_init_key) {
@@ -310,7 +319,7 @@ static esp_err_t key_mgr_deploy_key_aes_mode(aes_deploy_config_t *config)
310319
key_mgr_hal_read_public_info(key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
311320
ESP_LOG_BUFFER_HEX_LEVEL("KEY_RECOVERY_INFO", key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE, ESP_LOG_DEBUG);
312321

313-
if (config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1) {
322+
if (config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 || config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1) {
314323
if (!key_mgr_hal_is_key_deployment_valid(config->key_config->key_type)) {
315324
ESP_LOGE(TAG, "Key deployment is not valid");
316325
heap_caps_free(key_recovery_info);
@@ -323,7 +332,7 @@ static esp_err_t key_mgr_deploy_key_aes_mode(aes_deploy_config_t *config)
323332
key_mgr_hal_continue();
324333
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_IDLE);
325334

326-
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2) {
335+
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 || config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2) {
327336
memcpy(config->key_info->key_info[1].info, key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
328337
config->key_info->key_info[1].crc = esp_rom_crc32_le(0, key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
329338

@@ -372,6 +381,12 @@ esp_err_t esp_key_mgr_deploy_key_in_aes_mode(const esp_key_mgr_aes_key_config_t
372381
case ESP_KEY_MGR_DS_KEY:
373382
aes_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_DS;
374383
break;
384+
case ESP_KEY_MGR_PSRAM_128_KEY:
385+
aes_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_128;
386+
break;
387+
case ESP_KEY_MGR_PSRAM_256_KEY:
388+
aes_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1;
389+
break;
375390
default:
376391
ESP_LOGE(TAG, "Invalid key type");
377392
return ESP_ERR_INVALID_ARG;
@@ -387,8 +402,8 @@ esp_err_t esp_key_mgr_deploy_key_in_aes_mode(const esp_key_mgr_aes_key_config_t
387402

388403
aes_deploy_config.huk_deployed = true;
389404

390-
if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
391-
aes_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2;
405+
if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
406+
aes_deploy_config.key_purpose = key_type == ESP_KEY_MGR_XTS_AES_256_KEY ? ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 : ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2;
392407
aes_deploy_config.k1_encrypted = key_config->k1_encrypted[1];
393408
esp_ret = key_mgr_deploy_key_aes_mode(&aes_deploy_config);
394409
if (esp_ret != ESP_OK) {
@@ -437,18 +452,18 @@ static esp_err_t key_mgr_recover_key(key_recovery_config_t *config)
437452

438453
// Set AES-XTS key len
439454
esp_key_mgr_key_type_t key_type = (esp_key_mgr_key_type_t) config->key_recovery_info->key_type;
440-
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY) {
441-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_256);
442-
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
443-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_512);
455+
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY || key_type == ESP_KEY_MGR_PSRAM_128_KEY) {
456+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_256);
457+
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
458+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_512);
444459
}
445460

446461
key_mgr_hal_set_key_purpose(config->key_purpose);
447462
key_mgr_hal_start();
448463
key_mgr_hal_continue();
449464
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_LOAD);
450465

451-
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2) {
466+
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 || config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2) {
452467
if (!check_key_info_validity(&config->key_recovery_info->key_info[1])) {
453468
ESP_LOGE(TAG, "Key info not valid");
454469
return ESP_FAIL;
@@ -510,6 +525,12 @@ esp_err_t esp_key_mgr_activate_key(esp_key_mgr_key_recovery_info_t *key_recovery
510525
case ESP_KEY_MGR_DS_KEY:
511526
key_purpose = ESP_KEY_MGR_KEY_PURPOSE_DS;
512527
break;
528+
case ESP_KEY_MGR_PSRAM_128_KEY:
529+
key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_128;
530+
break;
531+
case ESP_KEY_MGR_PSRAM_256_KEY:
532+
key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1;
533+
break;
513534
default:
514535
ESP_LOGE(TAG, "Invalid key type");
515536
return ESP_ERR_INVALID_ARG;
@@ -531,8 +552,8 @@ esp_err_t esp_key_mgr_activate_key(esp_key_mgr_key_recovery_info_t *key_recovery
531552
goto cleanup;
532553
}
533554

534-
if (key_recovery_info->key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
535-
key_recovery_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2;
555+
if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
556+
key_recovery_config.key_purpose = key_type == ESP_KEY_MGR_XTS_AES_256_KEY ? ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 : ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2;
536557
esp_ret = key_mgr_recover_key(&key_recovery_config);
537558
if (esp_ret != ESP_OK) {
538559
ESP_LOGE(TAG, "Failed to recover key");
@@ -545,7 +566,7 @@ esp_err_t esp_key_mgr_activate_key(esp_key_mgr_key_recovery_info_t *key_recovery
545566
key_mgr_hal_set_key_usage(key_type, ESP_KEY_MGR_USE_OWN_KEY);
546567
esp_key_mgr_release_key_lock(key_type);
547568

548-
ESP_LOGD(TAG, "Key activation for type %d successful", key_recovery_info->key_type);
569+
ESP_LOGD(TAG, "Key activation for type %d successful", key_type);
549570
return ESP_OK;
550571

551572
cleanup:
@@ -577,7 +598,7 @@ static esp_err_t key_mgr_deploy_key_ecdh0_mode(ecdh0_deploy_config_t *config)
577598
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_IDLE);
578599

579600
if ((!key_mgr_hal_is_huk_valid()) || (!config->huk_deployed)) {
580-
// For purpose ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 this part shall be already executed
601+
// For purpose ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 or ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2 this part shall be already executed
581602
huk_deploy_config_t huk_deploy_config;
582603
huk_deploy_config.use_pre_generated_huk_info = config->key_config->use_pre_generated_huk_info;
583604
huk_deploy_config.pre_generated_huk_info = &config->key_config->huk_info;
@@ -600,13 +621,13 @@ static esp_err_t key_mgr_deploy_key_ecdh0_mode(ecdh0_deploy_config_t *config)
600621

601622
// Set AES-XTS key len
602623
esp_key_mgr_key_type_t key_type = (esp_key_mgr_key_type_t) config->key_config->key_type;
603-
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY) {
604-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_256);
605-
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
606-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_512);
624+
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY || key_type == ESP_KEY_MGR_PSRAM_128_KEY) {
625+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_256);
626+
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
627+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_512);
607628
}
608629

609-
// Set key purpose (XTS/ECDSA)
630+
// Set key purpose
610631
key_mgr_hal_set_key_purpose(config->key_purpose);
611632
key_mgr_hal_start();
612633
key_mgr_hal_continue();
@@ -628,7 +649,7 @@ static esp_err_t key_mgr_deploy_key_ecdh0_mode(ecdh0_deploy_config_t *config)
628649

629650
ESP_LOGD(TAG, "HUK deployed is valid");
630651

631-
if (config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1) {
652+
if (config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 || config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1) {
632653
if (!key_mgr_hal_is_key_deployment_valid(config->key_config->key_type)) {
633654
ESP_LOGE(TAG, "Key deployment is not valid");
634655
heap_caps_free(key_recovery_info);
@@ -641,7 +662,7 @@ static esp_err_t key_mgr_deploy_key_ecdh0_mode(ecdh0_deploy_config_t *config)
641662
key_mgr_hal_continue();
642663
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_IDLE);
643664

644-
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2) {
665+
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 || config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2) {
645666
memcpy(config->key_info->key_info[1].info, key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
646667
config->key_info->key_info[1].crc = esp_rom_crc32_le(0, key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
647668
} else {
@@ -698,6 +719,14 @@ esp_err_t esp_key_mgr_deploy_key_in_ecdh0_mode(const esp_key_mgr_ecdh0_key_confi
698719
ecdh0_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_DS;
699720
ecdh0_deploy_config.ecdh0_key_info = ecdh0_key_info->k2_G[0];
700721
break;
722+
case ESP_KEY_MGR_PSRAM_128_KEY:
723+
ecdh0_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_128;
724+
ecdh0_deploy_config.ecdh0_key_info = ecdh0_key_info->k2_G[0];
725+
break;
726+
case ESP_KEY_MGR_PSRAM_256_KEY:
727+
ecdh0_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1;
728+
ecdh0_deploy_config.ecdh0_key_info = ecdh0_key_info->k2_G[0];
729+
break;
701730
default:
702731
ESP_LOGE(TAG, "Invalid key type");
703732
return ESP_ERR_INVALID_ARG;
@@ -712,8 +741,8 @@ esp_err_t esp_key_mgr_deploy_key_in_ecdh0_mode(const esp_key_mgr_ecdh0_key_confi
712741

713742
ecdh0_deploy_config.huk_deployed = true;
714743

715-
if (key_config->key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
716-
ecdh0_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2;
744+
if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
745+
ecdh0_deploy_config.key_purpose = key_type == ESP_KEY_MGR_XTS_AES_256_KEY ? ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 : ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2;
717746
ecdh0_deploy_config.k1_G = key_config->k1_G[1];
718747
ecdh0_deploy_config.ecdh0_key_info = ecdh0_key_info->k2_G[1];
719748
esp_ret = key_mgr_deploy_key_ecdh0_mode(&ecdh0_deploy_config);
@@ -742,7 +771,7 @@ static esp_err_t key_mgr_deploy_key_random_mode(random_deploy_config_t *config)
742771
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_IDLE);
743772

744773
if ((!key_mgr_hal_is_huk_valid()) || (!config->huk_deployed)) {
745-
// For purpose ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 this part shall be already executed
774+
// For purpose ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 or ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2 this part shall be already executed
746775
huk_deploy_config_t huk_deploy_config = {
747776
.use_pre_generated_huk_info = config->key_config->use_pre_generated_huk_info,
748777
.pre_generated_huk_info = &config->key_config->huk_info,
@@ -761,10 +790,10 @@ static esp_err_t key_mgr_deploy_key_random_mode(random_deploy_config_t *config)
761790

762791
// Set AES-XTS key len
763792
esp_key_mgr_key_type_t key_type = (esp_key_mgr_key_type_t) config->key_config->key_type;
764-
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY) {
765-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_256);
766-
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
767-
key_mgr_hal_set_xts_aes_key_len(ESP_KEY_MGR_XTS_AES_LEN_512);
793+
if (key_type == ESP_KEY_MGR_XTS_AES_128_KEY || key_type == ESP_KEY_MGR_PSRAM_128_KEY) {
794+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_256);
795+
} else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
796+
key_mgr_hal_set_xts_aes_key_len(key_type, ESP_KEY_MGR_XTS_AES_LEN_512);
768797
}
769798

770799
uint8_t *key_recovery_info = (uint8_t *) heap_caps_calloc(1, KEY_MGR_KEY_RECOVERY_INFO_SIZE, MALLOC_CAP_INTERNAL);
@@ -785,7 +814,7 @@ static esp_err_t key_mgr_deploy_key_random_mode(random_deploy_config_t *config)
785814
key_mgr_hal_read_public_info(key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
786815
ESP_LOG_BUFFER_HEX_LEVEL("KEY_MGR KEY INFO", key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE, ESP_LOG_DEBUG);
787816

788-
if (config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1) {
817+
if (config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 || config->key_purpose != ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1) {
789818
if (!key_mgr_hal_is_key_deployment_valid(config->key_config->key_type)) {
790819
ESP_LOGE(TAG, "Key deployment is not valid");
791820
heap_caps_free(key_recovery_info);
@@ -798,7 +827,7 @@ static esp_err_t key_mgr_deploy_key_random_mode(random_deploy_config_t *config)
798827
key_mgr_hal_continue();
799828
key_mgr_wait_for_state(ESP_KEY_MGR_STATE_IDLE);
800829

801-
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2) {
830+
if (config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 || config->key_purpose == ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2) {
802831
memcpy(config->key_info->key_info[1].info, key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
803832
config->key_info->key_info[1].crc = esp_rom_crc32_le(0, key_recovery_info, KEY_MGR_KEY_RECOVERY_INFO_SIZE);
804833
} else {
@@ -847,6 +876,12 @@ esp_err_t esp_key_mgr_deploy_key_in_random_mode(const esp_key_mgr_random_key_con
847876
case ESP_KEY_MGR_DS_KEY:
848877
random_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_DS;
849878
break;
879+
case ESP_KEY_MGR_PSRAM_128_KEY:
880+
random_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_128;
881+
break;
882+
case ESP_KEY_MGR_PSRAM_256_KEY:
883+
random_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_1;
884+
break;
850885
default:
851886
ESP_LOGE(TAG, "Invalid key type");
852887
return ESP_ERR_INVALID_ARG;
@@ -862,8 +897,8 @@ esp_err_t esp_key_mgr_deploy_key_in_random_mode(const esp_key_mgr_random_key_con
862897

863898
random_deploy_config.huk_deployed = true;
864899

865-
if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY) {
866-
random_deploy_config.key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2;
900+
if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY || key_type == ESP_KEY_MGR_PSRAM_256_KEY) {
901+
random_deploy_config.key_purpose = key_type == ESP_KEY_MGR_XTS_AES_256_KEY ? ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_2 : ESP_KEY_MGR_KEY_PURPOSE_PSRAM_256_2;
867902
esp_ret = key_mgr_deploy_key_random_mode(&random_deploy_config);
868903
if (esp_ret != ESP_OK) {
869904
ESP_LOGE(TAG, "Key deployment in Random mode failed");

0 commit comments

Comments
 (0)