esp_efuse_write_key() function
Program a block of key data to an efuse block The burn of a key, protection bits, and a purpose happens in batch mode.
Arguments
block
Block to read purpose for. Must be in range EFUSE_BLK_KEY0 to EFUSE_BLK_KEY_MAX. Key block must be unused (esp_efuse_key_block_unused).
purpose
Purpose to set for this key. Purpose must be already unset.
key
Pointer to data to write.
key_size_bytes
Bytes length of data to write.
Return value
- ESP_OK: Successful. - ESP_ERR_INVALID_ARG: Error in the passed arguments. - ESP_ERR_INVALID_STATE: Error in efuses state, unused block not found. - ESP_ERR_EFUSE_REPEATED_PROG: Error repeated programming of programmed bits is strictly forbidden. - ESP_ERR_CODING: Error range of data does not match the coding scheme.
Notes
This API also enables the read protection efuse bit for certain key blocks like XTS-AES, HMAC, ECDSA etc. This ensures that the key is only accessible to hardware peripheral. For SoC's with capability `SOC_EFUSE_ECDSA_USE_HARDWARE_K` (e.g., ESP32-H2), this API writes an additional efuse bit for ECDSA key purpose to enforce hardware TRNG generated k mode in the peripheral.
esp_efuse_write_key() is called by 1 function and calls 8 functions:
![]()
esp_efuse_write_key()
esp_efuse_write_key() reads 4 variables:
![]()
esp_efuse_write_key()