Merge branch 'feat/generic_key_mgr_key_types' into 'master'

Store key_len field in the key_config

See merge request espressif/esp-idf!42692
This commit is contained in:
Harshal Patil
2025-11-18 15:12:03 +05:30
24 changed files with 795 additions and 509 deletions

View File

@@ -77,7 +77,7 @@ esp_err_t esp_flash_encryption_use_efuse_key(void)
esp_crypto_key_mgr_enable_periph_clk(true);
// Force Key Manager to use eFuse key for XTS-AES operation
key_mgr_hal_set_key_usage(ESP_KEY_MGR_XTS_AES_128_KEY, ESP_KEY_MGR_USE_EFUSE_KEY);
key_mgr_hal_set_key_usage(ESP_KEY_MGR_FLASH_XTS_AES_KEY, ESP_KEY_MGR_USE_EFUSE_KEY);
return ESP_OK;
}

View File

@@ -59,7 +59,7 @@ esp_err_t esp_flash_encryption_use_efuse_key(void)
esp_crypto_key_mgr_enable_periph_clk(true);
// Force Key Manager to use eFuse key for XTS-AES operation
key_mgr_hal_set_key_usage(ESP_KEY_MGR_XTS_AES_128_KEY, ESP_KEY_MGR_USE_EFUSE_KEY);
key_mgr_hal_set_key_usage(ESP_KEY_MGR_FLASH_XTS_AES_KEY, ESP_KEY_MGR_USE_EFUSE_KEY);
return ESP_OK;
}

View File

@@ -151,14 +151,19 @@ static esp_err_t key_manager_read_key_recovery_info(esp_key_mgr_key_recovery_inf
continue;
}
if (key_recovery_info->key_type != ESP_KEY_MGR_FLASH_XTS_AES_KEY) {
ESP_LOGD(TAG, "Key Manager sector %d has incorrect key type %d", i, key_recovery_info->key_type);
continue;
}
#if CONFIG_SECURE_FLASH_ENCRYPTION_AES256
if (key_recovery_info->key_type != ESP_KEY_MGR_XTS_AES_256_KEY) {
ESP_LOGD(TAG, "Key Manager sector %d has incorrect key type", i);
if (key_recovery_info->key_len != ESP_KEY_MGR_XTS_AES_LEN_256) {
ESP_LOGD(TAG, "Key Manager sector %d has incorrect key length %d", i, key_recovery_info->key_len);
continue;
}
#else
if (key_recovery_info->key_type != ESP_KEY_MGR_XTS_AES_128_KEY) {
ESP_LOGD(TAG, "Key Manager sector %d has incorrect key type", i);
if (key_recovery_info->key_len != ESP_KEY_MGR_XTS_AES_LEN_128) {
ESP_LOGD(TAG, "Key Manager sector %d has incorrect key length %d", i, key_recovery_info->key_len);
continue;
}
#endif
@@ -201,10 +206,12 @@ static esp_err_t key_manager_generate_key(esp_key_mgr_key_recovery_info_t *key_r
esp_key_mgr_random_key_config_t key_config;
memset(&key_config, 0, sizeof(esp_key_mgr_random_key_config_t));
key_config.key_type = ESP_KEY_MGR_FLASH_XTS_AES_KEY;
#if CONFIG_SECURE_FLASH_ENCRYPTION_AES256
key_config.key_type = ESP_KEY_MGR_XTS_AES_256_KEY;
key_config.key_len = ESP_KEY_MGR_XTS_AES_LEN_256;
#else
key_config.key_type = ESP_KEY_MGR_XTS_AES_128_KEY;
key_config.key_len = ESP_KEY_MGR_XTS_AES_LEN_128;
#endif
// Generate a new key and load it into Key Manager