Commit Graph
48 Commits
Author SHA1 Message Date
harshal.patil 024de60208 fix(esp_common/esp_fault): make ESP_FAULT_ASSERT survive optimization
ESP_FAULT_ASSERT(C) was silently deleted by the optimizer when C is a cached
flag/status already proven by a preceding `if (!C) return/goto`: the compiler
folds C to a constant and drops all three checks, removing the fault-injection
protection with no warning.
2026-06-22 11:20:04 +05:30
Aditya Patwardhan 66156479d2 change(secure_boot): mark ECDSA based Secure Boot V2 as insecure on affected SoCs
ECDSA based Secure Boot V2 is not functional for certain input vectors on
ESP32-C5/C61/H2/P4 and on the preview targets ESP32-H4/H21. RSA based Secure
Boot V2 is the recommended scheme where the SoC supports it. This issue will be
fixed in a future hardware ECO revision; more details will be shared through the
hardware errata document.

A new hidden Kconfig option SECURE_BOOT_V2_ECDSA_INSECURE marks the affected
mass-production SoCs (ESP32-C5/C61/H2/P4). On these SoCs, when hardware Secure
Boot V2 is enabled, the ECDSA (V2) signing scheme is no longer offered by
default; it must be turned on explicitly via SECURE_BOOT_V2_FORCE_ENABLE_ECDSA
under "Allow potentially insecure options" (CONFIG_SECURE_BOOT_INSECURE). App
signing without hardware Secure Boot is not affected. Note that ESP32-C61 has no
RSA based Secure Boot V2, so it has no Secure Boot scheme enabled by default.

The preview targets ESP32-H4 and ESP32-H21 mark ECDSA Secure Boot V2 as not
supported in their SoC capabilities instead of using the option above. As
ESP32-H4 has no other Secure Boot V2 scheme, Secure Boot is disabled entirely on
it; ESP32-H21 retains RSA based Secure Boot V2.

The security documentation keeps the ECDSA Secure Boot V2 content visible and
adds a warning describing the limitation (including that ECDSA Secure Boot V2 on
ESP32-C61 is not recommended for production). CI apps that exercise ECDSA Secure
Boot V2 on the affected SoCs set CONFIG_SECURE_BOOT_V2_FORCE_ENABLE_ECDSA
accordingly.
2026-06-10 08:08:07 +05:30
Laukik Hase 2c38c285cf feat(esp_tee): Clear out all sensitive buffers explicitly after TEE crypto operations 2026-05-26 11:44:47 +05:30
Laukik Hase a88716153b feat(esp_tee): Add some required fields in the attestation token
- Chip ID from the ROM
- Device MAC address from eFuse BLK1
- Device Optional Unique ID from eFuse BLK2
2026-05-26 11:34:06 +05:30
Laukik Hase 1df6b857ac fix(esp_hw_support): Add PMP entry for LP peripherals region on P4 v3+ 2026-05-08 12:43:26 +05:30
harshal.patil 8121f66ec3 feat(cpu_region_protect): Extend PMP memprot for ESP32-P4 V3 2026-05-08 12:43:26 +05:30
Fu Hanxi 8a9c2cbeb1 tests: change wifi tests expect timeout to 60
- wifi_router
- wifi_ap
- wifi_high_traffic
2026-04-22 09:22:20 +02:00
Laukik Hase eebabaff2f fix(esp_tee): Add missing input validation checks for TEE service calls
- MULTI_HEAP_ASSERT for TEE now aborts on failure, instead of ignoring the condition
- Prevent potential TEE OTA write bounds overflow
2026-04-09 16:34:21 +05:30
Laukik Hase 221f0e7c23 ci(esp_tee): Enable heap tracing for the tee_test_fw test-app 2026-03-31 11:09:35 +05:30
Laukik Hase 7d4436028d ci(esp_tee): Optimize the TEE pytest script 2026-03-31 11:09:30 +05:30
Laukik Hase 7b3e2b82bb fix(esp_tee): Prevent IV reuse in the TEE secure storage AES-GCM service 2026-02-05 13:45:21 +05:30
Laukik Hase a45758dede ci(esp_tee): Remove incorrect error checks for TEE flash protection tests
- Also fixed coverity issue from TEE secure storage
2025-11-06 17:20:04 +05:30
Laukik Hase 06ba6bb4b4 fix(esp_tee): Use HAL APIs instead of ROM APIs for SPI flash service calls
Currently, REE SPI flash HAL operations are routed as service calls to TEE,
but the TEE implementation incorrectly uses ROM APIs instead of HAL APIs.
This leads to issues and is not the recommended approach.
2025-10-27 11:17:05 +05:30
Laukik Hase 2d494c5df6 feat(esp_tee): Reclaim unused TEE IRAM memory as heap
- Changed the default TEE code placement to use the flash
  text section instead of IRAM text, making it consistent
  with the default data placement.
2025-10-17 10:41:55 +05:30
Laukik Hase 1d563150b0 fix(esp_tee): Split TEE SRAM as I/DRAM for ESP32-C5 with PMA 2025-10-17 10:40:08 +05:30
Laukik Hase 73d0dadd6b fix(esp_tee): Correct flash operation bound checks to handle all overlap cases
- Ensure bound checks correctly handle all scenarios, including
  when a requested operation's (SPI0/1) range fully contains the
  TEE-protected region.
- Disable delegation of INTWDT timeout and Cache error interrupts as they reset
  the device after the panic handler
2025-10-14 10:12:28 +05:30
Laukik Hase 22fe84bf91 ci(esp_tee): Disable the TEE test-apps for ESP32-C5 temporarily 2025-10-14 10:12:13 +05:30
Laukik Hase 78737a757a feat(esp_tee): Added support for PBKDF2-based (HMAC) ECDSA signing 2025-10-14 10:12:13 +05:30
Laukik Hase d49055e307 fix(esp_tee): Skip taking the service call mutex when in critical sections
- Fixes INT_WDT timeouts with mmap operations
- Add test-case for verifying parallel service calls
2025-10-14 10:12:12 +05:30
Laukik Hase 4aafa4d11b feat(esp_tee): Miscellaneous fixes and updates
- Rename `tee_test_fw` app configs for better CI tracking
- Decrease the lower bound of TEE I/DRAM config options
- Trim the TEE test-apps build
- Improve the TEE/REE OTA pytest script with additional checks
- Fix build issues when `tee_sec_storage`/`tee_ota_ops` are a
  a part of the project build but ESP-TEE is disabled
2025-10-14 10:12:12 +05:30
Laukik Hase 9e487873c9 ci(esp_tee): Enable the TEE test-apps for ESP32-C5 2025-10-14 10:12:11 +05:30
Laukik Hase 12ab50dc54 ci(esp_tee): Refactor the ESP-TEE test-cases
- Improve the interrupt-related test cases
- Fix potential issues in the task-switching test
  during secure service calls
2025-10-14 10:12:11 +05:30
Jiang Jiang Jian 3c39b32195 Chip/support esp32c61 v5.5 2025-07-22 12:21:36 +08:00
Laukik Hase d482206483 ci(esp_tee): Enable the tee_test_fw test app for ESP32-H2 2025-05-21 10:06:17 +05:30
Laukik Hase c16fc04c2d docs(esp_tee): Revise TEE secure storage and related documentation 2025-05-04 18:22:22 +05:30
Laukik Hase 3bb3f9362e refactor(esp_tee): Update TEE secure storage examples and test-apps 2025-05-04 18:03:30 +05:30
Laukik Hase d116567a66 refactor(esp_tee): Update TEE secure storage interface APIs 2025-05-04 18:03:29 +05:30
Laukik Hase 832124f198 fix(esp_tee): Place APM HAL in TEE IRAM when SPI1 protection is enabled
- Place the APM HAL into TEE IRAM when `CONFIG_SECURE_TEE_EXT_FLASH_MEMPROT_SPI1`
  is enabled, as APM violations related to SPI1 can occur with the flash cache disabled.
- Also fix an issue where flash protection tests were passing due to incorrect checks
2025-04-17 11:03:50 +05:30
Laukik Hase a845be0149 refactor(esp_tee): Reduce the default TEE DRAM size
- Decreased from 32KB to 24KB, keeping in mind the current maximum TEE heap
  usage and some overhead
- Make the TEE panic handler logs concise, saving some DRAM
2025-04-17 11:03:17 +05:30
Laukik Hase 4a4d63d36e feat(esp_tee): Protect the ECC peripheral from REE access 2025-04-16 19:19:04 +05:30
Laukik Hase fc4802c0d6 feat(esp_tee): Protect the HMAC and DS peripherals from REE access 2025-04-16 19:19:04 +05:30
Laukik Hase d26e18cb49 ci(esp_tee): Verify the malloc-write-free cycle in the TEE heap 2025-04-08 19:50:27 +05:30
Laukik Hase 223c0d5f9d feat(esp_tee): Use the ROM TLSF implementation for the TEE build 2025-04-08 19:50:27 +05:30
Laukik Hase d442886918 refactor(esp_tee): Refactor the TEE heap-related APIs 2025-04-08 19:50:26 +05:30
Chen Ji Chang f407fab479 Merge branch 'feat/support_gptimer_on_h4' into 'master'
feat(gptimer): support gptimer on esp32h4

Closes IDF-12373 and IDF-12374

See merge request espressif/esp-idf!38168
2025-04-08 13:46:49 +08:00
Chen Jichang 2cbc297969 refactor(gptimer): use group_id in clock ctrl functions 2025-04-08 10:20:48 +08:00
Laukik Hase 3fd107aa04 feat(mbedtls): Add support for ECDSA signing with TEE secure storage 2025-04-03 15:35:15 +05:30
Laukik Hase 1e8933d296 feat(esp_tee): Add support for SECP192R1 curve in TEE secure storage 2025-04-03 15:35:14 +05:30
igor.udot daf2d31008 test: format all test scripts 2025-03-05 12:08:48 +08:00
Laukik Hase 873409da6b refactor(esp_tee): Simplify service call ASM routine
- Remove `mret` for jumping to the service call dispatcher; instead, enable
  interrupts and execute directly
- Fix potential corruption of the `t3` register when returning from a service
  call
- Simplify the secure service dispatcher function
2025-02-25 17:18:08 +05:30
Laukik Hase 7d49f696c1 ci(esp_tee): Add tests for verifying behaviour for illegal flash accesses (SPI1) 2025-02-11 12:30:06 +05:30
Laukik Hase 37525c605d refactor(esp_tee): Migrate secure services list from TBL to YAML 2025-02-11 10:15:20 +05:30
Laukik Hase 8f117c7f4c refactor(esp_tee): Add local components in TEE examples via idf_component.yml 2025-02-11 10:15:19 +05:30
Laukik Hase c4eec756f3 refactor(esp_tee): Revised the secure service ID numbering scheme
Also:
- Split the secure service table into two parts: one DRAM-resident and the
  other DROM-resident. The former holds the services invoked when the cache is
  disabled or suspended while the latter holds rest of the services.
2025-01-23 12:39:19 +05:30
Laukik Hase a91f89026c feat(esp_tee): Make the attestation service configurable 2025-01-23 12:39:17 +05:30
Laukik Hase 86125aeb98 ci(esp_tee): Add tests for verifying behaviour for illegal flash accesses (SPI0) 2025-01-03 11:44:27 +05:30
Laukik Hase 909fd60d33 fix(esp_tee): Include required headers explicitly across the esp_tee component 2024-12-20 14:34:14 +05:30
Laukik Hase 373930655a feat(esp_tee): Support for ESP-TEE - the main component 2024-12-02 12:20:05 +05:30