Software APIs
Data Fields
boot_data Struct Reference

Boot data stored in the flash info partition. More...

#include <sw/device/silicon_creator/lib/boot_data.h>

Data Fields

hmac_digest_t digest
 SHA-256 digest of boot data. More...
 
uint64_t is_valid
 Invalidation field. More...
 
uint32_t identifier
 Boot data identifier.
 
uint32_t version
 Boot data format version. More...
 
uint32_t counter
 Counter. More...
 
uint32_t min_security_version_rom_ext
 Minimum required security version for ROM_EXT.
 
uint32_t min_security_version_bl0
 Minimum required security version for BL0.
 
uint32_t primary_bl0_slot
 The BL0 slot that is prioritized during boot.
 
uint32_t next_owner [8]
 Next owner key (ECDSA). More...
 
nonce_t nonce
 Challenge/response nonce for signed boot_svc commands.
 
uint32_t ownership_state
 Ownership state. More...
 
uint32_t ownership_transfers
 Number of ownership transfers this chip has had.
 
uint32_t padding [4]
 Padding for future enhancements and to make the size of boot_data_t a power of two.
 

Detailed Description

Boot data stored in the flash info partition.

Definition at line 21 of file boot_data.h.

Field Documentation

◆ counter

uint32_t boot_data::counter

Counter.

This is a monotonically increasing counter that is used to determine the newest entry across both boot data pages.

Definition at line 58 of file boot_data.h.

◆ digest

hmac_digest_t boot_data::digest

SHA-256 digest of boot data.

The region covered by this digest starts immediately after this field and ends at the end of the entry.

Definition at line 28 of file boot_data.h.

◆ identifier

uint32_t boot_data::identifier

Boot data identifier.

Definition at line 43 of file boot_data.h.

◆ is_valid

uint64_t boot_data::is_valid

Invalidation field.

This field is used to invalidate the previous entry after writing a new entry. When writing a new entry, the value of this field is assumed to be kBootDataValidEntry, which matches the value of unwritten flash words, but it is skipped so that the entry can be invalidated at a later time. An entry can be invalidated by writing kBootDataInvalidEntry to this field resulting in a digest mismatch.

Definition at line 39 of file boot_data.h.

◆ min_security_version_bl0

uint32_t boot_data::min_security_version_bl0

Minimum required security version for BL0.

Definition at line 66 of file boot_data.h.

◆ min_security_version_rom_ext

uint32_t boot_data::min_security_version_rom_ext

Minimum required security version for ROM_EXT.

Definition at line 62 of file boot_data.h.

◆ next_owner

uint32_t boot_data::next_owner[8]

Next owner key (ECDSA).

Only relevant in the UNLOCKED_ENDORSED ownership state.

Definition at line 75 of file boot_data.h.

◆ nonce

nonce_t boot_data::nonce

Challenge/response nonce for signed boot_svc commands.

Definition at line 79 of file boot_data.h.

◆ ownership_state

uint32_t boot_data::ownership_state

Ownership state.

One of LOCKED_OWNER, LOCKED_UPDATE, UNLOCKED_ANY, UNLOCKED_ENDORSED, LOCKED_NONE.

Definition at line 84 of file boot_data.h.

◆ ownership_transfers

uint32_t boot_data::ownership_transfers

Number of ownership transfers this chip has had.

Definition at line 88 of file boot_data.h.

◆ padding

uint32_t boot_data::padding[4]

Padding for future enhancements and to make the size of boot_data_t a power of two.

Definition at line 94 of file boot_data.h.

◆ primary_bl0_slot

uint32_t boot_data::primary_bl0_slot

The BL0 slot that is prioritized during boot.

Definition at line 70 of file boot_data.h.

◆ version

uint32_t boot_data::version

Boot data format version.

This field must be set to the latest version for new entries but is not enforced during reads for forward compatibility in ROM and backward compatibility in ROM_EXT.

Definition at line 51 of file boot_data.h.