libtropic
C library for TROPIC01 chip
|
Shared definitions and functions commonly used by more libtropic's layers. More...
#include "libtropic_macros.h"
#include "stdint.h"
#include "tropic01_application_co.h"
#include "tropic01_bootloader_co.h"
Data Structures | |
struct | lt_l3_gen_frame_t |
Generic L3 command and result frame. More... | |
struct | lt_l2_state_t |
struct | lt_l3_state_t |
struct | lt_handle_t |
struct | lt_cert_store_t |
Certificate store contents. More... | |
struct | lt_ser_num_t |
Structure used to parse content of CHIP_ID field. More... | |
struct | lt_chip_id_t |
Data in this struct comes from BP (batch package) yml file. CHIP_INFO is read into this struct. More... | |
struct | header_boot_v1_t |
When in MAINTENANCE mode, it is possible to read firmware header from a firmware bank. Returned data differs based on bootloader version. This header layout is returned by bootloader version v1.0.1. More... | |
struct | header_boot_v2_t |
When in MAINTENANCE mode, it is possible to read firmware header from a firmware bank. Returned data differs based on bootloader version. This header layout is returned by bootloader version v1.0.1. More... | |
struct | session_state_t |
Structure used to store variables used during establishment of a secure session. More... | |
struct | lt_config_obj_desc_t |
This structure is used in this example to simplify looping through all config addresses and printing out them into debug. More... | |
struct | lt_config_t |
Structure to hold all configuration objects. More... | |
Macros | |
#define | LT_STATIC static |
#define | SESSION_ON 0xA5A55A5A |
This particular value means that secure session was successfully established and it is currently ON. | |
#define | SESSION_OFF 0x0 |
This particular value means that secure session is currently OFF. | |
#define | L3_ID_SIZE 1u |
Size of l3 ID field. | |
#define | L3_TAG_SIZE 16u |
Size of l3 TAG field. | |
#define | L3_IV_SIZE 12u |
Size of IV. | |
#define | L3_RES_SIZE_SIZE 2 |
Size of RES_SIZE field. | |
#define | L3_CMD_SIZE_SIZE 2 |
Size of CMD_SIZE field. | |
#define | L3_CMD_ID_SIZE (1) |
Size of l3 CMD_ID field. | |
#define | L3_CMD_DATA_SIZE_MAX (4111) |
Maximal size of l3 RES/RSP DATA field. | |
#define | L2_CHUNK_MAX_DATA_SIZE 252u |
Maximal size of data field in one L2 transfer. | |
#define | L2_MAX_FRAME_SIZE (1 + 1 + L2_CHUNK_MAX_DATA_SIZE + 2) |
Maximal size of one l2 frame. | |
#define | LT_L1_LEN_MIN 1 |
Maximal number of data bytes in one L1 transfer. | |
#define | LT_L1_LEN_MAX (1 + 1 + 1 + L2_CHUNK_MAX_DATA_SIZE + 2) |
Maximal number of data bytes in one L1 transfer. | |
#define | L3_CYPHERTEXT_MAX_SIZE (L3_CMD_ID_SIZE + L3_CMD_DATA_SIZE_MAX) |
Maximum size of l3 ciphertext (or decrypted l3 packet) | |
#define | L3_PACKET_MAX_SIZE (L3_RES_SIZE_SIZE + L3_CYPHERTEXT_MAX_SIZE + 13 + L3_TAG_SIZE) |
Max size of one unit of transport on l3 layer. More... | |
#define | LT_SIZE_OF_L3_BUFF L3_PACKET_MAX_SIZE |
#define | LT_TROPIC01_REBOOT_DELAY_MS 250 |
#define | LT_L2_GET_INFO_REQ_CERT_SIZE_TOTAL 3840 |
Maximal size of TROPIC01's certificate. | |
#define | LT_L2_GET_INFO_REQ_CERT_SIZE_SINGLE 700 |
#define | LT_CERT_STORE_VERSION 1 |
#define | LT_NUM_CERTIFICATES 4 |
#define | LT_L2_GET_INFO_CHIP_ID_SIZE 128 |
Maximal size of returned CHIP ID. | |
#define | CHIP_PKG_BARE_SILICON_ID 0x8000 |
Package type ID for bare silicon. | |
#define | CHIP_PKG_QFN32_ID 0x80AA |
Package type ID for QFN32. | |
#define | FAB_ID_TROPIC_SQUARE_LAB 0xF00 |
#define | FAB_ID_EPS_BRNO 0x001 |
#define | LT_L2_GET_INFO_RISCV_FW_SIZE 4 |
Maximal size of returned RISCV fw version. | |
#define | LT_L2_GET_INFO_SPECT_FW_SIZE 4 |
Maximal size of returned SPECT fw version. | |
#define | LT_L2_GET_INFO_FW_HEADER_SIZE_BOOT_V1 20 |
Maximal size of returned fw header. | |
#define | LT_L2_GET_INFO_FW_HEADER_SIZE_BOOT_V2 52 |
#define | LT_L2_GET_INFO_FW_HEADER_SIZE_BOOT_V2_EMPTY_BANK 0 |
#define | LT_L2_GET_INFO_FW_HEADER_SIZE LT_L2_GET_INFO_FW_HEADER_SIZE_BOOT_V2 |
Maximal size of returned fw header. | |
#define | LT_L2_SLEEP_KIND_SLEEP 0x05 |
Basic sleep mode. | |
#define | LT_L2_SLEEP_KIND_DEEP_SLEEP 0x0a |
Deep sleep mode. | |
#define | LT_MODE_APP 0x01 |
Reboot TROPIC01 chip. | |
#define | LT_MODE_MAINTENANCE 0x03 |
Reboot TROPIC01 chip and stay in maintenance mode. | |
#define | GET_LOG_MAX_MSG_LEN 255 |
Maximal length of TROPIC01's log message. | |
#define | PING_LEN_MAX 4096 |
Maximal length of Ping command message. | |
#define | R_MEM_DATA_SIZE_MIN (1) |
Minimal size of one data slot in bytes. | |
#define | R_MEM_DATA_SIZE_MAX (444) |
Maximal size of one data slot in bytes. | |
#define | R_MEM_DATA_SLOT_MAX (511) |
Index of last data slot. TROPIC01 contains 512 slots indexed 0-511. | |
#define | RANDOM_VALUE_GET_LEN_MAX 255 |
Maximum number of random bytes requested at once. | |
#define | MAC_AND_DESTROY_DATA_SIZE 32u |
Maximal size of returned MAC-and-Destroy data. | |
#define | MACANDD_ROUNDS_MAX 128 |
Maximal number of Mac And Destroy tries possible with TROPIC01. | |
#define | SERIAL_CODE_SIZE 32u |
Maximal size of returned serial code. | |
#define | TO_PAIRING_KEY_SH0(x) ((x) << 0) |
Macro to control which session can access command targeting content of pairing key SH0. | |
#define | TO_PAIRING_KEY_SH1(x) ((x) << 8) |
Macro to control which session can access command targeting content of pairing key SH1. | |
#define | TO_PAIRING_KEY_SH2(x) ((x) << 16) |
Macro to control which session can access command targeting content of pairing key SH2. | |
#define | TO_PAIRING_KEY_SH3(x) ((x) << 24) |
Macro to control which session can access command targeting content of pairing key SH3. | |
#define | TO_LT_MCOUNTER_0_3(x) ((x) << 0) |
Macro to control which session can access command targeting counter 0-3. | |
#define | TO_LT_MCOUNTER_4_7(x) ((x) << 8) |
Macro to control which session can access command targeting counter 4-7. | |
#define | TO_LT_MCOUNTER_8_11(x) ((x) << 16) |
Macro to control which session can access command targeting counter 8-11. | |
#define | TO_LT_MCOUNTER_12_15(x) ((x) << 24) |
Macro to control which session can access command targeting counter 12-15. | |
#define | TO_ECC_KEY_SLOT_0_7(x) ((x) << 0) |
Macro to control which session can access command targeting ECC_SLOT 0-7. | |
#define | TO_ECC_KEY_SLOT_8_15(x) ((x) << 8) |
Macro to control which session can access command targeting ECC_SLOT 8-15. | |
#define | TO_ECC_KEY_SLOT_16_23(x) ((x) << 16) |
Macro to control which session can access command targeting ECC_SLOT 16-23. | |
#define | TO_ECC_KEY_SLOT_24_31(x) ((x) << 24) |
Macro to control which session can access command targeting ECC_SLOT 24-31. | |
#define | TO_MACANDD_SLOT_0_31(x) ((x) << APPLICATION_CO_CFG_UAP_MAC_AND_DESTROY_MACANDD_0_31_POS) |
Macro to control which session can access command targeting MACANDD slot 0-31. | |
#define | TO_MACANDD_SLOT_32_63(x) ((x) << APPLICATION_CO_CFG_UAP_MAC_AND_DESTROY_MACANDD_32_63_POS) |
Macro to control which session can access command targeting MACANDD slot 32-63. | |
#define | TO_MACANDD_SLOT_64_95(x) ((x) << APPLICATION_CO_CFG_UAP_MAC_AND_DESTROY_MACANDD_64_95_POS) |
Macro to control which session can access command targeting MACANDD slot 64-95. | |
#define | TO_MACANDD_SLOT_96_127(x) ((x) << APPLICATION_CO_CFG_UAP_MAC_AND_DESTROY_MACANDD_96_127_POS) |
Macro to control which session can access command targeting MACANDD slot 96-127. | |
#define | SESSION_SH0_HAS_ACCESS (uint8_t)0x01 |
Macro to control if session SH0 has access to a specific command. | |
#define | SESSION_SH1_HAS_ACCESS (uint8_t)0x02 |
Macro to control if session SH1 has access to a specific command. | |
#define | SESSION_SH2_HAS_ACCESS (uint8_t)0x04 |
Macro to control if session SH2 has access to a specific command. | |
#define | SESSION_SH3_HAS_ACCESS (uint8_t)0x08 |
Macro to control if session SH3 has access to a specific command. | |
#define | LT_CONFIG_OBJ_CNT 27 |
Number of configuration objects in lt_config_t. | |
Typedefs | |
typedef struct lt_l3_gen_frame_t | lt_l3_gen_frame_t |
Generic L3 command and result frame. | |
typedef struct lt_l2_state_t | lt_l2_state_t |
typedef struct lt_l3_state_t | lt_l3_state_t |
typedef struct lt_handle_t | lt_handle_t |
typedef enum lt_ret_t | lt_ret_t |
Enum return type. More... | |
typedef enum lt_cert_kind_t | lt_cert_kind_t |
typedef struct lt_cert_store_t | lt_cert_store_t |
Certificate store contents. | |
typedef struct lt_ser_num_t | lt_ser_num_t |
Structure used to parse content of CHIP_ID field. More... | |
typedef struct lt_chip_id_t | lt_chip_id_t |
Data in this struct comes from BP (batch package) yml file. CHIP_INFO is read into this struct. | |
typedef enum bank_id_t | bank_id_t |
BANK ID. | |
typedef struct header_boot_v1_t | header_boot_v1_t |
When in MAINTENANCE mode, it is possible to read firmware header from a firmware bank. Returned data differs based on bootloader version. This header layout is returned by bootloader version v1.0.1. | |
typedef struct header_boot_v2_t | header_boot_v2_t |
When in MAINTENANCE mode, it is possible to read firmware header from a firmware bank. Returned data differs based on bootloader version. This header layout is returned by bootloader version v1.0.1. | |
typedef enum pkey_index_t | pkey_index_t |
Pairing key indexes corresponds to S_HiPub. | |
typedef struct session_state_t | session_state_t |
Structure used to store variables used during establishment of a secure session. | |
typedef enum pairing_key_slot_t | pairing_key_slot_t |
ECC key slot indexes. | |
typedef enum CONFIGURATION_OBJECTS_REGS | CONFIGURATION_OBJECTS_REGS |
CONFIGURATION_OBJECTS_REGISTERS memory map. | |
typedef enum CONFIGURATION_OBJECTS_REGS_IDX | CONFIGURATION_OBJECTS_REGS_IDX |
CONFIGURATION_OBJECTS_REGISTERS index map to lt_config_t. More... | |
typedef enum ecc_slot_t | ecc_slot_t |
ECC key slot indexes. | |
typedef enum lt_ecc_curve_type_t | lt_ecc_curve_type_t |
ECC key type. | |
typedef enum ecc_key_origin_t | ecc_key_origin_t |
ECC key origin. | |
typedef enum lt_mcounter_index_t | lt_mcounter_index_t |
Use to choose one from 16 counters. | |
typedef enum mac_and_destroy_slot_t | mac_and_destroy_slot_t |
Mac-and-Destroy slot indexes. | |
typedef struct lt_config_obj_desc_t | lt_config_obj_desc_t |
This structure is used in this example to simplify looping through all config addresses and printing out them into debug. | |
typedef struct lt_config_t | lt_config_t |
Structure to hold all configuration objects. | |
Enumerations | |
enum | lt_ret_t { LT_OK = 0 , LT_FAIL = 1 , LT_HOST_NO_SESSION = 2 , LT_PARAM_ERR = 3 , LT_CRYPTO_ERR = 4 , LT_L1_SPI_ERROR = 5 , LT_L1_DATA_LEN_ERROR = 6 , LT_L1_CHIP_STARTUP_MODE = 7 , LT_L1_CHIP_ALARM_MODE = 8 , LT_L1_CHIP_BUSY = 9 , LT_L1_INT_TIMEOUT = 10 , LT_L3_R_MEM_DATA_READ_SLOT_EMPTY = 11 , LT_L3_R_MEM_DATA_WRITE_WRITE_FAIL = 12 , LT_L3_R_MEM_DATA_WRITE_SLOT_EXPIRED = 13 , LT_L3_ECC_INVALID_KEY = 14 , LT_L3_MCOUNTER_UPDATE_UPDATE_ERR = 15 , LT_L3_COUNTER_INVALID = 16 , LT_L3_PAIRING_KEY_EMPTY = 17 , LT_L3_PAIRING_KEY_INVALID = 18 , LT_L3_OK = 19 , LT_L3_FAIL = 20 , LT_L3_UNAUTHORIZED = 21 , LT_L3_INVALID_CMD = 22 , LT_L3_DATA_LEN_ERROR = 23 , LT_L2_IN_CRC_ERR = 24 , LT_L2_REQ_CONT = 25 , LT_L2_RES_CONT = 26 , LT_L2_RESP_DISABLED = 27 , LT_L2_HSK_ERR = 28 , LT_L2_NO_SESSION = 29 , LT_L2_TAG_ERR = 30 , LT_L2_CRC_ERR = 31 , LT_L2_GEN_ERR = 32 , LT_L2_NO_RESP = 33 , LT_L2_UNKNOWN_REQ = 34 , LT_L2_STATUS_NOT_RECOGNIZED = 35 , LT_L2_DATA_LEN_ERROR = 36 , LT_CERT_STORE_INVALID = 37 , LT_CERT_UNSUPPORTED = 38 , LT_CERT_ITEM_NOT_FOUND = 39 , LT_NONCE_OVERFLOW = 40 , LT_RET_T_LAST_VALUE = 41 } |
Enum return type. More... | |
enum | lt_cert_kind_t { LT_CERT_KIND_DEVICE = 0 , LT_CERT_KIND_XXXX = 1 , LT_CERT_KIND_TROPIC01 = 2 , LT_CERT_KIND_TROPIC_ROOT = 3 } |
enum | bank_id_t { FW_BANK_FW1 = 1 , FW_BANK_FW2 = 2 , FW_BANK_SPECT1 = 17 , FW_BANK_SPECT2 = 18 } |
BANK ID. | |
enum | pkey_index_t { PAIRING_KEY_SLOT_INDEX_0 , PAIRING_KEY_SLOT_INDEX_1 , PAIRING_KEY_SLOT_INDEX_2 , PAIRING_KEY_SLOT_INDEX_3 } |
Pairing key indexes corresponds to S_HiPub. | |
enum | pairing_key_slot_t { SH0PUB = 0 , SH1PUB , SH2PUB , SH3PUB } |
ECC key slot indexes. | |
enum | CONFIGURATION_OBJECTS_REGS { CONFIGURATION_OBJECTS_CFG_START_UP_ADDR = BOOTLOADER_CO_CFG_START_UP_ADDR , CONFIGURATION_OBJECTS_CFG_SENSORS_ADDR = BOOTLOADER_CO_CFG_SENSORS_ADDR , CONFIGURATION_OBJECTS_CFG_DEBUG_ADDR = BOOTLOADER_CO_CFG_DEBUG_ADDR , CONFIGURATION_OBJECTS_CFG_GPO_ADDR = APPLICATION_CO_CFG_GPO_ADDR , CONFIGURATION_OBJECTS_CFG_SLEEP_MODE_ADDR = APPLICATION_CO_CFG_SLEEP_MODE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_PAIRING_KEY_WRITE_ADDR = APPLICATION_CO_CFG_UAP_PAIRING_KEY_WRITE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_PAIRING_KEY_READ_ADDR = APPLICATION_CO_CFG_UAP_PAIRING_KEY_READ_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_PAIRING_KEY_INVALIDATE_ADDR = APPLICATION_CO_CFG_UAP_PAIRING_KEY_INVALIDATE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_R_CONFIG_WRITE_ERASE_ADDR = APPLICATION_CO_CFG_UAP_R_CONFIG_WRITE_ERASE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_R_CONFIG_READ_ADDR = APPLICATION_CO_CFG_UAP_R_CONFIG_READ_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_I_CONFIG_WRITE_ADDR = APPLICATION_CO_CFG_UAP_I_CONFIG_WRITE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_I_CONFIG_READ_ADDR = APPLICATION_CO_CFG_UAP_I_CONFIG_READ_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_PING_ADDR = APPLICATION_CO_CFG_UAP_PING_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_R_MEM_DATA_WRITE_ADDR = APPLICATION_CO_CFG_UAP_R_MEM_DATA_WRITE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_R_MEM_DATA_READ_ADDR = APPLICATION_CO_CFG_UAP_R_MEM_DATA_READ_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_R_MEM_DATA_ERASE_ADDR = APPLICATION_CO_CFG_UAP_R_MEM_DATA_ERASE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_RANDOM_VALUE_GET_ADDR = APPLICATION_CO_CFG_UAP_RANDOM_VALUE_GET_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_GENERATE_ADDR = APPLICATION_CO_CFG_UAP_ECC_KEY_GENERATE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_STORE_ADDR = APPLICATION_CO_CFG_UAP_ECC_KEY_STORE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_READ_ADDR = APPLICATION_CO_CFG_UAP_ECC_KEY_READ_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_ERASE_ADDR = APPLICATION_CO_CFG_UAP_ECC_KEY_ERASE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_ECDSA_SIGN_ADDR = APPLICATION_CO_CFG_UAP_ECDSA_SIGN_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_EDDSA_SIGN_ADDR = APPLICATION_CO_CFG_UAP_EDDSA_SIGN_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_MCOUNTER_INIT_ADDR = APPLICATION_CO_CFG_UAP_MCOUNTER_INIT_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_MCOUNTER_GET_ADDR = APPLICATION_CO_CFG_UAP_MCOUNTER_GET_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_MCOUNTER_UPDATE_ADDR = APPLICATION_CO_CFG_UAP_MCOUNTER_UPDATE_ADDR , CONFIGURATION_OBJECTS_CFG_UAP_MAC_AND_DESTROY_ADDR = APPLICATION_CO_CFG_UAP_MAC_AND_DESTROY_ADDR } |
CONFIGURATION_OBJECTS_REGISTERS memory map. | |
enum | CONFIGURATION_OBJECTS_REGS_IDX { CONFIGURATION_OBJECTS_CFG_START_UP_IDX = 0 , CONFIGURATION_OBJECTS_CFG_SENSORS_IDX , CONFIGURATION_OBJECTS_CFG_DEBUG_IDX , CONFIGURATION_OBJECTS_CFG_GPO_IDX , CONFIGURATION_OBJECTS_CFG_SLEEP_MODE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_PAIRING_KEY_WRITE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_PAIRING_KEY_READ_IDX , CONFIGURATION_OBJECTS_CFG_UAP_PAIRING_KEY_INVALIDATE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_R_CONFIG_WRITE_ERASE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_R_CONFIG_READ_IDX , CONFIGURATION_OBJECTS_CFG_UAP_I_CONFIG_WRITE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_I_CONFIG_READ_IDX , CONFIGURATION_OBJECTS_CFG_UAP_PING_IDX , CONFIGURATION_OBJECTS_CFG_UAP_R_MEM_DATA_WRITE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_R_MEM_DATA_READ_IDX , CONFIGURATION_OBJECTS_CFG_UAP_R_MEM_DATA_ERASE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_RANDOM_VALUE_GET_IDX , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_GENERATE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_STORE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_READ_IDX , CONFIGURATION_OBJECTS_CFG_UAP_ECC_KEY_ERASE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_ECDSA_SIGN_IDX , CONFIGURATION_OBJECTS_CFG_UAP_EDDSA_SIGN_IDX , CONFIGURATION_OBJECTS_CFG_UAP_MCOUNTER_INIT_IDX , CONFIGURATION_OBJECTS_CFG_UAP_MCOUNTER_GET_IDX , CONFIGURATION_OBJECTS_CFG_UAP_MCOUNTER_UPDATE_IDX , CONFIGURATION_OBJECTS_CFG_UAP_MAC_AND_DESTROY_IDX } |
CONFIGURATION_OBJECTS_REGISTERS index map to lt_config_t. More... | |
enum | ecc_slot_t { ECC_SLOT_0 = 0 , ECC_SLOT_1 , ECC_SLOT_2 , ECC_SLOT_3 , ECC_SLOT_4 , ECC_SLOT_5 , ECC_SLOT_6 , ECC_SLOT_7 , ECC_SLOT_8 , ECC_SLOT_9 , ECC_SLOT_10 , ECC_SLOT_11 , ECC_SLOT_12 , ECC_SLOT_13 , ECC_SLOT_14 , ECC_SLOT_15 , ECC_SLOT_16 , ECC_SLOT_17 , ECC_SLOT_18 , ECC_SLOT_19 , ECC_SLOT_20 , ECC_SLOT_21 , ECC_SLOT_22 , ECC_SLOT_23 , ECC_SLOT_24 , ECC_SLOT_25 , ECC_SLOT_26 , ECC_SLOT_27 , ECC_SLOT_28 , ECC_SLOT_29 , ECC_SLOT_30 , ECC_SLOT_31 } |
ECC key slot indexes. | |
enum | lt_ecc_curve_type_t { CURVE_P256 = 1 , CURVE_ED25519 } |
ECC key type. | |
enum | ecc_key_origin_t { CURVE_GENERATED = 1 , CURVE_STORED } |
ECC key origin. | |
enum | lt_mcounter_index_t { MCOUNTER_INDEX_0 = 0 , MCOUNTER_INDEX_1 = 1 , MCOUNTER_INDEX_2 = 2 , MCOUNTER_INDEX_3 = 3 , MCOUNTER_INDEX_4 = 4 , MCOUNTER_INDEX_5 = 5 , MCOUNTER_INDEX_6 = 6 , MCOUNTER_INDEX_7 = 7 , MCOUNTER_INDEX_8 = 8 , MCOUNTER_INDEX_9 = 9 , MCOUNTER_INDEX_10 = 10 , MCOUNTER_INDEX_11 = 11 , MCOUNTER_INDEX_12 = 12 , MCOUNTER_INDEX_13 = 13 , MCOUNTER_INDEX_14 = 14 , MCOUNTER_INDEX_15 = 15 } |
Use to choose one from 16 counters. | |
enum | mac_and_destroy_slot_t { MAC_AND_DESTROY_SLOT_0 = 0 , MAC_AND_DESTROY_SLOT_1 , MAC_AND_DESTROY_SLOT_2 , MAC_AND_DESTROY_SLOT_3 , MAC_AND_DESTROY_SLOT_4 , MAC_AND_DESTROY_SLOT_5 , MAC_AND_DESTROY_SLOT_6 , MAC_AND_DESTROY_SLOT_7 , MAC_AND_DESTROY_SLOT_8 , MAC_AND_DESTROY_SLOT_9 , MAC_AND_DESTROY_SLOT_10 , MAC_AND_DESTROY_SLOT_11 , MAC_AND_DESTROY_SLOT_12 , MAC_AND_DESTROY_SLOT_13 , MAC_AND_DESTROY_SLOT_14 , MAC_AND_DESTROY_SLOT_15 , MAC_AND_DESTROY_SLOT_16 , MAC_AND_DESTROY_SLOT_17 , MAC_AND_DESTROY_SLOT_18 , MAC_AND_DESTROY_SLOT_19 , MAC_AND_DESTROY_SLOT_20 , MAC_AND_DESTROY_SLOT_21 , MAC_AND_DESTROY_SLOT_22 , MAC_AND_DESTROY_SLOT_23 , MAC_AND_DESTROY_SLOT_24 , MAC_AND_DESTROY_SLOT_25 , MAC_AND_DESTROY_SLOT_26 , MAC_AND_DESTROY_SLOT_27 , MAC_AND_DESTROY_SLOT_28 , MAC_AND_DESTROY_SLOT_29 , MAC_AND_DESTROY_SLOT_30 , MAC_AND_DESTROY_SLOT_31 , MAC_AND_DESTROY_SLOT_32 , MAC_AND_DESTROY_SLOT_33 , MAC_AND_DESTROY_SLOT_34 , MAC_AND_DESTROY_SLOT_35 , MAC_AND_DESTROY_SLOT_36 , MAC_AND_DESTROY_SLOT_37 , MAC_AND_DESTROY_SLOT_38 , MAC_AND_DESTROY_SLOT_39 , MAC_AND_DESTROY_SLOT_40 , MAC_AND_DESTROY_SLOT_41 , MAC_AND_DESTROY_SLOT_42 , MAC_AND_DESTROY_SLOT_43 , MAC_AND_DESTROY_SLOT_44 , MAC_AND_DESTROY_SLOT_45 , MAC_AND_DESTROY_SLOT_46 , MAC_AND_DESTROY_SLOT_47 , MAC_AND_DESTROY_SLOT_48 , MAC_AND_DESTROY_SLOT_49 , MAC_AND_DESTROY_SLOT_50 , MAC_AND_DESTROY_SLOT_51 , MAC_AND_DESTROY_SLOT_52 , MAC_AND_DESTROY_SLOT_53 , MAC_AND_DESTROY_SLOT_54 , MAC_AND_DESTROY_SLOT_55 , MAC_AND_DESTROY_SLOT_56 , MAC_AND_DESTROY_SLOT_57 , MAC_AND_DESTROY_SLOT_58 , MAC_AND_DESTROY_SLOT_59 , MAC_AND_DESTROY_SLOT_60 , MAC_AND_DESTROY_SLOT_61 , MAC_AND_DESTROY_SLOT_62 , MAC_AND_DESTROY_SLOT_63 , MAC_AND_DESTROY_SLOT_64 , MAC_AND_DESTROY_SLOT_65 , MAC_AND_DESTROY_SLOT_66 , MAC_AND_DESTROY_SLOT_67 , MAC_AND_DESTROY_SLOT_68 , MAC_AND_DESTROY_SLOT_69 , MAC_AND_DESTROY_SLOT_70 , MAC_AND_DESTROY_SLOT_71 , MAC_AND_DESTROY_SLOT_72 , MAC_AND_DESTROY_SLOT_73 , MAC_AND_DESTROY_SLOT_74 , MAC_AND_DESTROY_SLOT_75 , MAC_AND_DESTROY_SLOT_76 , MAC_AND_DESTROY_SLOT_77 , MAC_AND_DESTROY_SLOT_78 , MAC_AND_DESTROY_SLOT_79 , MAC_AND_DESTROY_SLOT_80 , MAC_AND_DESTROY_SLOT_81 , MAC_AND_DESTROY_SLOT_82 , MAC_AND_DESTROY_SLOT_83 , MAC_AND_DESTROY_SLOT_84 , MAC_AND_DESTROY_SLOT_85 , MAC_AND_DESTROY_SLOT_86 , MAC_AND_DESTROY_SLOT_87 , MAC_AND_DESTROY_SLOT_88 , MAC_AND_DESTROY_SLOT_89 , MAC_AND_DESTROY_SLOT_90 , MAC_AND_DESTROY_SLOT_91 , MAC_AND_DESTROY_SLOT_92 , MAC_AND_DESTROY_SLOT_93 , MAC_AND_DESTROY_SLOT_94 , MAC_AND_DESTROY_SLOT_95 , MAC_AND_DESTROY_SLOT_96 , MAC_AND_DESTROY_SLOT_97 , MAC_AND_DESTROY_SLOT_98 , MAC_AND_DESTROY_SLOT_99 , MAC_AND_DESTROY_SLOT_100 , MAC_AND_DESTROY_SLOT_101 , MAC_AND_DESTROY_SLOT_102 , MAC_AND_DESTROY_SLOT_103 , MAC_AND_DESTROY_SLOT_104 , MAC_AND_DESTROY_SLOT_105 , MAC_AND_DESTROY_SLOT_106 , MAC_AND_DESTROY_SLOT_107 , MAC_AND_DESTROY_SLOT_108 , MAC_AND_DESTROY_SLOT_109 , MAC_AND_DESTROY_SLOT_110 , MAC_AND_DESTROY_SLOT_111 , MAC_AND_DESTROY_SLOT_112 , MAC_AND_DESTROY_SLOT_113 , MAC_AND_DESTROY_SLOT_114 , MAC_AND_DESTROY_SLOT_115 , MAC_AND_DESTROY_SLOT_116 , MAC_AND_DESTROY_SLOT_117 , MAC_AND_DESTROY_SLOT_118 , MAC_AND_DESTROY_SLOT_119 , MAC_AND_DESTROY_SLOT_120 , MAC_AND_DESTROY_SLOT_121 , MAC_AND_DESTROY_SLOT_122 , MAC_AND_DESTROY_SLOT_123 , MAC_AND_DESTROY_SLOT_124 , MAC_AND_DESTROY_SLOT_125 , MAC_AND_DESTROY_SLOT_126 , MAC_AND_DESTROY_SLOT_127 } |
Mac-and-Destroy slot indexes. | |
struct lt_l3_gen_frame_t |
Data Fields | ||
---|---|---|
uint16_t | cmd_size | RES_SIZE or CMD_SIZE value. |
uint8_t | data[L3_PACKET_MAX_SIZE - L3_RES_SIZE_SIZE] | Command or result data including ID and TAG. |
struct lt_l2_state_t |
Data Fields | ||
---|---|---|
void * | device | |
uint8_t | mode | |
uint8_t | buff[1+L2_MAX_FRAME_SIZE] |
struct lt_l3_state_t |
struct lt_handle_t |
This structure holds data related to one physical chip. Contains AESGCM contexts for encrypting and decrypting L3 commands, nonce and device void pointer, which can be used for passing arbitrary data.
Data Fields | ||
---|---|---|
lt_l2_state_t | l2 | |
lt_l3_state_t | l3 |
struct lt_cert_store_t |
struct lt_ser_num_t |
This structure contains fields for parsing the chip's serial number data.
struct lt_chip_id_t |
Data Fields | ||
---|---|---|
uint8_t | chip_id_ver[4] |
CHIP_ID structure versioning (32 bits), defined by Tropic Square in BP. Example encoding: v1.2.3.4 = 0x01,0x02,0x03,0x04 |
uint8_t | fl_chip_info[16] |
Factory level test info (128 bits), structure retrieved from silicon provider. The exact copy of FL_PROD_DATA structure. If missing, it is filled with 0x00. |
uint8_t | func_test_info[8] |
Manufacturing level test info (128 bits), structure retrieved from test line and BP. The exact copy of first two words of MAN_FUNC_TEST structure. In case of missing, it is filled with 0x00 |
uint8_t | silicon_rev[4] |
Silicon revision (32 bits). ASCII encoded string value defined by Tropic Square. Example: ’ACAB’ = 0x41434142 |
uint8_t | packg_type_id[2] | Package Type ID defined by Tropic Square. |
uint8_t | rfu_1[2] | Reserved field 1 (16 bits). |
uint8_t | prov_ver_fab_id_pn[4] |
Provisioning info (128 bits), filled by the provisioning station.
|
uint8_t | provisioning_date[2] | Provisioning date (16 bits). |
uint8_t | hsm_ver[4] |
HSM version (32 bits). Byte 0: RFU, Byte 1: Major version, Byte 2: Minor version, Byte 3: Patch version |
uint8_t | prog_ver[4] | Program version (32 bits). |
uint8_t | rfu_2[2] | Reserved field 2 (16 bits). |
struct lt_ser_num_t | ser_num | Serial Number (128 bits). |
uint8_t | part_num_data[16] |
Part Number (128 bits), defined by Tropic Square in BP. Part number data. |
uint8_t | prov_templ_ver[2] |
Provisioning Data version (160 bits), defined by Tropic Square for each batch in BP. Provisioning template version. |
uint8_t | prov_templ_tag[4] |
Provisioning template tag. |
uint8_t | prov_spec_ver[2] |
Provisioning specification version. |
uint8_t | prov_spec_tag[4] |
Provisioning specification tag. |
uint8_t | batch_id[5] | Batch ID (40 bits). |
uint8_t | rfu_3[3] | Reserved field 3 (24 bits). |
uint8_t | rfu_4[24] | Padding (192 bits). |
struct header_boot_v1_t |
struct header_boot_v2_t |
struct lt_config_obj_desc_t |
Data Fields | ||
---|---|---|
char | desc[60] | |
enum CONFIGURATION_OBJECTS_REGS | addr |
struct lt_config_t |
Data Fields | ||
---|---|---|
uint32_t | obj[LT_CONFIG_OBJ_CNT] |