Files
esp-idf/components/esp_hal_security
Alexey Lapshin a494009a0c feat(build): add RISC-V ZCMP post-link workaround check
Validate linked RISC-V executables when
CONFIG_COMPILER_ENABLE_RISCV_ZCMP is enabled on affected chips.
Disassemble each function and reject mstatus.MIE clears that lack an
earlier mintthresh write of 0xff.

Handle csrrci, csrrw, and register-mask csrrc patterns while ignoring
csrrs. Add build-only coverage for valid and invalid sequences with
CMake v1 and v2.

Stop the hardware stack guard before switching stacks during restart,
and keep ZCMP disabled for TEE test apps that still require the
workaround.
2026-08-03 14:10:00 +08:00
..

esp_hal_security (G1 component)

The esp_hal_security component provides a Hardware Abstraction Layer for security-related peripherals across all targets supported by ESP-IDF.

This component contains HAL implementations for the following security peripherals:

  • AES (Advanced Encryption Standard)
  • SHA (Secure Hash Algorithm)
  • HMAC (Hash-based Message Authentication Code)
  • MPI (Modular Polynomial Integer - RSA operations)
  • ECC (Elliptic Curve Cryptography)
  • ECDSA (Elliptic Curve Digital Signature Algorithm)
  • DS (Digital Signature)
  • Key Manager (Hardware key management)
  • HUK (Hardware Unique Key)
  • APM (Access Permission Manager)
  • MPU (Memory Protection Unit)

Structure

Similar to the main hal component, this component follows the same structure:

  • HAL layer (include/esp_hal_security/<periph>_hal.h): High-level abstraction for peripheral operations
  • LL layer (<target>/include/esp_hal_security/<periph>_ll.h): Low-level register access functions
  • Types (include/esp_hal_security/<periph>_types.h): Type definitions and constants shared across layers

Usage

This component is automatically included when you depend on components that use security peripherals, such as:

  • esp_security
  • mbedtls
  • bootloader_support (for secure boot and flash encryption)

You typically don't need to explicitly add this component to your CMakeLists.txt unless you're directly using security HAL APIs.

Note

This component was split from the main hal component to better organize security-related functionality and manage dependencies. Components that previously depended on hal for security features should now depend on esp_hal_security instead.