libtropic
C library for TROPIC01 chip
lt_l3_api_structs.h File Reference

Layer 3 structure declaration. More...

#include "libtropic_common.h"
Include dependency graph for lt_l3_api_structs.h:

Data Structures

struct  lt_l3_ping_cmd_t
 A dummy command to check the Secure Channel Session communication. More...
 
struct  lt_l3_ping_res_t
 A dummy command to check the Secure Channel Session communication. More...
 
struct  lt_l3_pairing_key_write_cmd_t
 Command to write the X25519 public key to a Pairing Key slot. More...
 
struct  lt_l3_pairing_key_write_res_t
 Command to write the X25519 public key to a Pairing Key slot. More...
 
struct  lt_l3_pairing_key_read_cmd_t
 Command to read the X25519 public key from a Pairing Key slot. More...
 
struct  lt_l3_pairing_key_read_res_t
 Command to read the X25519 public key from a Pairing Key slot. More...
 
struct  lt_l3_pairing_key_invalidate_cmd_t
 Command to invalidate the X25519 public key in a Pairing Key slot. More...
 
struct  lt_l3_pairing_key_invalidate_res_t
 Command to invalidate the X25519 public key in a Pairing Key slot. More...
 
struct  lt_l3_r_config_write_cmd_t
 Command to write a single CO to R-Config. More...
 
struct  lt_l3_r_config_write_res_t
 Command to write a single CO to R-Config. More...
 
struct  lt_l3_r_config_read_cmd_t
 Command to read a single CO from R-Config. More...
 
struct  lt_l3_r_config_read_res_t
 Command to read a single CO from R-Config. More...
 
struct  lt_l3_r_config_erase_cmd_t
 Command to erase the whole R-Config (convert the bits of all CO to 1). More...
 
struct  lt_l3_r_config_erase_res_t
 Command to erase the whole R-Config (convert the bits of all CO to 1). More...
 
struct  lt_l3_i_config_write_cmd_t
 Command to write a single bit of CO (from I-Config) from 1 to 0. More...
 
struct  lt_l3_i_config_write_res_t
 Command to write a single bit of CO (from I-Config) from 1 to 0. More...
 
struct  lt_l3_i_config_read_cmd_t
 Command to read a single CO from I-Config. More...
 
struct  lt_l3_i_config_read_res_t
 Command to read a single CO from I-Config. More...
 
struct  lt_l3_r_mem_data_write_cmd_t
 Command to write general purpose data in a slot from the User Data partition in R-Memory. More...
 
struct  lt_l3_r_mem_data_write_res_t
 Command to write general purpose data in a slot from the User Data partition in R-Memory. More...
 
struct  lt_l3_r_mem_data_read_cmd_t
 Command to read the general purpose data from a slot of the User Data partition in R-Memory. More...
 
struct  lt_l3_r_mem_data_read_res_t
 Command to read the general purpose data from a slot of the User Data partition in R-Memory. More...
 
struct  lt_l3_r_mem_data_erase_cmd_t
 Command to erase a slot from the User Data partition in R-Memory. More...
 
struct  lt_l3_r_mem_data_erase_res_t
 Command to erase a slot from the User Data partition in R-Memory. More...
 
struct  lt_l3_random_value_get_cmd_t
 Command to get random numbers generated by TRNG2. More...
 
struct  lt_l3_random_value_get_res_t
 Command to get random numbers generated by TRNG2. More...
 
struct  lt_l3_ecc_key_generate_cmd_t
 Command to generate an ECC Key and store the key in a slot from the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_generate_res_t
 Command to generate an ECC Key and store the key in a slot from the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_store_cmd_t
 Command to store an ECC Key in a slot from the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_store_res_t
 Command to store an ECC Key in a slot from the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_read_cmd_t
 Command to read the public ECC Key from a slot of the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_read_res_t
 Command to read the public ECC Key from a slot of the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_erase_cmd_t
 Command to erase an ECC Key from a slot in the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecc_key_erase_res_t
 Command to erase an ECC Key from a slot in the ECC Keys partition in R-Memory. More...
 
struct  lt_l3_ecdsa_sign_cmd_t
 Command to sign a message hash with an ECDSA algorithm. More...
 
struct  lt_l3_ecdsa_sign_res_t
 Command to sign a message hash with an ECDSA algorithm. More...
 
struct  lt_l3_eddsa_sign_cmd_t
 Command to sign a message with an EdDSA algorithm. More...
 
struct  lt_l3_eddsa_sign_res_t
 Command to sign a message with an EdDSA algorithm. More...
 
struct  lt_l3_mcounter_init_cmd_t
 Command to initialize the Monotonic Counter. More...
 
struct  lt_l3_mcounter_init_res_t
 Command to initialize the Monotonic Counter. More...
 
struct  lt_l3_mcounter_update_cmd_t
 Command to update the Monotonic Counter (decrement by 1). More...
 
struct  lt_l3_mcounter_update_res_t
 Command to update the Monotonic Counter (decrement by 1). More...
 
struct  lt_l3_mcounter_get_cmd_t
 Command to get the value of the Monotonic Counter. More...
 
struct  lt_l3_mcounter_get_res_t
 Command to get the value of the Monotonic Counter. More...
 
struct  lt_l3_mac_and_destroy_cmd_t
 Command to execute the MAC-and-Destroy sequence. More...
 
struct  lt_l3_mac_and_destroy_res_t
 Command to execute the MAC-and-Destroy sequence. More...
 
struct  lt_l3_serial_code_get_cmd_t
 Command to obtain the unique per-chip identifier. More...
 
struct  lt_l3_serial_code_get_res_t
 Command to obtain the unique per-chip identifier. More...
 

Macros

#define LT_L3_PING_CMD_ID   0x01
 Command ID.
 
#define LT_L3_PING_CMD_SIZE_MIN   1u
 Command length.
 
#define LT_L3_PING_CMD_DATA_IN_LEN_MIN   0u
 
#define LT_L3_PING_CMD_DATA_IN_LEN_MAX   4096u
 
#define LT_L3_PING_RES_SIZE_MIN   1u
 Result length.
 
#define LT_L3_PAIRING_KEY_WRITE_CMD_ID   0x10
 Command ID.
 
#define LT_L3_PAIRING_KEY_WRITE_CMD_SIZE   36u
 Command length.
 
#define LT_L3_PAIRING_KEY_WRITE_CMD_SLOT_PAIRING_KEY_SLOT_0   0x00
 Corresponds to $S_{H0Pub}$.
 
#define LT_L3_PAIRING_KEY_WRITE_CMD_SLOT_PAIRING_KEY_SLOT_1   0x01
 Corresponds to $S_{H1Pub}$.
 
#define LT_L3_PAIRING_KEY_WRITE_CMD_SLOT_PAIRING_KEY_SLOT_2   0x02
 Corresponds to $S_{H2Pub}$.
 
#define LT_L3_PAIRING_KEY_WRITE_CMD_SLOT_PAIRING_KEY_SLOT_3   0x03
 Corresponds to $S_{H3Pub}$.
 
#define LT_L3_PAIRING_KEY_WRITE_RES_SIZE   1u
 Result length.
 
#define LT_L3_PAIRING_KEY_READ_CMD_ID   0x11
 Command ID.
 
#define LT_L3_PAIRING_KEY_READ_CMD_SIZE   3u
 Command length.
 
#define LT_L3_PAIRING_KEY_READ_CMD_SLOT_PAIRING_KEY_SLOT_0   0x00
 Corresponds to $S_{H0Pub}$.
 
#define LT_L3_PAIRING_KEY_READ_CMD_SLOT_PAIRING_KEY_SLOT_1   0x01
 Corresponds to $S_{H1Pub}$.
 
#define LT_L3_PAIRING_KEY_READ_CMD_SLOT_PAIRING_KEY_SLOT_2   0x02
 Corresponds to $S_{H2Pub}$.
 
#define LT_L3_PAIRING_KEY_READ_CMD_SLOT_PAIRING_KEY_SLOT_3   0x03
 Corresponds to $S_{H3Pub}$.
 
#define LT_L3_PAIRING_KEY_READ_RES_SIZE   36u
 Result length.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_CMD_ID   0x12
 Command ID.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_CMD_SIZE   3u
 Command length.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_CMD_SLOT_PAIRING_KEY_SLOT_0   0x00
 Corresponds to $S_{H0Pub}$.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_CMD_SLOT_PAIRING_KEY_SLOT_1   0x01
 Corresponds to $S_{H1Pub}$.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_CMD_SLOT_PAIRING_KEY_SLOT_2   0x02
 Corresponds to $S_{H2Pub}$.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_CMD_SLOT_PAIRING_KEY_SLOT_3   0x03
 Corresponds to $S_{H3Pub}$.
 
#define LT_L3_PAIRING_KEY_INVALIDATE_RES_SIZE   1u
 Result length.
 
#define LT_L3_R_CONFIG_WRITE_CMD_ID   0x20
 Command ID.
 
#define LT_L3_R_CONFIG_WRITE_CMD_SIZE   8u
 Command length.
 
#define LT_L3_R_CONFIG_WRITE_RES_SIZE   1u
 Result length.
 
#define LT_L3_R_CONFIG_READ_CMD_ID   0x21
 Command ID.
 
#define LT_L3_R_CONFIG_READ_CMD_SIZE   3u
 Command length.
 
#define LT_L3_R_CONFIG_READ_RES_SIZE   8u
 Result length.
 
#define LT_L3_R_CONFIG_ERASE_CMD_ID   0x22
 Command ID.
 
#define LT_L3_R_CONFIG_ERASE_CMD_SIZE   1u
 Command length.
 
#define LT_L3_R_CONFIG_ERASE_RES_SIZE   1u
 Result length.
 
#define LT_L3_I_CONFIG_WRITE_CMD_ID   0x30
 Command ID.
 
#define LT_L3_I_CONFIG_WRITE_CMD_SIZE   4u
 Command length.
 
#define LT_L3_I_CONFIG_WRITE_RES_SIZE   1u
 Result length.
 
#define LT_L3_I_CONFIG_READ_CMD_ID   0x31
 Command ID.
 
#define LT_L3_I_CONFIG_READ_CMD_SIZE   3u
 Command length.
 
#define LT_L3_I_CONFIG_READ_RES_SIZE   8u
 Result length.
 
#define LT_L3_R_MEM_DATA_WRITE_CMD_ID   0x40
 Command ID.
 
#define LT_L3_R_MEM_DATA_WRITE_CMD_SIZE_MIN   5u
 Command length.
 
#define LT_L3_R_MEM_DATA_WRITE_CMD_DATA_LEN_MIN   1u
 
#define LT_L3_R_MEM_DATA_WRITE_CMD_DATA_LEN_MAX   444u
 
#define LT_L3_R_MEM_DATA_WRITE_RES_SIZE   1u
 Result length.
 
#define LT_L3_R_MEM_DATA_READ_CMD_ID   0x41
 Command ID.
 
#define LT_L3_R_MEM_DATA_READ_CMD_SIZE   3u
 Command length.
 
#define LT_L3_R_MEM_DATA_READ_RES_SIZE_MIN   4u
 Result length.
 
#define LT_L3_R_MEM_DATA_READ_RES_SIZE_MAX   448u
 
#define LT_L3_R_MEM_DATA_ERASE_CMD_ID   0x42
 Command ID.
 
#define LT_L3_R_MEM_DATA_ERASE_CMD_SIZE   3u
 Command length.
 
#define LT_L3_R_MEM_DATA_ERASE_RES_SIZE   1u
 Result length.
 
#define LT_L3_RANDOM_VALUE_GET_CMD_ID   0x50
 Command ID.
 
#define LT_L3_RANDOM_VALUE_GET_CMD_SIZE   2u
 Command length.
 
#define LT_L3_RANDOM_VALUE_GET_RES_SIZE_MIN   4u
 Result length.
 
#define LT_L3_ECC_KEY_GENERATE_CMD_ID   0x60
 Command ID.
 
#define LT_L3_ECC_KEY_GENERATE_CMD_SIZE   4u
 Command length.
 
#define LT_L3_ECC_KEY_GENERATE_CMD_CURVE_P256   0x01
 P256 Curve - 64-byte long public key.
 
#define LT_L3_ECC_KEY_GENERATE_CMD_CURVE_ED25519   0x02
 Ed25519 Curve - 32-byte long public key.
 
#define LT_L3_ECC_KEY_GENERATE_RES_SIZE   1u
 Result length.
 
#define LT_L3_ECC_KEY_STORE_CMD_ID   0x61
 Command ID.
 
#define LT_L3_ECC_KEY_STORE_CMD_SIZE   48u
 Command length.
 
#define LT_L3_ECC_KEY_STORE_CMD_CURVE_P256   0x01
 P256 Curve - 64-byte long public key.
 
#define LT_L3_ECC_KEY_STORE_CMD_CURVE_ED25519   0x02
 Ed25519 Curve - 32-byte long public key.
 
#define LT_L3_ECC_KEY_STORE_RES_SIZE   1u
 Result length.
 
#define LT_L3_ECC_KEY_READ_CMD_ID   0x62
 Command ID.
 
#define LT_L3_ECC_KEY_READ_CMD_SIZE   3u
 Command length.
 
#define LT_L3_ECC_KEY_READ_CMD_CURVE_P256   0x01
 P256 Curve - 64-byte long public key.
 
#define LT_L3_ECC_KEY_READ_CMD_CURVE_ED25519   0x02
 Ed25519 Curve - 32-byte long public key.
 
#define LT_L3_ECC_KEY_READ_CMD_ORIGIN_ECC_KEY_GENERATE   0x01
 The key is from key generation on the device.
 
#define LT_L3_ECC_KEY_READ_CMD_ORIGIN_ECC_KEY_STORE   0x02
 The key is from key storage in the device.
 
#define LT_L3_ECC_KEY_READ_RES_SIZE_MIN   48u
 Result length.
 
#define LT_L3_ECC_KEY_ERASE_CMD_ID   0x63
 Command ID.
 
#define LT_L3_ECC_KEY_ERASE_CMD_SIZE   3u
 Command length.
 
#define LT_L3_ECC_KEY_ERASE_RES_SIZE   1u
 Result length.
 
#define LT_L3_ECDSA_SIGN_CMD_ID   0x70
 Command ID.
 
#define LT_L3_ECDSA_SIGN_CMD_SIZE   48u
 Command length.
 
#define LT_L3_ECDSA_SIGN_RES_SIZE   80u
 Result length.
 
#define LT_L3_EDDSA_SIGN_CMD_ID   0x71
 Command ID.
 
#define LT_L3_EDDSA_SIGN_CMD_SIZE_MIN   17u
 Command length.
 
#define LT_L3_EDDSA_SIGN_CMD_MSG_LEN_MAX   4096u
 Maximal length of field msg.
 
#define LT_L3_EDDSA_SIGN_RES_SIZE   80u
 Result length.
 
#define LT_L3_MCOUNTER_INIT_CMD_ID   0x80
 Command ID.
 
#define LT_L3_MCOUNTER_INIT_CMD_SIZE   8u
 Command length.
 
#define LT_L3_MCOUNTER_INIT_RES_SIZE   1u
 Result length.
 
#define LT_L3_MCOUNTER_UPDATE_CMD_ID   0x81
 Command ID.
 
#define LT_L3_MCOUNTER_UPDATE_CMD_SIZE   3u
 Command length.
 
#define LT_L3_MCOUNTER_UPDATE_RES_SIZE   1u
 Result length.
 
#define LT_L3_MCOUNTER_GET_CMD_ID   0x82
 Command ID.
 
#define LT_L3_MCOUNTER_GET_CMD_SIZE   3u
 Command length.
 
#define LT_L3_MCOUNTER_GET_RES_SIZE   8u
 Result length.
 
#define LT_L3_MAC_AND_DESTROY_CMD_ID   0x90
 Command ID.
 
#define LT_L3_MAC_AND_DESTROY_CMD_SIZE   36u
 Command length.
 
#define LT_L3_MAC_AND_DESTROY_RES_SIZE   36u
 Result length.
 
#define LT_L3_SERIAL_CODE_GET_CMD_ID   0xa0
 Command ID.
 
#define LT_L3_SERIAL_CODE_GET_CMD_SIZE   1u
 Command length.
 
#define LT_L3_SERIAL_CODE_GET_RES_SIZE   36u
 Result length.
 

Detailed Description

Author
Tropic Square s.r.o.

Data Structure Documentation

◆ lt_l3_ping_cmd_t

struct lt_l3_ping_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint8_t data_in[4096] The input data.

Data in

uint8_t tag[16]

L3 tag

◆ lt_l3_ping_res_t

struct lt_l3_ping_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t data_out[4096] The output data (loopback of the DATA_IN L3 Field).

Data out

uint8_t tag[16]

L3 tag

◆ lt_l3_pairing_key_write_cmd_t

struct lt_l3_pairing_key_write_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The Pairing Key slot. Valid values are 0 - 3.

Slot to write in

uint8_t padding The padding by dummy data.

Padding

uint8_t s_hipub[32] The X25519 public key to be written in the Pairing Key slot specified in the SLOT field.

Public Key

uint8_t tag[16]

L3 tag

◆ lt_l3_pairing_key_write_res_t

struct lt_l3_pairing_key_write_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_pairing_key_read_cmd_t

struct lt_l3_pairing_key_read_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The Pairing Key slot. Valid values are 0 - 3.

Slot to Read

uint8_t tag[16]

L3 tag

◆ lt_l3_pairing_key_read_res_t

struct lt_l3_pairing_key_read_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint8_t s_hipub[32] The X25519 public key to be written in the Pairing Key slot specified in the SLOT field.

Public Key

uint8_t tag[16]

L3 tag

◆ lt_l3_pairing_key_invalidate_cmd_t

struct lt_l3_pairing_key_invalidate_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The Pairing Key slot. Valid values are 0 - 3.

Slot to Invalidate

uint8_t tag[16]

L3 tag

◆ lt_l3_pairing_key_invalidate_res_t

struct lt_l3_pairing_key_invalidate_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_r_config_write_cmd_t

struct lt_l3_r_config_write_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t address The CO address offset for TROPIC01 to compute the actual CO address.

Configuration object address

uint8_t padding The padding by dummy data.

Padding

uint32_t value The CO value to write in the computed address.

Configuration object value

uint8_t tag[16]

L3 tag

◆ lt_l3_r_config_write_res_t

struct lt_l3_r_config_write_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_r_config_read_cmd_t

struct lt_l3_r_config_read_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t address The CO address offset for TROPIC01 to compute the actual CO address.

Configuration object address

uint8_t tag[16]

L3 tag

◆ lt_l3_r_config_read_res_t

struct lt_l3_r_config_read_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint32_t value The CO value TROPIC01 read from the computed address.

Configuration object value

uint8_t tag[16]

L3 tag

◆ lt_l3_r_config_erase_cmd_t

struct lt_l3_r_config_erase_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint8_t tag[16]

L3 tag

◆ lt_l3_r_config_erase_res_t

struct lt_l3_r_config_erase_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_i_config_write_cmd_t

struct lt_l3_i_config_write_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t address The CO address offset for TROPIC01 to compute the actual CO address.

Configuration object address

uint8_t bit_index The bit to write from 1 to 0. Valid values are 0-31.

Bit to write.

uint8_t tag[16]

L3 tag

◆ lt_l3_i_config_write_res_t

struct lt_l3_i_config_write_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_i_config_read_cmd_t

struct lt_l3_i_config_read_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t address The CO address offset for TROPIC01 to compute the actual CO address.

Configuration object address

uint8_t tag[16]

L3 tag

◆ lt_l3_i_config_read_res_t

struct lt_l3_i_config_read_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint32_t value The CO value TROPIC01 read from the computed address.

Configuration object value

uint8_t tag[16]

L3 tag

◆ lt_l3_r_mem_data_write_cmd_t

struct lt_l3_r_mem_data_write_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t udata_slot The slot of the User Data partition. Valid values are 0 - 511.

Slot to write

uint8_t padding The padding by dummy data.

Padding

uint8_t data[444] The data stream to be written in the slot specified in the UDATA_SLOT L3 field.

Data to write

uint8_t tag[16]

L3 tag

◆ lt_l3_r_mem_data_write_res_t

struct lt_l3_r_mem_data_write_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_r_mem_data_read_cmd_t

struct lt_l3_r_mem_data_read_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t udata_slot The slot of the User Data partition. Valid values are 0 - 511.

Slot to read

uint8_t tag[16]

L3 tag

◆ lt_l3_r_mem_data_read_res_t

struct lt_l3_r_mem_data_read_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint8_t data[444] The data stream read from the slot specified in the UDATA_SLOT L3 field.

Data to read

uint8_t tag[16]

L3 tag

◆ lt_l3_r_mem_data_erase_cmd_t

struct lt_l3_r_mem_data_erase_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t udata_slot The slot of the User Data partition. Valid values are 0 - 511.

Slot to erase

uint8_t tag[16]

L3 tag

◆ lt_l3_r_mem_data_erase_res_t

struct lt_l3_r_mem_data_erase_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_random_value_get_cmd_t

struct lt_l3_random_value_get_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint8_t n_bytes The number of random bytes to get.

Number of bytes to get.

uint8_t tag[16]

L3 tag

◆ lt_l3_random_value_get_res_t

struct lt_l3_random_value_get_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint8_t random_data[255] The random data from TRNG2 in the number of bytes specified in the N_BYTES L3 Field.

Random data

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_generate_cmd_t

struct lt_l3_ecc_key_generate_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot to write the generated key. Valid values are 0 - 31.

ECC Key slot

uint8_t curve The Elliptic Curve the key is generated from.

Elliptic Curve

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_generate_res_t

struct lt_l3_ecc_key_generate_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_store_cmd_t

struct lt_l3_ecc_key_store_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot to write the K L3 Field. Valid values are 0 - 31.

ECC Key slot

uint8_t curve The Elliptic Curve the key is generated from.

The type of Elliptic Curve the K L3 Field belongs to.

uint8_t padding[12] The padding by dummy data.

Padding

uint8_t k[32] The ECC Key to store. The key must be a member of the field given by the curve specified in the CURVE L3 Field.

Key to store

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_store_res_t

struct lt_l3_ecc_key_store_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_read_cmd_t

struct lt_l3_ecc_key_read_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot to read the public ECC Key from. Valid values are 0 - 31.

ECC Key slot

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_read_res_t

struct lt_l3_ecc_key_read_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t curve The type of Elliptic Curve public key returned.

Elliptic Curve

uint8_t origin The origin of the key.

Origin of the key.

uint8_t padding[13] The padding by dummy data.

Padding

uint8_t pub_key[64] The public key from the ECC Key slot as specified in the SLOT L3 Field.

Public Key

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_erase_cmd_t

struct lt_l3_ecc_key_erase_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot to erase. Valid values are 0 - 31.

ECC Key slot

uint8_t tag[16]

L3 tag

◆ lt_l3_ecc_key_erase_res_t

struct lt_l3_ecc_key_erase_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_ecdsa_sign_cmd_t

struct lt_l3_ecdsa_sign_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot (from the ECC Keys partition in R-Memory) to read the key for ECDSA signing.

ECC Key slot

uint8_t padding[13] The padding by dummy data.

Padding

uint8_t msg_hash[32] The hash of the message to sign (max size of 32 bytes).

Hash of the Message to sign.

uint8_t tag[16]

L3 tag

◆ lt_l3_ecdsa_sign_res_t

struct lt_l3_ecdsa_sign_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[15] The padding by dummy data.

Padding

uint8_t r[32] ECDSA signature - The R part.

ECDSA Signature - R part

uint8_t s[32] ECDSA signature - The S part.

ECDSA Signature - S part

uint8_t tag[16]

L3 tag

◆ lt_l3_eddsa_sign_cmd_t

struct lt_l3_eddsa_sign_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot (from the ECC Keys partition in R-Memory) to read the key for EdDSA signing.

ECC Key slot

uint8_t padding[13] The padding by dummy data.

Padding

uint8_t msg[4096] The message to sign (max size of 4096 bytes).

Message to sign.

uint8_t tag[16]

L3 tag

◆ lt_l3_eddsa_sign_res_t

struct lt_l3_eddsa_sign_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[15] The padding by dummy data.

Padding

uint8_t r[32] EdDSA signature - The R part.

EDDSA Signature - R part

uint8_t s[32] EdDSA signature - The S part.

EDDSA Signature - S part

uint8_t tag[16]

L3 tag

◆ lt_l3_mcounter_init_cmd_t

struct lt_l3_mcounter_init_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t mcounter_index The index of the Monotonic Counter to initialize. Valid values are 0 - 15.

Index of Monotonic Counter

uint8_t padding The padding by dummy data.

Padding

uint32_t mcounter_val The initialization value of the Monotonic Counter.

Initialization value.

uint8_t tag[16]

L3 tag

◆ lt_l3_mcounter_init_res_t

struct lt_l3_mcounter_init_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_mcounter_update_cmd_t

struct lt_l3_mcounter_update_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t mcounter_index The index of the Monotonic Counter to update. Valid values are 0 - 15.

Index of Monotonic Counter

uint8_t tag[16]

L3 tag

◆ lt_l3_mcounter_update_res_t

struct lt_l3_mcounter_update_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t tag[16]

L3 tag

◆ lt_l3_mcounter_get_cmd_t

struct lt_l3_mcounter_get_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t mcounter_index The index of the Monotonic Counter to get the value of. Valid index values are 0 - 15.

Index of Monotonic Counter

uint8_t tag[16]

L3 tag

◆ lt_l3_mcounter_get_res_t

struct lt_l3_mcounter_get_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint32_t mcounter_val The value of the Monotonic Counter specified by the MCOUNTER_INDEX L3 Field.

Initialization value.

uint8_t tag[16]

L3 tag

◆ lt_l3_mac_and_destroy_cmd_t

struct lt_l3_mac_and_destroy_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint16_t slot The slot (from the MAC-and-Destroy data partition in R-Memory) to execute the MAC_And_Destroy sequence. Valid values are 0 - 127.

Mac-and-Destroy slot

uint8_t padding The padding by dummy data.

Padding

uint8_t data_in[32] The data input for the MAC-and-Destroy sequence.

Input data

uint8_t tag[16]

L3 tag

◆ lt_l3_mac_and_destroy_res_t

struct lt_l3_mac_and_destroy_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint8_t data_out[32] The data output from the MAC-and-Destroy sequence.

Output data

uint8_t tag[16]

L3 tag

◆ lt_l3_serial_code_get_cmd_t

struct lt_l3_serial_code_get_cmd_t
Data Fields
uint16_t cmd_size

L3 command size

uint8_t cmd_id

Command Identifier

uint8_t tag[16]

L3 tag

◆ lt_l3_serial_code_get_res_t

struct lt_l3_serial_code_get_res_t
Data Fields
uint16_t res_size

L3 result size

uint8_t result

Result status indication

uint8_t padding[3] The padding by dummy data.

Padding

uint8_t serial_code[32] The unique per-chip identifier.

Serial code

uint8_t tag[16]

L3 tag