nRF Connect SDK API 0.1.0
Loading...
Searching...
No Matches
Hardware Unique Key (HUK) loading

API for loading the Hardware Unique Key (HUK). More...

Macros

#define HUK_SIZE_BYTES   (HUK_SIZE_WORDS * 4)
 
#define HW_UNIQUE_KEY_ERR_MISSING   (0x16501)
 Error value when the hardware unique key is missing.
 
#define HW_UNIQUE_KEY_ERR_WRITE_FAILED   (0x16502)
 Error value when writing the hardware unique key failed.
 
#define HW_UNIQUE_KEY_ERR_GENERATION_FAILED   (0x16503)
 Error value when the generation of the hardware unique key failed.
 
#define HW_UNIQUE_KEY_ERR_DERIVE_FAILED   (0x16504)
 Error value when key derivation using the hardware unique key failed.
 
#define HW_UNIQUE_KEY_ERR_GENERIC_ERROR   (0x16505)
 Error value when the hardware unique key had a generic failure.
 
#define HW_UNIQUE_KEY_SUCCESS   (0x0)
 Return code for success.
 
#define KMU_SELECT_SLOT(KEYSLOT)   (uint32_t)((KEYSLOT) + 1) /* NRF_KMU KEYSLOT are 1-indexed. */
 

Enumerations

enum  hw_unique_key_slot { HUK_KEYSLOT_KDR = 0 }
 

Functions

int hw_unique_key_write (enum hw_unique_key_slot key_slot, const uint8_t *key)
 Write a Hardware Unique Key to the KMU.
 
int hw_unique_key_write_random (void)
 Read random numbers from nrf_cc3xx_platform_ctr_drbg_get and write them to all slots with hw_unique_key_write.
 
bool hw_unique_key_is_written (enum hw_unique_key_slot key_slot)
 Check whether a Hardware Unique Key has been written to the KMU.
 
bool hw_unique_key_are_any_written (void)
 Check whether any Hardware Unique Keys are written to the KMU.
 
int hw_unique_key_load_kdr (void)
 Load the Hardware Unique Key (HUK) into the KDR registers of the Cryptocell.
 
int hw_unique_key_derive_key (enum hw_unique_key_slot key_slot, const uint8_t *context, size_t context_size, uint8_t const *label, size_t label_size, uint8_t *output, uint32_t output_size)
 Derive a key from the specified HUK, using the nrf_cc3xx_platform API on CryptoCell. Cracen PSA driver APIs on Cracen.
 

Detailed Description

API for loading the Hardware Unique Key (HUK).

   The library supports loading the HUK:
       - To CryptoCell KDR registers.
       - To Cracen SEED registers.