forked from espressif/esp-idf
fix(bootloader_support): Allow SOFT_DIS_JTAG in verify_release_mode
This commit is contained in:
@@ -357,23 +357,48 @@ bool esp_flash_encryption_cfg_verify_release_mode(void)
|
|||||||
ESP_LOGW(TAG, "Not disabled UART bootloader cache (set DIS_DOWNLOAD_ICACHE->1)");
|
ESP_LOGW(TAG, "Not disabled UART bootloader cache (set DIS_DOWNLOAD_ICACHE->1)");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
bool soft_dis_jtag = false;
|
||||||
#if SOC_EFUSE_DIS_PAD_JTAG
|
#if SOC_EFUSE_SOFT_DIS_JTAG
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_PAD_JTAG);
|
size_t soft_dis_jtag_cnt_val = 0;
|
||||||
result &= secure;
|
esp_efuse_read_field_cnt(ESP_EFUSE_SOFT_DIS_JTAG, &soft_dis_jtag_cnt_val);
|
||||||
if (!secure) {
|
soft_dis_jtag = (soft_dis_jtag_cnt_val == ESP_EFUSE_SOFT_DIS_JTAG[0]->bit_count);
|
||||||
ESP_LOGW(TAG, "Not disabled JTAG PADs (set DIS_PAD_JTAG->1)");
|
if (soft_dis_jtag) {
|
||||||
|
bool hmac_key_found = false;
|
||||||
|
hmac_key_found = esp_efuse_find_purpose(ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_JTAG, NULL);
|
||||||
|
hmac_key_found |= esp_efuse_find_purpose(ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_ALL, NULL);
|
||||||
|
if (!hmac_key_found) {
|
||||||
|
ESP_LOGW(TAG, "SOFT_DIS_JTAG is set but HMAC key with respective purpose not found");
|
||||||
|
soft_dis_jtag = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!soft_dis_jtag) {
|
||||||
|
#if SOC_EFUSE_DIS_PAD_JTAG
|
||||||
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_PAD_JTAG);
|
||||||
|
result &= secure;
|
||||||
|
if (!secure) {
|
||||||
|
ESP_LOGW(TAG, "Not disabled JTAG PADs (set DIS_PAD_JTAG->1)");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SOC_EFUSE_DIS_USB_JTAG
|
#if SOC_EFUSE_DIS_USB_JTAG
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_USB_JTAG);
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_USB_JTAG);
|
||||||
result &= secure;
|
result &= secure;
|
||||||
if (!secure) {
|
if (!secure) {
|
||||||
ESP_LOGW(TAG, "Not disabled USB JTAG (set DIS_USB_JTAG->1)");
|
ESP_LOGW(TAG, "Not disabled USB JTAG (set DIS_USB_JTAG->1)");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if SOC_EFUSE_HARD_DIS_JTAG
|
||||||
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_HARD_DIS_JTAG);
|
||||||
|
result &= secure;
|
||||||
|
if (!secure) {
|
||||||
|
ESP_LOGW(TAG, "Not disabled JTAG (set HARD_DIS_JTAG->1)");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#if SOC_EFUSE_DIS_DIRECT_BOOT
|
#if SOC_EFUSE_DIS_DIRECT_BOOT
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_DIRECT_BOOT);
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_DIRECT_BOOT);
|
||||||
result &= secure;
|
result &= secure;
|
||||||
@@ -382,14 +407,6 @@ bool esp_flash_encryption_cfg_verify_release_mode(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_EFUSE_HARD_DIS_JTAG
|
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_HARD_DIS_JTAG);
|
|
||||||
result &= secure;
|
|
||||||
if (!secure) {
|
|
||||||
ESP_LOGW(TAG, "Not disabled JTAG (set HARD_DIS_JTAG->1)");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SOC_EFUSE_DIS_BOOT_REMAP
|
#if SOC_EFUSE_DIS_BOOT_REMAP
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_BOOT_REMAP);
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_BOOT_REMAP);
|
||||||
result &= secure;
|
result &= secure;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -298,38 +298,47 @@ bool esp_secure_boot_cfg_verify_release_mode(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_EFUSE_HARD_DIS_JTAG
|
bool soft_dis_jtag = false;
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_HARD_DIS_JTAG);
|
|
||||||
result &= secure;
|
|
||||||
if (!secure) {
|
|
||||||
ESP_LOGW(TAG, "Not disabled JTAG (set HARD_DIS_JTAG->1)");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SOC_EFUSE_SOFT_DIS_JTAG
|
#if SOC_EFUSE_SOFT_DIS_JTAG
|
||||||
size_t soft_dis_jtag_cnt_val = 0;
|
size_t soft_dis_jtag_cnt_val = 0;
|
||||||
esp_efuse_read_field_cnt(ESP_EFUSE_SOFT_DIS_JTAG, &soft_dis_jtag_cnt_val);
|
esp_efuse_read_field_cnt(ESP_EFUSE_SOFT_DIS_JTAG, &soft_dis_jtag_cnt_val);
|
||||||
if (soft_dis_jtag_cnt_val != ESP_EFUSE_SOFT_DIS_JTAG[0]->bit_count) {
|
soft_dis_jtag = (soft_dis_jtag_cnt_val == ESP_EFUSE_SOFT_DIS_JTAG[0]->bit_count);
|
||||||
result &= secure;
|
if (soft_dis_jtag) {
|
||||||
ESP_LOGW(TAG, "Not disabled JTAG in the soft way (set SOFT_DIS_JTAG->max)");
|
bool hmac_key_found = false;
|
||||||
|
hmac_key_found = esp_efuse_find_purpose(ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_JTAG, NULL);
|
||||||
|
hmac_key_found |= esp_efuse_find_purpose(ESP_EFUSE_KEY_PURPOSE_HMAC_DOWN_ALL, NULL);
|
||||||
|
if (!hmac_key_found) {
|
||||||
|
ESP_LOGW(TAG, "SOFT_DIS_JTAG is set but HMAC key with respective purpose not found");
|
||||||
|
soft_dis_jtag = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!soft_dis_jtag) {
|
||||||
|
#if SOC_EFUSE_HARD_DIS_JTAG
|
||||||
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_HARD_DIS_JTAG);
|
||||||
|
result &= secure;
|
||||||
|
if (!secure) {
|
||||||
|
ESP_LOGW(TAG, "Not disabled JTAG (set HARD_DIS_JTAG->1)");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SOC_EFUSE_DIS_PAD_JTAG
|
#if SOC_EFUSE_DIS_PAD_JTAG
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_PAD_JTAG);
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_PAD_JTAG);
|
||||||
result &= secure;
|
result &= secure;
|
||||||
if (!secure) {
|
if (!secure) {
|
||||||
ESP_LOGW(TAG, "Not disabled JTAG PADs (set DIS_PAD_JTAG->1)");
|
ESP_LOGW(TAG, "Not disabled JTAG PADs (set DIS_PAD_JTAG->1)");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_EFUSE_DIS_USB_JTAG
|
#if SOC_EFUSE_DIS_USB_JTAG
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_USB_JTAG);
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_DIS_USB_JTAG);
|
||||||
result &= secure;
|
result &= secure;
|
||||||
if (!secure) {
|
if (!secure) {
|
||||||
ESP_LOGW(TAG, "Not disabled USB JTAG (set DIS_USB_JTAG->1)");
|
ESP_LOGW(TAG, "Not disabled USB JTAG (set DIS_USB_JTAG->1)");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SECURE_BOOT_ENABLE_AGGRESSIVE_KEY_REVOKE
|
#ifdef CONFIG_SECURE_BOOT_ENABLE_AGGRESSIVE_KEY_REVOKE
|
||||||
secure = esp_efuse_read_field_bit(ESP_EFUSE_SECURE_BOOT_AGGRESSIVE_REVOKE);
|
secure = esp_efuse_read_field_bit(ESP_EFUSE_SECURE_BOOT_AGGRESSIVE_REVOKE);
|
||||||
|
Reference in New Issue
Block a user