Microchip Crypto Auth device command object - this is a command builder only, it does not send the command. The result of a command method is a fully formed packet, ready to send to the ATCAIFace object to dispatch. More...
Data Structures | |
struct | ATCAPacket |
Macros | |
#define | ATCA_CMD_SIZE_MIN (7u) |
minimum number of bytes in command (from count byte to second CRC byte) | |
#define | ATCA_CMD_SIZE_MAX ((uint8_t)4 * 36 + 7) |
maximum size of command packet (Verify) | |
#define | CMD_STATUS_SUCCESS ((uint8_t)0x00) |
status byte for success | |
#define | CMD_STATUS_WAKEUP ((uint8_t)0x11) |
status byte after wake-up | |
#define | CMD_STATUS_BYTE_PARSE ((uint8_t)0x03) |
command parse error | |
#define | CMD_STATUS_BYTE_ECC ((uint8_t)0x05) |
command ECC error | |
#define | CMD_STATUS_BYTE_EXEC ((uint8_t)0x0F) |
command execution error | |
#define | CMD_STATUS_BYTE_COMM ((uint8_t)0xFF) |
communication error | |
Opcodes for Crypto Authentication device commands | |
#define | ATCA_CHECKMAC ((uint8_t)0x28) |
CheckMac command op-code. | |
#define | ATCA_DERIVE_KEY ((uint8_t)0x1C) |
DeriveKey command op-code. | |
#define | ATCA_INFO ((uint8_t)0x30) |
Info command op-code. | |
#define | ATCA_GENDIG ((uint8_t)0x15) |
GenDig command op-code. | |
#define | ATCA_GENKEY ((uint8_t)0x40) |
GenKey command op-code. | |
#define | ATCA_HMAC ((uint8_t)0x11) |
HMAC command op-code. | |
#define | ATCA_LOCK ((uint8_t)0x17) |
Lock command op-code. | |
#define | ATCA_MAC ((uint8_t)0x08) |
MAC command op-code. | |
#define | ATCA_NONCE ((uint8_t)0x16) |
Nonce command op-code. | |
#define | ATCA_PAUSE ((uint8_t)0x01) |
Pause command op-code. | |
#define | ATCA_PRIVWRITE ((uint8_t)0x46) |
PrivWrite command op-code. | |
#define | ATCA_RANDOM ((uint8_t)0x1B) |
Random command op-code. | |
#define | ATCA_READ ((uint8_t)0x02) |
Read command op-code. | |
#define | ATCA_SIGN ((uint8_t)0x41) |
Sign command op-code. | |
#define | ATCA_UPDATE_EXTRA ((uint8_t)0x20) |
UpdateExtra command op-code. | |
#define | ATCA_VERIFY ((uint8_t)0x45) |
GenKey command op-code. | |
#define | ATCA_WRITE ((uint8_t)0x12) |
Write command op-code. | |
#define | ATCA_ECDH ((uint8_t)0x43) |
ECDH command op-code. | |
#define | ATCA_COUNTER ((uint8_t)0x24) |
Counter command op-code. | |
#define | ATCA_DELETE ((uint8_t)0x13) |
Delete command op-code. | |
#define | ATCA_SHA ((uint8_t)0x47) |
SHA command op-code. | |
#define | ATCA_AES ((uint8_t)0x51) |
AES command op-code. | |
#define | ATCA_KDF ((uint8_t)0x56) |
KDF command op-code. | |
#define | ATCA_SECUREBOOT ((uint8_t)0x80) |
Secure Boot command op-code. | |
#define | ATCA_SELFTEST ((uint8_t)0x77) |
Self test command op-code. | |
Definitions of Data and Packet Sizes | |
#define | ATCA_BLOCK_SIZE (32u) |
size of a block | |
#define | ATCA_WORD_SIZE (4u) |
size of a word | |
#define | ATCA_PUB_KEY_PAD (4u) |
size of the public key pad | |
#define | ATCA_SERIAL_NUM_SIZE (9u) |
number of bytes in the device serial number | |
#define | ATCA_RSP_SIZE_VAL ((uint8_t)7) |
size of response packet containing four bytes of data | |
#define | ATCA_KEY_COUNT (16u) |
number of keys | |
#define | ATCA_ECC_CONFIG_SIZE (128u) |
size of configuration zone | |
#define | ATCA_SHA_CONFIG_SIZE (88u) |
size of configuration zone | |
#define | ATCA_CA2_CONFIG_SIZE (64u) |
size of ECC204 configuration zone | |
#define | ATCA_CA2_CONFIG_SLOT_SIZE (16u) |
size of ECC204 configuration slot size | |
#define | ATCA_OTP_SIZE (64u) |
size of OTP zone | |
#define | ATCA_DATA_SIZE (ATCA_KEY_COUNT * ATCA_KEY_SIZE) |
size of data zone | |
#define | ATCA_AES_GFM_SIZE ATCA_BLOCK_SIZE |
size of GFM data | |
#define | ATCA_CHIPMODE_OFFSET (19u) |
ChipMode byte offset within the configuration zone. | |
#define | ATCA_CHIPMODE_I2C_ADDRESS_FLAG ((uint8_t)0x01) |
ChipMode I2C Address in UserExtraAdd flag. | |
#define | ATCA_CHIPMODE_TTL_ENABLE_FLAG ((uint8_t)0x02) |
ChipMode TTLenable flag. | |
#define | ATCA_CHIPMODE_WATCHDOG_MASK ((uint8_t)0x04) |
ChipMode watchdog duration mask. | |
#define | ATCA_CHIPMODE_WATCHDOG_SHORT ((uint8_t)0x00) |
ChipMode short watchdog (~1.3s) | |
#define | ATCA_CHIPMODE_WATCHDOG_LONG ((uint8_t)0x04) |
ChipMode long watchdog (~13s) | |
#define | ATCA_CHIPMODE_CLOCK_DIV_MASK ((uint8_t)0xF8) |
ChipMode clock divider mask. | |
#define | ATCA_CHIPMODE_CLOCK_DIV_M0 ((uint8_t)0x00) |
ChipMode clock divider M0. | |
#define | ATCA_CHIPMODE_CLOCK_DIV_M1 ((uint8_t)0x28) |
ChipMode clock divider M1. | |
#define | ATCA_CHIPMODE_CLOCK_DIV_M2 ((uint8_t)0x68) |
ChipMode clock divider M2. | |
#define | ATCA_COUNT_SIZE (1u) |
Number of bytes in the command packet Count. | |
#define | ATCA_CRC_SIZE (2u) |
Number of bytes in the command packet CRC. | |
#define | ATCA_PACKET_OVERHEAD (ATCA_COUNT_SIZE + ATCA_CRC_SIZE) |
Number of bytes in the command packet. | |
#define | ATCA_PUB_KEY_SIZE (64u) |
size of a p256 public key | |
#define | ATCA_PRIV_KEY_SIZE (32u) |
size of a p256 private key | |
#define | ATCA_SIG_SIZE (64u) |
size of a p256 signature | |
#define | ATCA_KEY_SIZE (32u) |
size of a symmetric SHA key | |
#define | RSA2048_KEY_SIZE (256u) |
size of a RSA private key | |
#define | ATCA_RSP_SIZE_MIN ((uint8_t)4) |
minimum number of bytes in response | |
#define | ATCA_RSP_SIZE_4 ((uint8_t)7) |
size of response packet containing 4 bytes data | |
#define | ATCA_RSP_SIZE_72 ((uint8_t)75) |
size of response packet containing 64 bytes data | |
#define | ATCA_RSP_SIZE_64 ((uint8_t)67) |
size of response packet containing 64 bytes data | |
#define | ATCA_RSP_SIZE_32 (35u) |
size of response packet containing 32 bytes data | |
#define | ATCA_RSP_SIZE_16 ((uint8_t)19) |
size of response packet containing 16 bytes data | |
#define | ATCA_RSP_SIZE_MAX ((uint8_t)75) |
maximum size of response packet (GenKey and Verify command) | |
#define | OUTNONCE_SIZE (32u) |
Size of the OutNonce response expected from several commands. | |
Definitions for Command Parameter Ranges | |
#define | ATCA_KEY_ID_MAX ((uint8_t)15) |
maximum value for key id | |
#define | ATCA_OTP_BLOCK_MAX ((uint8_t)1) |
maximum value for OTP block | |
Definitions for Indexes Common to All Commands | |
#define | ATCA_COUNT_IDX (0) |
command packet index for count | |
#define | ATCA_OPCODE_IDX (1) |
command packet index for op-code | |
#define | ATCA_PARAM1_IDX (2) |
command packet index for first parameter | |
#define | ATCA_PARAM2_IDX (3) |
command packet index for second parameter | |
#define | ATCA_DATA_IDX (5) |
command packet index for data load | |
#define | ATCA_RSP_DATA_IDX (1u) |
buffer index of data in response | |
Definitions for Zone and Address Parameters | |
#define | ATCA_ZONE_MASK ((uint8_t)0x03) |
Zone mask. | |
#define | ATCA_ZONE_ENCRYPTED ((uint8_t)0x40) |
Zone bit 6 set: Write is encrypted with an unlocked data zone. | |
#define | ATCA_ZONE_READWRITE_32 ((uint8_t)0x80) |
Zone bit 7 set: Access 32 bytes, otherwise 4 bytes. | |
#define | ATCA_ADDRESS_MASK_CONFIG ((uint16_t)0x001F) |
Address bits 5 to 7 are 0 for Configuration zone. | |
#define | ATCA_ADDRESS_MASK_OTP ((uint16_t)0x000F) |
Address bits 4 to 7 are 0 for OTP zone. | |
#define | ATCA_ADDRESS_MASK ((uint16_t)0x007F) |
Address bit 7 to 15 are always 0. | |
#define | ATCA_TEMPKEY_KEYID ((uint16_t)0xFFFF) |
KeyID when referencing TempKey. | |
Definitions for Key types | |
#define | ATCA_B283_KEY_TYPE 0 |
B283 NIST ECC key. | |
#define | ATCA_K283_KEY_TYPE 1 |
K283 NIST ECC key. | |
#define | ATCA_P256_KEY_TYPE 4 |
P256 NIST ECC key. | |
#define | ATCA_AES_KEY_TYPE 6 |
AES-128 Key. | |
#define | ATCA_SHA_KEY_TYPE 7 |
SHA key or other data. | |
Definitions for the AES Command | |
#define | AES_MODE_IDX ATCA_PARAM1_IDX |
AES command index for mode. | |
#define | AES_KEYID_IDX ATCA_PARAM2_IDX |
AES command index for key id. | |
#define | AES_INPUT_IDX ATCA_DATA_IDX |
AES command index for input data. | |
#define | AES_COUNT (23u) |
AES command packet size. | |
#define | AES_MODE_MASK ((uint8_t)0xC7) |
AES mode bits 3 to 5 are 0. | |
#define | AES_MODE_KEY_BLOCK_MASK ((uint8_t)0xC0) |
AES mode mask for key block field. | |
#define | AES_MODE_OP_MASK ((uint8_t)0x07) |
AES mode operation mask. | |
#define | AES_MODE_ENCRYPT ((uint8_t)0x00) |
AES mode: Encrypt. | |
#define | AES_MODE_DECRYPT ((uint8_t)0x01) |
AES mode: Decrypt. | |
#define | AES_MODE_GFM ((uint8_t)0x03) |
AES mode: GFM calculation. | |
#define | AES_MODE_KEY_BLOCK_POS (6u) |
Bit shift for key block in mode. | |
#define | AES_DATA_SIZE (16u) |
size of AES encrypt/decrypt data | |
#define | AES_RSP_SIZE ATCA_RSP_SIZE_16 |
AES command response packet size. | |
Definitions for the CheckMac Command | |
#define | CHECKMAC_MODE_IDX ATCA_PARAM1_IDX |
CheckMAC command index for mode. | |
#define | CHECKMAC_KEYID_IDX ATCA_PARAM2_IDX |
CheckMAC command index for key identifier. | |
#define | CHECKMAC_CLIENT_CHALLENGE_IDX ATCA_DATA_IDX |
CheckMAC command index for client challenge. | |
#define | CHECKMAC_CLIENT_RESPONSE_IDX (37u) |
CheckMAC command index for client response. | |
#define | CHECKMAC_DATA_IDX (69u) |
CheckMAC command index for other data. | |
#define | CHECKMAC_COUNT (84u) |
CheckMAC command packet size. | |
#define | CHECKMAC_MODE_CHALLENGE ((uint8_t)0x00) |
CheckMAC mode 0: first SHA block from key id. | |
#define | CHECKMAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) |
CheckMAC mode bit 0: second SHA block from TempKey. | |
#define | CHECKMAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) |
CheckMAC mode bit 1: first SHA block from TempKey. | |
#define | CHECKMAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
CheckMAC mode bit 2: match TempKey.SourceFlag. | |
#define | CHECKMAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) |
CheckMAC mode bit 5: include first 64 OTP bits. | |
#define | CHECKMAC_MODE_MASK ((uint8_t)0x27) |
CheckMAC mode bits 3, 4, 6, and 7 are 0. | |
#define | CHECKMAC_MODE_OUTPUT_MAC_RESPONSE ((uint8_t)0x08) |
CheckMAC mode bit 3: Single byte boolean response + 32 bytes mac in SHA105 device. | |
#define | CHECKMAC_CLIENT_CHALLENGE_SIZE (32u) |
CheckMAC size of client challenge. | |
#define | CHECKMAC_CLIENT_RESPONSE_SIZE (32u) |
CheckMAC size of client response. | |
#define | CHECKMAC_OTHER_DATA_SIZE (13u) |
CheckMAC size of "other data". | |
#define | CHECKMAC_CLIENT_COMMAND_SIZE (4u) |
CheckMAC size of client command header size inside "other data". | |
#define | CHECKMAC_CMD_MATCH (0u) |
CheckMAC return value when there is a match. | |
#define | CHECKMAC_CMD_MISMATCH (1u) |
CheckMAC return value when there is a mismatch. | |
#define | CHECKMAC_RSP_SIZE ATCA_RSP_SIZE_MIN |
CheckMAC response packet size. | |
#define | CHECKMAC_SINGLE_BYTE_BOOL_RESP (1u) |
#define | CHECKMAC_SHA105_DEFAULT_KEYID ((uint16_t)0x0003) |
Definitions for the Counter command | |
#define | COUNTER_COUNT ATCA_CMD_SIZE_MIN |
#define | COUNTER_MODE_IDX ATCA_PARAM1_IDX |
Counter command index for mode. | |
#define | COUNTER_KEYID_IDX ATCA_PARAM2_IDX |
Counter command index for key id. | |
#define | COUNTER_MODE_MASK ((uint8_t)0x01) |
Counter mode bits 1 to 7 are 0. | |
#define | COUNTER_MAX_VALUE ((uint32_t)2097151) |
Counter maximum value of the counter. | |
#define | COUNTER_MODE_READ ((uint8_t)0x00) |
Counter command mode for reading. | |
#define | COUNTER_MODE_INCREMENT ((uint8_t)0x01) |
Counter command mode for incrementing. | |
#define | COUNTER_RSP_SIZE ATCA_RSP_SIZE_4 |
Counter command response packet size. | |
#define | COUNTER_SIZE ATCA_RSP_SIZE_MIN |
Counter size in binary. | |
#define | COUNTER_MAX_VALUE_CA2 ((uint16_t)10000) |
Counter maximum value of the counter for ECC204. | |
Definitions for the Delete command | |
#define | DELETE_COUNT (39u) |
#define | DELETE_MODE ((uint8_t)0x00) |
#define | DELETE_MAC_SIZE (32u) |
#define | DELETE_NONCE_KEY_ID ((uint16_t)0x8000) |
Definitions for the DeriveKey Command | |
#define | DERIVE_KEY_RANDOM_IDX ATCA_PARAM1_IDX |
DeriveKey command index for random bit. | |
#define | DERIVE_KEY_TARGETKEY_IDX ATCA_PARAM2_IDX |
DeriveKey command index for target slot. | |
#define | DERIVE_KEY_MAC_IDX ATCA_DATA_IDX |
DeriveKey command index for optional MAC. | |
#define | DERIVE_KEY_COUNT_SMALL ATCA_CMD_SIZE_MIN |
DeriveKey command packet size without MAC. | |
#define | DERIVE_KEY_MODE ((uint8_t)0x04) |
DeriveKey command mode set to 4 as in datasheet. | |
#define | DERIVE_KEY_COUNT_LARGE (39u) |
DeriveKey command packet size with MAC. | |
#define | DERIVE_KEY_RANDOM_FLAG ((uint8_t)4) |
DeriveKey 1. parameter; has to match TempKey.SourceFlag. | |
#define | DERIVE_KEY_MAC_SIZE (32u) |
DeriveKey MAC size. | |
#define | DERIVE_KEY_RSP_SIZE ATCA_RSP_SIZE_MIN |
DeriveKey response packet size. | |
Definitions for the ECDH Command | |
#define | ECDH_PREFIX_MODE ((uint8_t)0x00) |
#define | ECDH_COUNT (ATCA_CMD_SIZE_MIN + ATCA_PUB_KEY_SIZE) |
#define | ECDH_MODE_SOURCE_MASK ((uint8_t)0x01) |
#define | ECDH_MODE_SOURCE_EEPROM_SLOT ((uint8_t)0x00) |
#define | ECDH_MODE_SOURCE_TEMPKEY ((uint8_t)0x01) |
#define | ECDH_MODE_OUTPUT_MASK ((uint8_t)0x02) |
#define | ECDH_MODE_OUTPUT_CLEAR ((uint8_t)0x00) |
#define | ECDH_MODE_OUTPUT_ENC ((uint8_t)0x02) |
#define | ECDH_MODE_COPY_MASK ((uint8_t)0x0C) |
#define | ECDH_MODE_COPY_COMPATIBLE ((uint8_t)0x00) |
#define | ECDH_MODE_COPY_EEPROM_SLOT ((uint8_t)0x04) |
#define | ECDH_MODE_COPY_TEMP_KEY ((uint8_t)0x08) |
#define | ECDH_MODE_COPY_OUTPUT_BUFFER ((uint8_t)0x0C) |
#define | ECDH_KEY_SIZE ATCA_BLOCK_SIZE |
ECDH output data size. | |
#define | ECDH_RSP_SIZE ATCA_RSP_SIZE_64 |
ECDH command packet size. | |
Definitions for the GenDig Command | |
#define | GENDIG_ZONE_IDX ATCA_PARAM1_IDX |
GenDig command index for zone. | |
#define | GENDIG_KEYID_IDX ATCA_PARAM2_IDX |
GenDig command index for key id. | |
#define | GENDIG_DATA_IDX ATCA_DATA_IDX |
GenDig command index for optional data. | |
#define | GENDIG_COUNT ATCA_CMD_SIZE_MIN |
GenDig command packet size without "other data". | |
#define | GENDIG_ZONE_CONFIG ((uint8_t)0) |
GenDig zone id config. Use KeyID to specify any of the four 256-bit blocks of the Configuration zone. | |
#define | GENDIG_ZONE_OTP ((uint8_t)1) |
GenDig zone id OTP. Use KeyID to specify either the first or second 256-bit block of the OTP zone. | |
#define | GENDIG_ZONE_DATA ((uint8_t)2) |
GenDig zone id data. Use KeyID to specify a slot in the Data zone or a transport key in the hardware array. | |
#define | GENDIG_ZONE_SHARED_NONCE ((uint8_t)3) |
GenDig zone id shared nonce. KeyID specifies the location of the input value in the message generation. | |
#define | GENDIG_ZONE_COUNTER ((uint8_t)4) |
GenDig zone id counter. KeyID specifies the monotonic counter ID to be included in the message generation. | |
#define | GENDIG_ZONE_KEY_CONFIG ((uint8_t)5) |
GenDig zone id key config. KeyID specifies the slot for which the configuration information is to be included in the message generation. | |
#define | GENDIG_RSP_SIZE ATCA_RSP_SIZE_MIN |
GenDig command response packet size. | |
#define | GENDIG_USE_TEMPKEY_BIT ((uint16_t)0x8000) |
Use temp key for GenDig command if bit 15 is 1. | |
Definitions for the GenDivKey Command | |
#define | GENDIVKEY_MODE ((uint8_t)2) |
#define | GENDIVKEY_OTHER_DATA_SIZE ((uint8_t)4) |
#define | GENDIVKEY_DEFAULT_KEYID ((uint16_t)0x0003) |
Definitions for the GenKey Command | |
#define | GENKEY_MODE_IDX ATCA_PARAM1_IDX |
GenKey command index for mode. | |
#define | GENKEY_KEYID_IDX ATCA_PARAM2_IDX |
GenKey command index for key id. | |
#define | GENKEY_DATA_IDX (5u) |
GenKey command index for other data. | |
#define | GENKEY_COUNT ATCA_CMD_SIZE_MIN |
GenKey command packet size without "other data". | |
#define | GENKEY_COUNT_DATA (10u) |
GenKey command packet size with "other data". | |
#define | GENKEY_OTHER_DATA_SIZE (3u) |
GenKey size of "other data". | |
#define | GENKEY_MODE_MASK ((uint8_t)0x1C) |
GenKey mode bits 0 to 1 and 5 to 7 are 0. | |
#define | GENKEY_MODE_PRIVATE ((uint8_t)0x04) |
GenKey mode: private key generation. | |
#define | GENKEY_MODE_PUBLIC ((uint8_t)0x00) |
GenKey mode: public key calculation. | |
#define | GENKEY_MODE_DIGEST ((uint8_t)0x08) |
GenKey mode: PubKey digest will be created after the public key is calculated. | |
#define | GENKEY_MODE_PUBKEY_DIGEST ((uint8_t)0x10) |
GenKey mode: Calculate PubKey digest on the public key in KeyId. | |
#define | GENKEY_MODE_MAC ((uint8_t)0x20) |
Genkey mode: Calculate MAC of public key + session key. | |
#define | GENKEY_PRIVATE_TO_TEMPKEY ((uint16_t)0xFFFF) |
GenKey Create private key and store to tempkey (608 only) | |
#define | GENKEY_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
GenKey response packet size in Digest mode. | |
#define | GENKEY_RSP_SIZE_LONG ATCA_RSP_SIZE_64 |
GenKey response packet size when returning a public key. | |
Definitions for the HMAC Command | |
#define | HMAC_MODE_IDX ATCA_PARAM1_IDX |
HMAC command index for mode. | |
#define | HMAC_KEYID_IDX ATCA_PARAM2_IDX |
HMAC command index for key id. | |
#define | HMAC_COUNT ATCA_CMD_SIZE_MIN |
HMAC command packet size. | |
#define | HMAC_MODE_FLAG_TK_RAND ((uint8_t)0x00) |
HMAC mode bit 2: The value of this bit must match the value in TempKey.SourceFlag or the command will return an error. | |
#define | HMAC_MODE_FLAG_TK_NORAND ((uint8_t)0x04) |
HMAC mode bit 2: The value of this bit must match the value in TempKey.SourceFlag or the command will return an error. | |
#define | HMAC_MODE_FLAG_OTP88 ((uint8_t)0x10) |
HMAC mode bit 4: Include the first 88 OTP bits (OTP[0] through OTP[10]) in the message.; otherwise, the corresponding message bits are set to zero. Not applicable for ATECC508A. | |
#define | HMAC_MODE_FLAG_OTP64 ((uint8_t)0x20) |
HMAC mode bit 5: Include the first 64 OTP bits (OTP[0] through OTP[7]) in the message.; otherwise, the corresponding message bits are set to zero. If Mode[4] is set, the value of this mode bit is ignored. Not applicable for ATECC508A. | |
#define | HMAC_MODE_FLAG_FULLSN ((uint8_t)0x40) |
HMAC mode bit 6: If set, include the 48 bits SN[2:3] and SN[4:7] in the message.; otherwise, the corresponding message bits are set to zero. | |
#define | HMAC_MODE_MASK ((uint8_t)0x74) |
HMAC mode bits 0, 1, 3, and 7 are 0. | |
#define | HMAC_DIGEST_SIZE (32u) |
HMAC size of digest response. | |
#define | HMAC_RSP_SIZE ATCA_RSP_SIZE_32 |
HMAC command response packet size. | |
Definitions for the Info Command | |
#define | INFO_PARAM1_IDX ATCA_PARAM1_IDX |
Info command index for 1. parameter. | |
#define | INFO_PARAM2_IDX ATCA_PARAM2_IDX |
Info command index for 2. parameter. | |
#define | INFO_COUNT ATCA_CMD_SIZE_MIN |
Info command packet size. | |
#define | INFO_MODE_REVISION ((uint8_t)0x00) |
Info mode Revision. | |
#define | INFO_MODE_KEY_VALID ((uint8_t)0x01) |
Info mode KeyValid. | |
#define | INFO_MODE_STATE ((uint8_t)0x02) |
Info mode State. | |
#define | INFO_MODE_LOCK_STATUS ((uint8_t)0x02) |
Info mode Lock status for ECC204,TA010,SHA10x devices. | |
#define | INFO_MODE_CHIP_STATUS ((uint8_t)0xC5) |
Info mode Chip status for ECC204,TA010,SHA10x devices. | |
#define | INFO_MODE_GPIO ((uint8_t)0x03) |
Info mode GPIO. | |
#define | INFO_MODE_VOL_KEY_PERMIT ((uint8_t)0x04) |
Info mode GPIO. | |
#define | INFO_MODE_MAX ((uint8_t)0x03) |
Info mode maximum value. | |
#define | INFO_NO_STATE ((uint8_t)0x00) |
Info mode is not the state mode. | |
#define | INFO_OUTPUT_STATE_MASK ((uint8_t)0x01) |
Info output state mask. | |
#define | INFO_DRIVER_STATE_MASK ((uint8_t)0x02) |
Info driver state mask. | |
#define | INFO_PARAM2_SET_LATCH_STATE ((uint16_t)0x0002) |
Info param2 to set the persistent latch state. | |
#define | INFO_PARAM2_LATCH_SET ((uint16_t)0x0001) |
Info param2 to set the persistent latch. | |
#define | INFO_PARAM2_LATCH_CLEAR ((uint16_t)0x0000) |
Info param2 to clear the persistent latch. | |
#define | INFO_SIZE ((uint8_t)0x04) |
Info return size. | |
#define | INFO_RSP_SIZE ATCA_RSP_SIZE_VAL |
Info command response packet size. | |
Definitions for the KDF Command | |
#define | KDF_MODE_IDX ATCA_PARAM1_IDX |
KDF command index for mode. | |
#define | KDF_KEYID_IDX ATCA_PARAM2_IDX |
KDF command index for key id. | |
#define | KDF_DETAILS_IDX ATCA_DATA_IDX |
KDF command index for details. | |
#define | KDF_DETAILS_SIZE (4u) |
KDF details (param3) size. | |
#define | KDF_MESSAGE_IDX (ATCA_DATA_IDX + KDF_DETAILS_SIZE) |
#define | KDF_MODE_SOURCE_MASK ((uint8_t)0x03) |
KDF mode source key mask. | |
#define | KDF_MODE_SOURCE_TEMPKEY ((uint8_t)0x00) |
KDF mode source key in TempKey. | |
#define | KDF_MODE_SOURCE_TEMPKEY_UP ((uint8_t)0x01) |
KDF mode source key in upper TempKey. | |
#define | KDF_MODE_SOURCE_SLOT ((uint8_t)0x02) |
KDF mode source key in a slot. | |
#define | KDF_MODE_SOURCE_ALTKEYBUF ((uint8_t)0x03) |
KDF mode source key in alternate key buffer. | |
#define | KDF_MODE_TARGET_MASK ((uint8_t)0x1C) |
KDF mode target key mask. | |
#define | KDF_MODE_TARGET_TEMPKEY ((uint8_t)0x00) |
KDF mode target key in TempKey. | |
#define | KDF_MODE_TARGET_TEMPKEY_UP ((uint8_t)0x04) |
KDF mode target key in upper TempKey. | |
#define | KDF_MODE_TARGET_SLOT ((uint8_t)0x08) |
KDF mode target key in slot. | |
#define | KDF_MODE_TARGET_ALTKEYBUF ((uint8_t)0x0C) |
KDF mode target key in alternate key buffer. | |
#define | KDF_MODE_TARGET_OUTPUT ((uint8_t)0x10) |
KDF mode target key in output buffer. | |
#define | KDF_MODE_TARGET_OUTPUT_ENC ((uint8_t)0x14) |
KDF mode target key encrypted in output buffer. | |
#define | KDF_MODE_ALG_MASK ((uint8_t)0x60) |
KDF mode algorithm mask. | |
#define | KDF_MODE_ALG_PRF ((uint8_t)0x00) |
KDF mode PRF algorithm. | |
#define | KDF_MODE_ALG_AES ((uint8_t)0x20) |
KDF mode AES algorithm. | |
#define | KDF_MODE_ALG_HKDF ((uint8_t)0x40) |
KDF mode HKDF algorithm. | |
#define | KDF_DETAILS_PRF_KEY_LEN_MASK ((uint32_t)0x00000003) |
KDF details for PRF, source key length mask. | |
#define | KDF_DETAILS_PRF_KEY_LEN_16 ((uint32_t)0x00000000) |
KDF details for PRF, source key length is 16 bytes. | |
#define | KDF_DETAILS_PRF_KEY_LEN_32 ((uint32_t)0x00000001) |
KDF details for PRF, source key length is 32 bytes. | |
#define | KDF_DETAILS_PRF_KEY_LEN_48 ((uint32_t)0x00000002) |
KDF details for PRF, source key length is 48 bytes. | |
#define | KDF_DETAILS_PRF_KEY_LEN_64 ((uint32_t)0x00000003) |
KDF details for PRF, source key length is 64 bytes. | |
#define | KDF_DETAILS_PRF_TARGET_LEN_MASK ((uint32_t)0x00000100) |
KDF details for PRF, target length mask. | |
#define | KDF_DETAILS_PRF_TARGET_LEN_32 ((uint32_t)0x00000000) |
KDF details for PRF, target length is 32 bytes. | |
#define | KDF_DETAILS_PRF_TARGET_LEN_64 ((uint32_t)0x00000100) |
KDF details for PRF, target length is 64 bytes. | |
#define | KDF_DETAILS_PRF_AEAD_MASK ((uint32_t)0x00000600) |
KDF details for PRF, AEAD processing mask. | |
#define | KDF_DETAILS_PRF_AEAD_MODE0 ((uint32_t)0x00000000) |
KDF details for PRF, AEAD no processing. | |
#define | KDF_DETAILS_PRF_AEAD_MODE1 ((uint32_t)0x00000200) |
KDF details for PRF, AEAD First 32 go to target, second 32 go to output buffer. | |
#define | KDF_DETAILS_AES_KEY_LOC_MASK ((uint32_t)0x00000003) |
KDF details for AES, key location mask. | |
#define | KDF_DETAILS_HKDF_MSG_LOC_MASK ((uint32_t)0x00000003) |
KDF details for HKDF, message location mask. | |
#define | KDF_DETAILS_HKDF_MSG_LOC_SLOT ((uint32_t)0x00000000) |
KDF details for HKDF, message location in slot. | |
#define | KDF_DETAILS_HKDF_MSG_LOC_TEMPKEY ((uint32_t)0x00000001) |
KDF details for HKDF, message location in TempKey. | |
#define | KDF_DETAILS_HKDF_MSG_LOC_INPUT ((uint32_t)0x00000002) |
KDF details for HKDF, message location in input parameter. | |
#define | KDF_DETAILS_HKDF_MSG_LOC_IV ((uint32_t)0x00000003) |
KDF details for HKDF, message location is a special IV function. | |
#define | KDF_DETAILS_HKDF_ZERO_KEY ((uint32_t)0x00000004) |
KDF details for HKDF, key is 32 bytes of zero. | |
Definitions for the Lock Command | |
#define | LOCK_ZONE_IDX ATCA_PARAM1_IDX |
Lock command index for zone. | |
#define | LOCK_SUMMARY_IDX ATCA_PARAM2_IDX |
Lock command index for summary. | |
#define | LOCK_COUNT ATCA_CMD_SIZE_MIN |
Lock command packet size. | |
#define | LOCK_ZONE_CONFIG ((uint8_t)0x00) |
Lock zone is Config. | |
#define | LOCK_ZONE_DATA ((uint8_t)0x01) |
Lock zone is OTP or Data. | |
#define | LOCK_ZONE_DATA_SLOT ((uint8_t)0x02) |
Lock slot of Data. | |
#define | LOCK_ZONE_CA2_DATA ((uint8_t)0x00) |
Lock second gen Data zone by slot. | |
#define | LOCK_ZONE_CA2_CONFIG ((uint8_t)0x01) |
Lock second gen configuration zone by slot. | |
#define | LOCK_ZONE_NO_CRC ((uint8_t)0x80) |
Lock command: Ignore summary. | |
#define | LOCK_ZONE_MASK ((uint8_t)0xBF) |
Lock parameter 1 bits 6 are 0. | |
#define | ATCA_UNLOCKED ((uint8_t)0x55) |
Value indicating an unlocked zone. | |
#define | ATCA_LOCKED ((uint8_t)0x00) |
Value indicating a locked zone. | |
#define | LOCK_RSP_SIZE ATCA_RSP_SIZE_MIN |
Lock command response packet size. | |
Definitions for the MAC Command | |
#define | MAC_MODE_IDX ATCA_PARAM1_IDX |
MAC command index for mode. | |
#define | MAC_KEYID_IDX ATCA_PARAM2_IDX |
MAC command index for key id. | |
#define | MAC_CHALLENGE_IDX ATCA_DATA_IDX |
MAC command index for optional challenge. | |
#define | MAC_COUNT_SHORT ATCA_CMD_SIZE_MIN |
MAC command packet size without challenge. | |
#define | MAC_COUNT_LONG (39u) |
MAC command packet size with challenge. | |
#define | MAC_MODE_CHALLENGE ((uint8_t)0x00) |
MAC mode 0: first SHA block from data slot. | |
#define | MAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) |
MAC mode bit 0: second SHA block from TempKey. | |
#define | MAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) |
MAC mode bit 1: first SHA block from TempKey. | |
#define | MAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
MAC mode bit 2: match TempKey.SourceFlag. | |
#define | MAC_MODE_PTNONCE_TEMPKEY ((uint8_t)0x06) |
MAC mode bit 0: second SHA block from TempKey. | |
#define | MAC_MODE_PASSTHROUGH ((uint8_t)0x07) |
MAC mode bit 0-2: pass-through mode. | |
#define | MAC_MODE_INCLUDE_OTP_88 ((uint8_t)0x10) |
MAC mode bit 4: include first 88 OTP bits. | |
#define | MAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) |
MAC mode bit 5: include first 64 OTP bits. | |
#define | MAC_MODE_INCLUDE_SN ((uint8_t)0x40) |
MAC mode bit 6: include serial number. | |
#define | MAC_CHALLENGE_SIZE (32u) |
MAC size of challenge. | |
#define | MAC_SIZE (32u) |
MAC size of response. | |
#define | MAC_MODE_MASK ((uint8_t)0x77) |
MAC mode bits 3 and 7 are 0. | |
#define | MAC_RSP_SIZE ATCA_RSP_SIZE_32 |
MAC command response packet size. | |
#define | MAC_SHA104_DEFAULT_KEYID ((uint16_t)0x0003) |
Definitions for the Nonce Command | |
#define | NONCE_MODE_IDX ATCA_PARAM1_IDX |
Nonce command index for mode. | |
#define | NONCE_PARAM2_IDX ATCA_PARAM2_IDX |
Nonce command index for 2. parameter. | |
#define | NONCE_INPUT_IDX ATCA_DATA_IDX |
Nonce command index for input data. | |
#define | NONCE_COUNT_SHORT (ATCA_CMD_SIZE_MIN + 20u) |
Nonce command packet size for 20 bytes of NumIn. | |
#define | NONCE_COUNT_LONG (ATCA_CMD_SIZE_MIN + 32u) |
Nonce command packet size for 32 bytes of NumIn. | |
#define | NONCE_COUNT_LONG_64 (ATCA_CMD_SIZE_MIN + 64u) |
Nonce command packet size for 64 bytes of NumIn. | |
#define | NONCE_MODE_MASK ((uint8_t)0x03) |
Nonce mode bits 2 to 7 are 0. | |
#define | NONCE_MODE_SEED_UPDATE ((uint8_t)0x00) |
Nonce mode: update seed. | |
#define | NONCE_MODE_NO_SEED_UPDATE ((uint8_t)0x01) |
Nonce mode: do not update seed. | |
#define | NONCE_MODE_INVALID ((uint8_t)0x02) |
Nonce mode 2 is invalid. | |
#define | NONCE_MODE_PASSTHROUGH ((uint8_t)0x03) |
Nonce mode: pass-through. | |
#define | NONCE_MODE_GEN_SESSION_KEY ((uint8_t)0x02) |
NOnce mode: Generate session key in ECC204 device. | |
#define | NONCE_MODE_INPUT_LEN_MASK ((uint8_t)0x20) |
Nonce mode: input size mask. | |
#define | NONCE_MODE_INPUT_LEN_32 ((uint8_t)0x00) |
Nonce mode: input size is 32 bytes. | |
#define | NONCE_MODE_INPUT_LEN_64 ((uint8_t)0x20) |
Nonce mode: input size is 64 bytes. | |
#define | NONCE_MODE_TARGET_MASK ((uint8_t)0xC0) |
Nonce mode: target mask. | |
#define | NONCE_MODE_TARGET_TEMPKEY ((uint8_t)0x00) |
Nonce mode: target is TempKey. | |
#define | NONCE_MODE_TARGET_MSGDIGBUF ((uint8_t)0x40) |
Nonce mode: target is Message Digest Buffer. | |
#define | NONCE_MODE_TARGET_ALTKEYBUF ((uint8_t)0x80) |
Nonce mode: target is Alternate Key Buffer. | |
#define | NONCE_ZERO_CALC_MASK ((uint16_t)0x8000) |
Nonce zero (param2): calculation mode mask. | |
#define | NONCE_ZERO_CALC_RANDOM ((uint16_t)0x0000) |
Nonce zero (param2): calculation mode random, use RNG in calculation and return RNG output. | |
#define | NONCE_ZERO_CALC_TEMPKEY ((uint16_t)0x8000) |
Nonce zero (param2): calculation mode TempKey, use TempKey in calculation and return new TempKey value. | |
#define | NONCE_NUMIN_SIZE (20) |
Nonce NumIn size for random modes. | |
#define | NONCE_NUMIN_SIZE_PASSTHROUGH (32) |
Nonce NumIn size for 32-byte pass-through mode. | |
#define | NONCE_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
Nonce command response packet size with no output. | |
#define | NONCE_RSP_SIZE_LONG ATCA_RSP_SIZE_32 |
Nonce command response packet size with output. | |
Definitions for the Pause Command | |
#define | PAUSE_SELECT_IDX ATCA_PARAM1_IDX |
Pause command index for Selector. | |
#define | PAUSE_PARAM2_IDX ATCA_PARAM2_IDX |
Pause command index for 2. parameter. | |
#define | PAUSE_COUNT ATCA_CMD_SIZE_MIN |
Pause command packet size. | |
#define | PAUSE_RSP_SIZE ATCA_RSP_SIZE_MIN |
Pause command response packet size. | |
Definitions for the PrivWrite Command | |
#define | PRIVWRITE_ZONE_IDX ATCA_PARAM1_IDX |
PrivWrite command index for zone. | |
#define | PRIVWRITE_KEYID_IDX ATCA_PARAM2_IDX |
PrivWrite command index for KeyID. | |
#define | PRIVWRITE_VALUE_IDX ( 5) |
PrivWrite command index for value. | |
#define | PRIVWRITE_MAC_IDX (41) |
PrivWrite command index for MAC. | |
#define | PRIVWRITE_COUNT (75) |
PrivWrite command packet size. | |
#define | PRIVWRITE_ZONE_MASK ((uint8_t)0x40) |
PrivWrite zone bits 0 to 5 and 7 are 0. | |
#define | PRIVWRITE_MODE_ENCRYPT ((uint8_t)0x40) |
PrivWrite mode: encrypted. | |
#define | PRIVWRITE_RSP_SIZE ATCA_RSP_SIZE_MIN |
PrivWrite command response packet size. | |
Definitions for the Random Command | |
#define | RANDOM_MODE_IDX ATCA_PARAM1_IDX |
Random command index for mode. | |
#define | RANDOM_PARAM2_IDX ATCA_PARAM2_IDX |
Random command index for 2. parameter. | |
#define | RANDOM_COUNT ATCA_CMD_SIZE_MIN |
Random command packet size. | |
#define | RANDOM_SEED_UPDATE ((uint8_t)0x00) |
Random mode for automatic seed update. | |
#define | RANDOM_NO_SEED_UPDATE ((uint8_t)0x01) |
Random mode for no seed update. | |
#define | RANDOM_NUM_SIZE ((uint8_t)32) |
Number of bytes in the data packet of a random command. | |
#define | RANDOM_RSP_SIZE ATCA_RSP_SIZE_32 |
Random command response packet size. | |
Definitions for the Read Command | |
#define | READ_ZONE_IDX ATCA_PARAM1_IDX |
Read command index for zone. | |
#define | READ_ADDR_IDX ATCA_PARAM2_IDX |
Read command index for address. | |
#define | READ_COUNT ATCA_CMD_SIZE_MIN |
Read command packet size. | |
#define | READ_ZONE_MASK ((uint8_t)0x83) |
Read zone bits 2 to 6 are 0. | |
#define | READ_4_RSP_SIZE ATCA_RSP_SIZE_VAL |
Read command response packet size when reading 4 bytes. | |
#define | READ_32_RSP_SIZE ATCA_RSP_SIZE_32 |
Read command response packet size when reading 32 bytes. | |
Definitions for the SecureBoot Command | |
#define | SECUREBOOT_MODE_IDX ATCA_PARAM1_IDX |
SecureBoot command index for mode. | |
#define | SECUREBOOT_DIGEST_SIZE (32u) |
SecureBoot digest input size. | |
#define | SECUREBOOT_SIGNATURE_SIZE (64u) |
SecureBoot signature input size. | |
#define | SECUREBOOT_COUNT_DIG (ATCA_CMD_SIZE_MIN + SECUREBOOT_DIGEST_SIZE) |
SecureBoot command packet size for just a digest. | |
#define | SECUREBOOT_COUNT_DIG_SIG (ATCA_CMD_SIZE_MIN + SECUREBOOT_DIGEST_SIZE + SECUREBOOT_SIGNATURE_SIZE) |
SecureBoot command packet size for a digest and signature. | |
#define | SECUREBOOT_MAC_SIZE (32u) |
SecureBoot MAC output size. | |
#define | SECUREBOOT_RSP_SIZE_NO_MAC ATCA_RSP_SIZE_MIN |
SecureBoot response packet size for no MAC. | |
#define | SECUREBOOT_RSP_SIZE_MAC (ATCA_PACKET_OVERHEAD + SECUREBOOT_MAC_SIZE) |
SecureBoot response packet size with MAC. | |
#define | SECUREBOOT_MODE_MASK ((uint8_t)0x07) |
SecureBoot mode mask. | |
#define | SECUREBOOT_MODE_FULL ((uint8_t)0x05) |
SecureBoot mode Full. | |
#define | SECUREBOOT_MODE_FULL_STORE ((uint8_t)0x06) |
SecureBoot mode FullStore. | |
#define | SECUREBOOT_MODE_FULL_COPY ((uint8_t)0x07) |
SecureBoot mode FullCopy. | |
#define | SECUREBOOT_MODE_PROHIBIT_FLAG ((uint8_t)0x40) |
SecureBoot mode flag to prohibit SecureBoot until next power cycle. | |
#define | SECUREBOOT_MODE_ENC_MAC_FLAG ((uint8_t)0x80) |
SecureBoot mode flag for encrypted digest and returning validating MAC. | |
#define | SECUREBOOTCONFIG_OFFSET (70) |
SecureBootConfig byte offset into the configuration zone. | |
#define | SECUREBOOTCONFIG_MODE_MASK ((uint16_t)0x0003) |
Mask for SecureBootMode field in SecureBootConfig value. | |
#define | SECUREBOOTCONFIG_MODE_DISABLED ((uint16_t)0x0000) |
Disabled SecureBootMode in SecureBootConfig value. | |
#define | SECUREBOOTCONFIG_MODE_FULL_BOTH ((uint16_t)0x0001) |
Both digest and signature always required SecureBootMode in SecureBootConfig value. | |
#define | SECUREBOOTCONFIG_MODE_FULL_SIG ((uint16_t)0x0002) |
Signature stored SecureBootMode in SecureBootConfig value. | |
#define | SECUREBOOTCONFIG_MODE_FULL_DIG ((uint16_t)0x0003) |
Digest stored SecureBootMode in SecureBootConfig value. | |
Definitions for the SelfTest Command | |
#define | SELFTEST_MODE_IDX ATCA_PARAM1_IDX |
SelfTest command index for mode. | |
#define | SELFTEST_COUNT ATCA_CMD_SIZE_MIN |
SelfTest command packet size. | |
#define | SELFTEST_MODE_RNG ((uint8_t)0x01) |
SelfTest mode RNG DRBG function. | |
#define | SELFTEST_MODE_ECDSA_SIGN_VERIFY ((uint8_t)0x04) |
SelfTest mode ECDSA verify function. | |
#define | SELFTEST_MODE_ECDH ((uint8_t)0x08) |
SelfTest mode ECDH function. | |
#define | SELFTEST_MODE_AES ((uint8_t)0x10) |
SelfTest mode AES encrypt function. | |
#define | SELFTEST_MODE_SHA ((uint8_t)0x20) |
SelfTest mode SHA function. | |
#define | SELFTEST_MODE_ALL ((uint8_t)0x3B) |
SelfTest mode all algorithms. | |
#define | SELFTEST_RSP_SIZE ATCA_RSP_SIZE_MIN |
SelfTest command response packet size. | |
Definitions for the SHA Command | |
#define | SHA_COUNT_SHORT ATCA_CMD_SIZE_MIN |
#define | SHA_COUNT_LONG ATCA_CMD_SIZE_MIN |
Just a starting size. | |
#define | ATCA_SHA_DIGEST_SIZE (32u) |
#define | SHA_DATA_MAX (64) |
#define | SHA_MODE_MASK ((uint8_t)0x07) |
Mask the bit 0-2. | |
#define | SHA_MODE_SHA256_START ((uint8_t)0x00) |
Initialization, does not accept a message. | |
#define | SHA_MODE_SHA256_UPDATE ((uint8_t)0x01) |
Add 64 bytes in the meesage to the SHA context. | |
#define | SHA_MODE_SHA256_END ((uint8_t)0x02) |
Complete the calculation and return the digest. | |
#define | SHA_MODE_SHA256_PUBLIC ((uint8_t)0x03) |
Add 64 byte ECC public key in the slot to the SHA context. | |
#define | SHA_MODE_HMAC_START ((uint8_t)0x04) |
Initialization, HMAC calculation. | |
#define | SHA_MODE_ECC204_HMAC_START ((uint8_t)0x03) |
Initialization, HMAC calculation for ECC204. | |
#define | SHA_MODE_HMAC_UPDATE ((uint8_t)0x01) |
Add 64 bytes in the meesage to the SHA context. | |
#define | SHA_MODE_HMAC_END ((uint8_t)0x05) |
Complete the HMAC computation and return digest. | |
#define | SHA_MODE_608_HMAC_END ((uint8_t)0x02) |
Complete the HMAC computation and return digest... Different command on 608. | |
#define | SHA_MODE_ECC204_HMAC_END ((uint8_t)0x02) |
Complete the HMAC computation and return digest... Different mode on ECC204. | |
#define | SHA_MODE_READ_CONTEXT ((uint8_t)0x06) |
Read current SHA-256 context out of the device. | |
#define | SHA_MODE_WRITE_CONTEXT ((uint8_t)0x07) |
Restore a SHA-256 context into the device. | |
#define | SHA_MODE_TARGET_MASK ((uint8_t)0xC0) |
Resulting digest target location mask. | |
#define | SHA_RSP_SIZE ATCA_RSP_SIZE_32 |
SHA command response packet size. | |
#define | SHA_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
SHA command response packet size only status code. | |
#define | SHA_RSP_SIZE_LONG ATCA_RSP_SIZE_32 |
SHA command response packet size. | |
Definitions for the Sign Command | |
#define | SIGN_MODE_IDX ATCA_PARAM1_IDX |
Sign command index for mode. | |
#define | SIGN_KEYID_IDX ATCA_PARAM2_IDX |
Sign command index for key id. | |
#define | SIGN_COUNT ATCA_CMD_SIZE_MIN |
Sign command packet size. | |
#define | SIGN_MODE_MASK ((uint8_t)0xE1) |
Sign mode bits 1 to 4 are 0. | |
#define | SIGN_MODE_INTERNAL ((uint8_t)0x00) |
Sign mode 0: internal. | |
#define | SIGN_MODE_INVALIDATE ((uint8_t)0x01) |
Sign mode bit 1: Signature will be used for Verify(Invalidate) | |
#define | SIGN_MODE_INCLUDE_SN ((uint8_t)0x40) |
Sign mode bit 6: include serial number. | |
#define | SIGN_MODE_EXTERNAL ((uint8_t)0x80) |
Sign mode bit 7: external. | |
#define | SIGN_MODE_SOURCE_MASK ((uint8_t)0x20) |
Sign mode message source mask. | |
#define | SIGN_MODE_SOURCE_TEMPKEY ((uint8_t)0x00) |
Sign mode message source is TempKey. | |
#define | SIGN_MODE_SOURCE_MSGDIGBUF ((uint8_t)0x20) |
Sign mode message source is the Message Digest Buffer. | |
#define | SIGN_RSP_SIZE ATCA_RSP_SIZE_MAX |
Sign command response packet size. | |
Definitions for the UpdateExtra Command | |
#define | UPDATE_MODE_IDX ATCA_PARAM1_IDX |
UpdateExtra command index for mode. | |
#define | UPDATE_VALUE_IDX ATCA_PARAM2_IDX |
UpdateExtra command index for new value. | |
#define | UPDATE_COUNT ATCA_CMD_SIZE_MIN |
UpdateExtra command packet size. | |
#define | UPDATE_MODE_USER_EXTRA ((uint8_t)0x00) |
UpdateExtra mode update UserExtra (config byte 84) | |
#define | UPDATE_MODE_SELECTOR ((uint8_t)0x01) |
UpdateExtra mode update Selector (config byte 85) | |
#define | UPDATE_MODE_USER_EXTRA_ADD UPDATE_MODE_SELECTOR |
UpdateExtra mode update UserExtraAdd (config byte 85) | |
#define | UPDATE_MODE_DEC_COUNTER ((uint8_t)0x02) |
UpdateExtra mode: decrement counter. | |
#define | UPDATE_RSP_SIZE ATCA_RSP_SIZE_MIN |
UpdateExtra command response packet size. | |
Definitions for the Verify Command | |
#define | VERIFY_MODE_IDX ATCA_PARAM1_IDX |
Verify command index for mode. | |
#define | VERIFY_KEYID_IDX ATCA_PARAM2_IDX |
Verify command index for key id. | |
#define | VERIFY_DATA_IDX ( 5) |
Verify command index for data. | |
#define | VERIFY_256_STORED_COUNT ( 71) |
Verify command packet size for 256-bit key in stored mode. | |
#define | VERIFY_283_STORED_COUNT ( 79) |
Verify command packet size for 283-bit key in stored mode. | |
#define | VERIFY_256_VALIDATE_COUNT ( 90) |
Verify command packet size for 256-bit key in validate mode. | |
#define | VERIFY_283_VALIDATE_COUNT ( 98) |
Verify command packet size for 283-bit key in validate mode. | |
#define | VERIFY_256_EXTERNAL_COUNT (135) |
Verify command packet size for 256-bit key in external mode. | |
#define | VERIFY_283_EXTERNAL_COUNT (151) |
Verify command packet size for 283-bit key in external mode. | |
#define | VERIFY_256_KEY_SIZE ( 64) |
Verify key size for 256-bit key. | |
#define | VERIFY_283_KEY_SIZE ( 72) |
Verify key size for 283-bit key. | |
#define | VERIFY_256_SIGNATURE_SIZE ( 64) |
Verify signature size for 256-bit key. | |
#define | VERIFY_283_SIGNATURE_SIZE ( 72) |
Verify signature size for 283-bit key. | |
#define | VERIFY_OTHER_DATA_SIZE ( 19u) |
Verify size of "other data". | |
#define | VERIFY_MODE_MASK ((uint8_t)0x07) |
Verify mode bits 3 to 7 are 0. | |
#define | VERIFY_MODE_STORED ((uint8_t)0x00) |
Verify mode: stored. | |
#define | VERIFY_MODE_VALIDATE_EXTERNAL ((uint8_t)0x01) |
Verify mode: validate external. | |
#define | VERIFY_MODE_EXTERNAL ((uint8_t)0x02) |
Verify mode: external. | |
#define | VERIFY_MODE_VALIDATE ((uint8_t)0x03) |
Verify mode: validate. | |
#define | VERIFY_MODE_INVALIDATE ((uint8_t)0x07) |
Verify mode: invalidate. | |
#define | VERIFY_MODE_SOURCE_MASK ((uint8_t)0x20) |
Verify mode message source mask. | |
#define | VERIFY_MODE_SOURCE_TEMPKEY ((uint8_t)0x00) |
Verify mode message source is TempKey. | |
#define | VERIFY_MODE_SOURCE_MSGDIGBUF ((uint8_t)0x20) |
Verify mode message source is the Message Digest Buffer. | |
#define | VERIFY_MODE_MAC_FLAG ((uint8_t)0x80) |
Verify mode: MAC. | |
#define | VERIFY_KEY_B283 ((uint16_t)0x0000) |
Verify key type: B283. | |
#define | VERIFY_KEY_K283 ((uint16_t)0x0001) |
Verify key type: K283. | |
#define | VERIFY_KEY_P256 ((uint16_t)0x0004) |
Verify key type: P256. | |
#define | VERIFY_RSP_SIZE ATCA_RSP_SIZE_MIN |
Verify command response packet size. | |
#define | VERIFY_RSP_SIZE_MAC ATCA_RSP_SIZE_32 |
Verify command response packet size with validating MAC. | |
Definitions for the Write Command | |
#define | WRITE_ZONE_IDX ATCA_PARAM1_IDX |
Write command index for zone. | |
#define | WRITE_ADDR_IDX ATCA_PARAM2_IDX |
Write command index for address. | |
#define | WRITE_VALUE_IDX ATCA_DATA_IDX |
Write command index for data. | |
#define | WRITE_MAC_VS_IDX ( 9) |
Write command index for MAC following short data. | |
#define | WRITE_MAC_VL_IDX (37) |
Write command index for MAC following long data. | |
#define | WRITE_MAC_SIZE (32u) |
Write MAC size. | |
#define | WRITE_ZONE_MASK ((uint8_t)0xC3) |
Write zone bits 2 to 5 are 0. | |
#define | WRITE_ZONE_WITH_MAC ((uint8_t)0x40) |
Write zone bit 6: write encrypted with MAC. | |
#define | WRITE_ZONE_OTP ((uint8_t)1) |
Write zone id OTP. | |
#define | WRITE_ZONE_DATA ((uint8_t)2) |
Write zone id data. | |
#define | WRITE_RSP_SIZE ATCA_RSP_SIZE_MIN |
Write command response packet size. | |
Functions | |
ATCA_STATUS | atInfo (ATCADeviceType device_type, ATCAPacket *packet) |
ATCACommand Info method. | |
ATCA_STATUS | atPause (ATCADeviceType device_type, ATCAPacket *packet) |
ATCACommand Pause method. | |
bool | atIsSHAFamily (ATCADeviceType device_type) |
determines if a given device type is a SHA device or a superset of a SHA device | |
bool | atIsECCFamily (ATCADeviceType device_type) |
determines if a given device type is an ECC device or a superset of a ECC device | |
ATCA_STATUS | isATCAError (uint8_t *data) |
checks for basic error frame in data | |
void | atCRC (size_t length, const uint8_t *data, uint8_t *crc_le) |
Calculates CRC over the given raw data and returns the CRC in little-endian byte order. | |
void | atCalcCrc (ATCAPacket *packet) |
This function calculates CRC and adds it to the correct offset in the packet data. | |
ATCA_STATUS | atCheckCrc (const uint8_t *response) |
This function checks the consistency of a response. | |
Microchip Crypto Auth device command object - this is a command builder only, it does not send the command. The result of a command method is a fully formed packet, ready to send to the ATCAIFace object to dispatch.
This command object supports the ATSHA and ATECC device family. The command list is a superset of all device commands for this family. The command object differentiates the packet contents based on specific device type within the family.
void atCalcCrc | ( | ATCAPacket * | packet | ) |
This function calculates CRC and adds it to the correct offset in the packet data.
[in] | packet | Packet to calculate CRC data for |
ATCA_STATUS atCheckCrc | ( | const uint8_t * | response | ) |
This function checks the consistency of a response.
[in] | response | pointer to response |
void atCRC | ( | size_t | length, |
const uint8_t * | data, | ||
uint8_t * | crc_le | ||
) |
Calculates CRC over the given raw data and returns the CRC in little-endian byte order.
[in] | length | Size of data not including the CRC byte positions |
[in] | data | Pointer to the data over which to compute the CRC |
[out] | crc_le | Pointer to the place where the two-bytes of CRC will be returned in little-endian byte order. |
ATCA_STATUS atInfo | ( | ATCADeviceType | device_type, |
ATCAPacket * | packet | ||
) |
ATCACommand Info method.
[in] | ca_cmd | instance |
[in] | packet | pointer to the packet containing the command being built |
bool atIsECCFamily | ( | ATCADeviceType | device_type | ) |
determines if a given device type is an ECC device or a superset of a ECC device
[in] | device_type | Type of device to check for family type |
bool atIsSHAFamily | ( | ATCADeviceType | device_type | ) |
determines if a given device type is a SHA device or a superset of a SHA device
[in] | device_type | Type of device to check for family type |
ATCA_STATUS atPause | ( | ATCADeviceType | device_type, |
ATCAPacket * | packet | ||
) |
ATCACommand Pause method.
[in] | ca_cmd | instance |
[in] | packet | pointer to the packet containing the command being built |
ATCA_STATUS isATCAError | ( | uint8_t * | data | ) |
checks for basic error frame in data
[in] | data | pointer to received data - expected to be in the form of a CA device response frame |