TF-M Reference Manual  1.2.0
TrustedFirmware-M
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
tfm_boot_status.h File Reference
#include <stdint.h>
#include <stddef.h>
Include dependency graph for tfm_boot_status.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  shared_data_tlv_header
 
struct  shared_data_tlv_entry
 
struct  tfm_boot_data
 Store the data for the runtime SW. More...
 

Macros

#define TLV_MAJOR_CORE   0x0
 
#define TLV_MAJOR_IAS   0x1
 
#define SW_GENERAL   0x00
 
#define SW_BL2   0x01
 
#define SW_PROT   0x02
 
#define SW_AROT   0x03
 
#define SW_SPE   0x04
 
#define SW_NSPE   0x05
 
#define SW_S_NS   0x06
 
#define SW_MAX   0x07
 
#define SW_VERSION   0x00
 
#define SW_SIGNER_ID   0x01
 
#define SW_TYPE   0x03
 
#define SW_MEASURE_VALUE   0x08
 
#define SW_MEASURE_TYPE   0x09
 
#define SW_BOOT_RECORD   0x3F
 
#define BOOT_SEED   0x00
 
#define HW_VERSION   0x01
 
#define SECURITY_LIFECYCLE   0x02
 
#define TLV_MINOR_IAS_BOOT_SEED   ((SW_GENERAL << 6) | BOOT_SEED)
 
#define TLV_MINOR_IAS_HW_VERSION   ((SW_GENERAL << 6) | HW_VERSION)
 
#define TLV_MINOR_IAS_SLC   ((SW_GENERAL << 6) | SECURITY_LIFECYCLE)
 
#define TLV_MINOR_IAS_BL2_MEASURE_VALUE   ((SW_BL2 << 6) | SW_MEASURE_VALUE)
 
#define TLV_MINOR_IAS_BL2_MEASURE_TYPE   ((SW_BL2 << 6) | SW_MEASURE_TYPE)
 
#define TLV_MINOR_IAS_BL2_VERSION   ((SW_BL2 << 6) | SW_VERSION)
 
#define TLV_MINOR_IAS_BL2_SIGNER_ID   ((SW_BL2 << 6) | SW_SIGNER_ID)
 
#define TLV_MINOR_IAS_BL2_TYPE   ((SW_BL2 << 6) | SW_TYPE)
 
#define TLV_MINOR_IAS_PROT_MEASURE_VALUE   ((SW_PROT << 6) | SW_MEASURE_VALUE)
 
#define TLV_MINOR_IAS_PROT_MEASURE_TYPE   ((SW_PROT << 6) | SW_MEASURE_TYPE)
 
#define TLV_MINOR_IAS_PROT_VERSION   ((SW_PROT << 6) | SW_VERSION)
 
#define TLV_MINOR_IAS_PROT_SIGNER_ID   ((SW_PROT << 6) | SW_SIGNER_ID)
 
#define TLV_MINOR_IAS_PROT_TYPE   ((SW_PROT << 6) | SW_TYPE)
 
#define TLV_MINOR_IAS_AROT_MEASURE_VALUE   ((SW_AROT << 6) | SW_MEASURE_VALUE)
 
#define TLV_MINOR_IAS_AROT_MEASURE_TYPE   ((SW_AROT << 6) | SW_MEASURE_TYPE)
 
#define TLV_MINOR_IAS_AROT_VERSION   ((SW_AROT << 6) | SW_VERSION)
 
#define TLV_MINOR_IAS_AROT_SIGNER_ID   ((SW_AROT << 6) | SW_SIGNER_ID)
 
#define TLV_MINOR_IAS_AROT_TYPE   ((SW_AROT << 6) | SW_TYPE)
 
#define TLV_MINOR_IAS_NSPE_MEASURE_VALUE   ((SW_NSPE << 6) | SW_MEASURE_VALUE)
 
#define TLV_MINOR_IAS_NSPE_MEASURE_TYPE   ((SW_NSPE << 6) | SW_MEASURE_TYPE)
 
#define TLV_MINOR_IAS_NSPE_VERSION   ((SW_NSPE << 6) | SW_VERSION)
 
#define TLV_MINOR_IAS_NSPE_SIGNER_ID   ((SW_NSPE << 6) | SW_SIGNER_ID)
 
#define TLV_MINOR_IAS_NSPE_TYPE   ((SW_NSPE << 6) | SW_TYPE)
 
#define TLV_MINOR_IAS_SPE_MEASURE_VALUE   ((SW_SPE << 6) | SW_MEASURE_VALUE)
 
#define TLV_MINOR_IAS_SPE_MEASURE_TYPE   ((SW_SPE << 6) | SW_MEASURE_TYPE)
 
#define TLV_MINOR_IAS_SPE_VERSION   ((SW_SPE << 6) | SW_VERSION)
 
#define TLV_MINOR_IAS_SPE_SIGNER_ID   ((SW_SPE << 6) | SW_SIGNER_ID)
 
#define TLV_MINOR_IAS_SPE_TYPE   ((SW_SPE << 6) | SW_TYPE)
 
#define TLV_MINOR_IAS_S_NS_MEASURE_VALUE   ((SW_S_NS << 6) | SW_MEASURE_VALUE)
 
#define TLV_MINOR_IAS_S_NS_MEASURE_TYPE   ((SW_S_NS << 6) | SW_MEASURE_TYPE)
 
#define TLV_MINOR_IAS_S_NS_VERSION   ((SW_S_NS << 6) | SW_VERSION)
 
#define TLV_MINOR_IAS_S_NS_SIGNER_ID   ((SW_S_NS << 6) | SW_SIGNER_ID)
 
#define TLV_MINOR_IAS_S_NS_TYPE   ((SW_S_NS << 6) | SW_TYPE)
 
#define MAJOR_MASK   0xF /* 4 bit */
 
#define MAJOR_POS   12 /* 12 bit */
 
#define MINOR_MASK   0xFFF /* 12 bit */
 
#define SET_TLV_TYPE(major, minor)   ((((major) & MAJOR_MASK) << MAJOR_POS) | ((minor) & MINOR_MASK))
 
#define GET_MAJOR(tlv_type)   ((tlv_type) >> MAJOR_POS)
 
#define GET_MINOR(tlv_type)   ((tlv_type) & MINOR_MASK)
 
#define MODULE_POS   6 /* 6 bit */
 
#define CLAIM_MASK   0x3F /* 6 bit */
 
#define MEASUREMENT_CLAIM_POS   3 /* 3 bit */
 
#define GET_IAS_MODULE(tlv_type)   (GET_MINOR(tlv_type) >> MODULE_POS)
 
#define GET_IAS_CLAIM(tlv_type)   (GET_MINOR(tlv_type) & CLAIM_MASK)
 
#define SET_IAS_MINOR(sw_module, claim)   (((sw_module) << 6) | (claim))
 
#define GET_IAS_MEASUREMENT_CLAIM(ias_claim)
 
#define SHARED_DATA_TLV_INFO_MAGIC   0x2016
 
#define SHARED_DATA_HEADER_SIZE   sizeof(struct shared_data_tlv_header)
 
#define SHARED_DATA_ENTRY_HEADER_SIZE   sizeof(struct shared_data_tlv_entry)
 
#define SHARED_DATA_ENTRY_SIZE(size)   (size + SHARED_DATA_ENTRY_HEADER_SIZE)
 

Macro Definition Documentation

#define BOOT_SEED   0x00

Definition at line 91 of file tfm_boot_status.h.

#define CLAIM_MASK   0x3F /* 6 bit */

Definition at line 154 of file tfm_boot_status.h.

#define GET_IAS_CLAIM (   tlv_type)    (GET_MINOR(tlv_type) & CLAIM_MASK)

Definition at line 158 of file tfm_boot_status.h.

#define GET_IAS_MEASUREMENT_CLAIM (   ias_claim)
Value:
((ias_claim) >> \
#define MEASUREMENT_CLAIM_POS

Definition at line 161 of file tfm_boot_status.h.

#define GET_IAS_MODULE (   tlv_type)    (GET_MINOR(tlv_type) >> MODULE_POS)

Definition at line 157 of file tfm_boot_status.h.

#define GET_MAJOR (   tlv_type)    ((tlv_type) >> MAJOR_POS)

Definition at line 149 of file tfm_boot_status.h.

#define GET_MINOR (   tlv_type)    ((tlv_type) & MINOR_MASK)

Definition at line 150 of file tfm_boot_status.h.

#define HW_VERSION   0x01

Definition at line 92 of file tfm_boot_status.h.

#define MAJOR_MASK   0xF /* 4 bit */

Definition at line 143 of file tfm_boot_status.h.

#define MAJOR_POS   12 /* 12 bit */

Definition at line 144 of file tfm_boot_status.h.

#define MEASUREMENT_CLAIM_POS   3 /* 3 bit */

Definition at line 155 of file tfm_boot_status.h.

#define MINOR_MASK   0xFFF /* 12 bit */

Definition at line 145 of file tfm_boot_status.h.

#define MODULE_POS   6 /* 6 bit */

Definition at line 153 of file tfm_boot_status.h.

#define SECURITY_LIFECYCLE   0x02

Definition at line 93 of file tfm_boot_status.h.

#define SET_IAS_MINOR (   sw_module,
  claim 
)    (((sw_module) << 6) | (claim))

Definition at line 159 of file tfm_boot_status.h.

#define SET_TLV_TYPE (   major,
  minor 
)    ((((major) & MAJOR_MASK) << MAJOR_POS) | ((minor) & MINOR_MASK))

Definition at line 147 of file tfm_boot_status.h.

#define SHARED_DATA_ENTRY_HEADER_SIZE   sizeof(struct shared_data_tlv_entry)

Definition at line 205 of file tfm_boot_status.h.

#define SHARED_DATA_ENTRY_SIZE (   size)    (size + SHARED_DATA_ENTRY_HEADER_SIZE)

Definition at line 206 of file tfm_boot_status.h.

#define SHARED_DATA_HEADER_SIZE   sizeof(struct shared_data_tlv_header)

Definition at line 179 of file tfm_boot_status.h.

#define SHARED_DATA_TLV_INFO_MAGIC   0x2016

Definition at line 165 of file tfm_boot_status.h.

#define SW_AROT   0x03

Definition at line 71 of file tfm_boot_status.h.

#define SW_BL2   0x01

Definition at line 69 of file tfm_boot_status.h.

#define SW_BOOT_RECORD   0x3F

Definition at line 86 of file tfm_boot_status.h.

#define SW_GENERAL   0x00

The shared data between boot loader and runtime SW is TLV encoded. The shared data is stored in a well known location in secure memory and this is a contract between boot loader and runtime SW.

The structure of shared data must be the following:

  • At the beginning there must be a header: struct shared_data_tlv_header This contains a magic number and a size field which covers the entire size of the shared data area including this header.
  • After the header there come the entries which are composed from an entry header structure: struct shared_data_tlv_entry and the data. In the entry header is a type field (tly_type) which identify the consumer of the entry in the runtime SW and specify the subtype of that data item. There is a size field (tlv_len) which covers the size of the entry header and the data. After this structure comes the actual data.
  • Arbitrary number and size of data entry can be in the shared memory area.

This table gives of overview about the tlv_type field in the entry header. The tlv_type always composed from a major and minor number. Major number identifies the addressee in runtime SW, who should process the data entry. Minor number used to encode more info about the data entry. The actual definition of minor number could change per major number. In case of boot status data, which is going to be processed by initial attestation service the minor number is split further to two part: sw_module and claim. The sw_module identifies the SW component in the system which the data item belongs to and the claim part identifies the exact type of the data.

|------------------------------------—| | tlv_type (16) | |------------------------------------—| | tlv_major(4)| tlv_minor(12) | |------------------------------------—| | MAJOR_IAS | sw_module(6) | claim(6) | |------------------------------------—| | MAJOR_CORE | TBD | |------------------------------------—|

Definition at line 68 of file tfm_boot_status.h.

#define SW_MAX   0x07

Definition at line 75 of file tfm_boot_status.h.

#define SW_MEASURE_TYPE   0x09

Definition at line 85 of file tfm_boot_status.h.

#define SW_MEASURE_VALUE   0x08

Definition at line 84 of file tfm_boot_status.h.

#define SW_NSPE   0x05

Definition at line 73 of file tfm_boot_status.h.

#define SW_PROT   0x02

Definition at line 70 of file tfm_boot_status.h.

#define SW_S_NS   0x06

Definition at line 74 of file tfm_boot_status.h.

#define SW_SIGNER_ID   0x01

Definition at line 80 of file tfm_boot_status.h.

#define SW_SPE   0x04

Definition at line 72 of file tfm_boot_status.h.

#define SW_TYPE   0x03

Definition at line 82 of file tfm_boot_status.h.

#define SW_VERSION   0x00

Definition at line 79 of file tfm_boot_status.h.

#define TLV_MAJOR_CORE   0x0

Definition at line 22 of file tfm_boot_status.h.

#define TLV_MAJOR_IAS   0x1

Definition at line 23 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_AROT_MEASURE_TYPE   ((SW_AROT << 6) | SW_MEASURE_TYPE)

Definition at line 116 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_AROT_MEASURE_VALUE   ((SW_AROT << 6) | SW_MEASURE_VALUE)

Definition at line 115 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_AROT_SIGNER_ID   ((SW_AROT << 6) | SW_SIGNER_ID)

Definition at line 118 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_AROT_TYPE   ((SW_AROT << 6) | SW_TYPE)

Definition at line 119 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_AROT_VERSION   ((SW_AROT << 6) | SW_VERSION)

Definition at line 117 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_BL2_MEASURE_TYPE   ((SW_BL2 << 6) | SW_MEASURE_TYPE)

Definition at line 102 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_BL2_MEASURE_VALUE   ((SW_BL2 << 6) | SW_MEASURE_VALUE)

Definition at line 101 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_BL2_SIGNER_ID   ((SW_BL2 << 6) | SW_SIGNER_ID)

Definition at line 104 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_BL2_TYPE   ((SW_BL2 << 6) | SW_TYPE)

Definition at line 105 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_BL2_VERSION   ((SW_BL2 << 6) | SW_VERSION)

Definition at line 103 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_BOOT_SEED   ((SW_GENERAL << 6) | BOOT_SEED)

Definition at line 96 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_HW_VERSION   ((SW_GENERAL << 6) | HW_VERSION)

Definition at line 97 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_NSPE_MEASURE_TYPE   ((SW_NSPE << 6) | SW_MEASURE_TYPE)

Definition at line 123 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_NSPE_MEASURE_VALUE   ((SW_NSPE << 6) | SW_MEASURE_VALUE)

Definition at line 122 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_NSPE_SIGNER_ID   ((SW_NSPE << 6) | SW_SIGNER_ID)

Definition at line 125 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_NSPE_TYPE   ((SW_NSPE << 6) | SW_TYPE)

Definition at line 126 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_NSPE_VERSION   ((SW_NSPE << 6) | SW_VERSION)

Definition at line 124 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_PROT_MEASURE_TYPE   ((SW_PROT << 6) | SW_MEASURE_TYPE)

Definition at line 109 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_PROT_MEASURE_VALUE   ((SW_PROT << 6) | SW_MEASURE_VALUE)

Definition at line 108 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_PROT_SIGNER_ID   ((SW_PROT << 6) | SW_SIGNER_ID)

Definition at line 111 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_PROT_TYPE   ((SW_PROT << 6) | SW_TYPE)

Definition at line 112 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_PROT_VERSION   ((SW_PROT << 6) | SW_VERSION)

Definition at line 110 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_S_NS_MEASURE_TYPE   ((SW_S_NS << 6) | SW_MEASURE_TYPE)

Definition at line 137 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_S_NS_MEASURE_VALUE   ((SW_S_NS << 6) | SW_MEASURE_VALUE)

Definition at line 136 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_S_NS_SIGNER_ID   ((SW_S_NS << 6) | SW_SIGNER_ID)

Definition at line 139 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_S_NS_TYPE   ((SW_S_NS << 6) | SW_TYPE)

Definition at line 140 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_S_NS_VERSION   ((SW_S_NS << 6) | SW_VERSION)

Definition at line 138 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_SLC   ((SW_GENERAL << 6) | SECURITY_LIFECYCLE)

Definition at line 98 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_SPE_MEASURE_TYPE   ((SW_SPE << 6) | SW_MEASURE_TYPE)

Definition at line 130 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_SPE_MEASURE_VALUE   ((SW_SPE << 6) | SW_MEASURE_VALUE)

Definition at line 129 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_SPE_SIGNER_ID   ((SW_SPE << 6) | SW_SIGNER_ID)

Definition at line 132 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_SPE_TYPE   ((SW_SPE << 6) | SW_TYPE)

Definition at line 133 of file tfm_boot_status.h.

#define TLV_MINOR_IAS_SPE_VERSION   ((SW_SPE << 6) | SW_VERSION)

Definition at line 131 of file tfm_boot_status.h.