CryptoAuthLib
Atmel CryptoAuthentication Library
|
Atmel 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...
Go to the source code of this file.
Data Structures | |
struct | ATCAPacket |
an ATCA packet structure. This is a superset of the packet transmitted on the wire. It's also used as a buffer for receiving the response More... | |
Macros | |
#define | ATCA_CMD_SIZE_MIN ((uint8_t)7) |
minimum number of bytes in command (from count byte to second CRC byte) More... | |
#define | ATCA_CMD_SIZE_MAX ((uint8_t)4 * 36 + 7) |
maximum size of command packet (Verify) More... | |
#define | CMD_STATUS_SUCCESS ((uint8_t)0x00) |
status byte for success More... | |
#define | CMD_STATUS_WAKEUP ((uint8_t)0x11) |
status byte after wake-up More... | |
#define | CMD_STATUS_BYTE_PARSE ((uint8_t)0x03) |
command parse error More... | |
#define | CMD_STATUS_BYTE_ECC ((uint8_t)0x05) |
command ECC error More... | |
#define | CMD_STATUS_BYTE_EXEC ((uint8_t)0x0F) |
command execution error More... | |
#define | CMD_STATUS_BYTE_COMM ((uint8_t)0xFF) |
communication error More... | |
opcodes for ATATECC Commands | |
#define | ATCA_CHECKMAC ((uint8_t)0x28) |
CheckMac command op-code. More... | |
#define | ATCA_DERIVE_KEY ((uint8_t)0x1C) |
DeriveKey command op-code. More... | |
#define | ATCA_INFO ((uint8_t)0x30) |
Info command op-code. More... | |
#define | ATCA_GENDIG ((uint8_t)0x15) |
GenDig command op-code. More... | |
#define | ATCA_GENKEY ((uint8_t)0x40) |
GenKey command op-code. More... | |
#define | ATCA_HMAC ((uint8_t)0x11) |
HMAC command op-code. More... | |
#define | ATCA_LOCK ((uint8_t)0x17) |
Lock command op-code. More... | |
#define | ATCA_MAC ((uint8_t)0x08) |
MAC command op-code. More... | |
#define | ATCA_NONCE ((uint8_t)0x16) |
Nonce command op-code. More... | |
#define | ATCA_PAUSE ((uint8_t)0x01) |
Pause command op-code. More... | |
#define | ATCA_PRIVWRITE ((uint8_t)0x46) |
PrivWrite command op-code. More... | |
#define | ATCA_RANDOM ((uint8_t)0x1B) |
Random command op-code. More... | |
#define | ATCA_READ ((uint8_t)0x02) |
Read command op-code. More... | |
#define | ATCA_SIGN ((uint8_t)0x41) |
Sign command op-code. More... | |
#define | ATCA_UPDATE_EXTRA ((uint8_t)0x20) |
UpdateExtra command op-code. More... | |
#define | ATCA_VERIFY ((uint8_t)0x45) |
GenKey command op-code. More... | |
#define | ATCA_WRITE ((uint8_t)0x12) |
Write command op-code. More... | |
#define | ATCA_ECDH ((uint8_t)0x43) |
ECDH command op-code. More... | |
#define | ATCA_COUNTER ((uint8_t)0x24) |
Counter command op-code. More... | |
#define | ATCA_SHA ((uint8_t)0x47) |
SHA command op-code. More... | |
Definitions of Data and Packet Sizes | |
#define | ATCA_BLOCK_SIZE (32) |
size of a block More... | |
#define | ATCA_WORD_SIZE (4) |
size of a word More... | |
#define | ATCA_PUB_KEY_PAD (4) |
size of the public key pad More... | |
#define | ATCA_SERIAL_NUM_SIZE (9) |
number of bytes in the device serial number More... | |
#define | ATCA_RSP_SIZE_VAL ((uint8_t)7) |
size of response packet containing four bytes of data More... | |
#define | ATCA_KEY_COUNT (16) |
number of keys More... | |
#define | ATCA_CONFIG_SIZE (128) |
size of configuration zone More... | |
#define | ATCA_SHA_CONFIG_SIZE (88) |
size of configuration zone More... | |
#define | ATCA_OTP_SIZE (64) |
size of OTP zone More... | |
#define | ATCA_DATA_SIZE (ATCA_KEY_COUNT * ATCA_KEY_SIZE) |
size of data zone More... | |
#define | ATCA_COUNT_SIZE ((uint8_t)1) |
Number of bytes in the command packet Count. More... | |
#define | ATCA_CRC_SIZE ((uint8_t)2) |
Number of bytes in the command packet CRC. More... | |
#define | ATCA_PACKET_OVERHEAD (ATCA_COUNT_SIZE + ATCA_CRC_SIZE) |
Number of bytes in the command packet. More... | |
#define | ATCA_PUB_KEY_SIZE (64) |
size of a p256 public key More... | |
#define | ATCA_PRIV_KEY_SIZE (32) |
size of a p256 private key More... | |
#define | ATCA_SIG_SIZE (64) |
size of a p256 signature More... | |
#define | ATCA_KEY_SIZE (32) |
size of a symmetric SHA key More... | |
#define | RSA2048_KEY_SIZE (256) |
size of a RSA private key More... | |
#define | ATCA_RSP_SIZE_MIN ((uint8_t)4) |
minimum number of bytes in response More... | |
#define | ATCA_RSP_SIZE_4 ((uint8_t)7) |
size of response packet containing 4 bytes data More... | |
#define | ATCA_RSP_SIZE_72 ((uint8_t)75) |
size of response packet containing 64 bytes data More... | |
#define | ATCA_RSP_SIZE_64 ((uint8_t)67) |
size of response packet containing 64 bytes data More... | |
#define | ATCA_RSP_SIZE_32 ((uint8_t)35) |
size of response packet containing 32 bytes data More... | |
#define | ATCA_RSP_SIZE_MAX ((uint8_t)75) |
maximum size of response packet (GenKey and Verify command) More... | |
Definitions for Command Parameter Ranges | |
#define | ATCA_KEY_ID_MAX ((uint8_t)15) |
maximum value for key id More... | |
#define | ATCA_OTP_BLOCK_MAX ((uint8_t)1) |
maximum value for OTP block More... | |
Definitions for Indexes Common to All Commands | |
#define | ATCA_COUNT_IDX (0) |
command packet index for count More... | |
#define | ATCA_OPCODE_IDX (1) |
command packet index for op-code More... | |
#define | ATCA_PARAM1_IDX (2) |
command packet index for first parameter More... | |
#define | ATCA_PARAM2_IDX (3) |
command packet index for second parameter More... | |
#define | ATCA_DATA_IDX (5) |
command packet index for data load More... | |
#define | ATCA_RSP_DATA_IDX (1) |
buffer index of data in response More... | |
Definitions for Zone and Address Parameters | |
#define | ATCA_ZONE_CONFIG ((uint8_t)0x00) |
Configuration zone. More... | |
#define | ATCA_ZONE_OTP ((uint8_t)0x01) |
OTP (One Time Programming) zone. More... | |
#define | ATCA_ZONE_DATA ((uint8_t)0x02) |
Data zone. More... | |
#define | ATCA_ZONE_MASK ((uint8_t)0x03) |
Zone mask. More... | |
#define | ATCA_ZONE_READWRITE_32 ((uint8_t)0x80) |
Zone bit 7 set: Access 32 bytes, otherwise 4 bytes. More... | |
#define | ATCA_ZONE_ACCESS_4 ((uint8_t)4) |
Read or write 4 bytes. More... | |
#define | ATCA_ZONE_ACCESS_32 ((uint8_t)32) |
Read or write 32 bytes. More... | |
#define | ATCA_ADDRESS_MASK_CONFIG (0x001F) |
Address bits 5 to 7 are 0 for Configuration zone. More... | |
#define | ATCA_ADDRESS_MASK_OTP (0x000F) |
Address bits 4 to 7 are 0 for OTP zone. More... | |
#define | ATCA_ADDRESS_MASK (0x007F) |
Address bit 7 to 15 are always 0. More... | |
Definitions for ECC Key type | |
#define | ATCA_B283_KEY_TYPE 0 |
B283 NIST ECC key. More... | |
#define | ATCA_K283_KEY_TYPE 1 |
K283 NIST ECC key. More... | |
#define | ATCA_P256_KEY_TYPE 4 |
P256 NIST ECC key. More... | |
Definitions for the ECDH Command | |
#define | ECDH_PREFIX_MODE ((uint8_t)0x00) |
#define | ECDH_COUNT (71) |
#define | ECDH_PUBKEYIN_SIZE (64) |
Definitions for the CheckMac Command | |
#define | CHECKMAC_MODE_IDX ATCA_PARAM1_IDX |
CheckMAC command index for mode. More... | |
#define | CHECKMAC_KEYID_IDX ATCA_PARAM2_IDX |
CheckMAC command index for key identifier. More... | |
#define | CHECKMAC_CLIENT_CHALLENGE_IDX ATCA_DATA_IDX |
CheckMAC command index for client challenge. More... | |
#define | CHECKMAC_CLIENT_RESPONSE_IDX (37) |
CheckMAC command index for client response. More... | |
#define | CHECKMAC_DATA_IDX (69) |
CheckMAC command index for other data. More... | |
#define | CHECKMAC_COUNT (84) |
CheckMAC command packet size. More... | |
#define | CHECKMAC_MODE_CHALLENGE ((uint8_t)0x00) |
CheckMAC mode 0: first SHA block from key id. More... | |
#define | CHECKMAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) |
CheckMAC mode bit 0: second SHA block from TempKey. More... | |
#define | CHECKMAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) |
CheckMAC mode bit 1: first SHA block from TempKey. More... | |
#define | CHECKMAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
CheckMAC mode bit 2: match TempKey.SourceFlag. More... | |
#define | CHECKMAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) |
CheckMAC mode bit 5: include first 64 OTP bits. More... | |
#define | CHECKMAC_MODE_MASK ((uint8_t)0x27) |
CheckMAC mode bits 3, 4, 6, and 7 are 0. More... | |
#define | CHECKMAC_CLIENT_CHALLENGE_SIZE (32) |
CheckMAC size of client challenge. More... | |
#define | CHECKMAC_CLIENT_RESPONSE_SIZE (32) |
CheckMAC size of client response. More... | |
#define | CHECKMAC_OTHER_DATA_SIZE (13) |
CheckMAC size of "other data". More... | |
#define | CHECKMAC_CLIENT_COMMAND_SIZE (4) |
CheckMAC size of client command header size inside "other data". More... | |
#define | CHECKMAC_CMD_MATCH (0) |
CheckMAC return value when there is a match. More... | |
#define | CHECKMAC_CMD_MISMATCH (1) |
CheckMAC return value when there is a mismatch. More... | |
Definitions for the DeriveKey Command | |
#define | DERIVE_KEY_RANDOM_IDX ATCA_PARAM1_IDX |
DeriveKey command index for random bit. More... | |
#define | DERIVE_KEY_TARGETKEY_IDX ATCA_PARAM2_IDX |
DeriveKey command index for target slot. More... | |
#define | DERIVE_KEY_MAC_IDX ATCA_DATA_IDX |
DeriveKey command index for optional MAC. More... | |
#define | DERIVE_KEY_COUNT_SMALL ATCA_CMD_SIZE_MIN |
DeriveKey command packet size without MAC. More... | |
#define | DERIVE_KEY_COUNT_LARGE (39) |
DeriveKey command packet size with MAC. More... | |
#define | DERIVE_KEY_RANDOM_FLAG ((uint8_t)4) |
DeriveKey 1. parameter; has to match TempKey.SourceFlag. More... | |
#define | DERIVE_KEY_MAC_SIZE (32) |
DeriveKey MAC size. More... | |
Definitions for the GenDig Command | |
#define | GENDIG_ZONE_IDX ATCA_PARAM1_IDX |
GenDig command index for zone. More... | |
#define | GENDIG_KEYID_IDX ATCA_PARAM2_IDX |
GenDig command index for key id. More... | |
#define | GENDIG_DATA_IDX ATCA_DATA_IDX |
GenDig command index for optional data. More... | |
#define | GENDIG_COUNT ATCA_CMD_SIZE_MIN |
GenDig command packet size without "other data". More... | |
#define | GENDIG_COUNT_DATA (11) |
GenDig command packet size with "other data". More... | |
#define | GENDIG_OTHER_DATA_SIZE (32) |
GenDig size of "other data". Is 4 bytes for SHA204, can be either 4 or 32 for ECC. More... | |
#define | GENDIG_ZONE_CONFIG ((uint8_t)0) |
GenDig zone id config. More... | |
#define | GENDIG_ZONE_OTP ((uint8_t)1) |
GenDig zone id OTP. More... | |
#define | GENDIG_ZONE_DATA ((uint8_t)2) |
GenDig zone id data. More... | |
Definitions for the HMAC Command | |
#define | HMAC_MODE_IDX ATCA_PARAM1_IDX |
HMAC command index for mode. More... | |
#define | HMAC_KEYID_IDX ATCA_PARAM2_IDX |
HMAC command index for key id. More... | |
#define | HMAC_COUNT ATCA_CMD_SIZE_MIN |
HMAC command packet size. More... | |
#define | HMAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
HMAC mode bit 2: match TempKey.SourceFlag. More... | |
#define | HMAC_MODE_MASK ((uint8_t)0x74) |
HMAC mode bits 0, 1, 3, and 7 are 0. More... | |
Definitions for the Info Command | |
#define | INFO_PARAM1_IDX ATCA_PARAM1_IDX |
Info command index for 1. parameter. More... | |
#define | INFO_PARAM2_IDX ATCA_PARAM2_IDX |
Info command index for 2. parameter. More... | |
#define | INFO_COUNT ATCA_CMD_SIZE_MIN |
Info command packet size. More... | |
#define | INFO_MODE_REVISION ((uint8_t)0x00) |
Info mode Revision. More... | |
#define | INFO_MODE_KEY_VALID ((uint8_t)0x01) |
Info mode KeyValid. More... | |
#define | INFO_MODE_STATE ((uint8_t)0x02) |
Info mode State. More... | |
#define | INFO_MODE_GPIO ((uint8_t)0x03) |
Info mode GPIO. More... | |
#define | INFO_MODE_MAX ((uint8_t)0x03) |
Info mode maximum value. More... | |
#define | INFO_NO_STATE ((uint8_t)0x00) |
Info mode is not the state mode. More... | |
#define | INFO_OUTPUT_STATE_MASK ((uint8_t)0x01) |
Info output state mask. More... | |
#define | INFO_DRIVER_STATE_MASK ((uint8_t)0x02) |
Info driver state mask. More... | |
#define | INFO_PARAM2_MAX ((uint8_t)0x03) |
Info param2 (state) maximum value. More... | |
#define | INFO_SIZE ((uint8_t)0x04) |
Info param2 (state) maximum value. More... | |
Definitions for the Lock Command | |
#define | LOCK_ZONE_IDX ATCA_PARAM1_IDX |
Lock command index for zone. More... | |
#define | LOCK_SUMMARY_IDX ATCA_PARAM2_IDX |
Lock command index for summary. More... | |
#define | LOCK_COUNT ATCA_CMD_SIZE_MIN |
Lock command packet size. More... | |
#define | LOCK_ZONE_CONFIG ((uint8_t)0x00) |
Lock zone is Config. More... | |
#define | LOCK_ZONE_DATA ((uint8_t)0x01) |
Lock zone is OTP or Data. More... | |
#define | LOCK_ZONE_DATA_SLOT ((uint8_t)0x02) |
Lock slot of Data. More... | |
#define | LOCK_ZONE_NO_CRC ((uint8_t)0x80) |
Lock command: Ignore summary. More... | |
#define | LOCK_ZONE_MASK (0xBF) |
Lock parameter 1 bits 6 are 0. More... | |
Definitions for the MAC Command | |
#define | MAC_MODE_IDX ATCA_PARAM1_IDX |
MAC command index for mode. More... | |
#define | MAC_KEYID_IDX ATCA_PARAM2_IDX |
MAC command index for key id. More... | |
#define | MAC_CHALLENGE_IDX ATCA_DATA_IDX |
MAC command index for optional challenge. More... | |
#define | MAC_COUNT_SHORT ATCA_CMD_SIZE_MIN |
MAC command packet size without challenge. More... | |
#define | MAC_COUNT_LONG (39) |
MAC command packet size with challenge. More... | |
#define | MAC_MODE_CHALLENGE ((uint8_t)0x00) |
MAC mode 0: first SHA block from data slot. More... | |
#define | MAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) |
MAC mode bit 0: second SHA block from TempKey. More... | |
#define | MAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) |
MAC mode bit 1: first SHA block from TempKey. More... | |
#define | MAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
MAC mode bit 2: match TempKey.SourceFlag. More... | |
#define | MAC_MODE_PTNONCE_TEMPKEY ((uint8_t)0x06) |
MAC mode bit 0: second SHA block from TempKey. More... | |
#define | MAC_MODE_PASSTHROUGH ((uint8_t)0x07) |
MAC mode bit 0-2: pass-through mode. More... | |
#define | MAC_MODE_INCLUDE_OTP_88 ((uint8_t)0x10) |
MAC mode bit 4: include first 88 OTP bits. More... | |
#define | MAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) |
MAC mode bit 5: include first 64 OTP bits. More... | |
#define | MAC_MODE_INCLUDE_SN ((uint8_t)0x40) |
MAC mode bit 6: include serial number. More... | |
#define | MAC_CHALLENGE_SIZE (32) |
MAC size of challenge. More... | |
#define | MAC_SIZE (32) |
MAC size of response. More... | |
#define | MAC_MODE_MASK ((uint8_t)0x77) |
MAC mode bits 3 and 7 are 0. More... | |
Definitions for the Nonce Command | |
#define | NONCE_MODE_IDX ATCA_PARAM1_IDX |
Nonce command index for mode. More... | |
#define | NONCE_PARAM2_IDX ATCA_PARAM2_IDX |
Nonce command index for 2. parameter. More... | |
#define | NONCE_INPUT_IDX ATCA_DATA_IDX |
Nonce command index for input data. More... | |
#define | NONCE_COUNT_SHORT (27) |
Nonce command packet size for 20 bytes of data. More... | |
#define | NONCE_COUNT_LONG (39) |
Nonce command packet size for 32 bytes of data. More... | |
#define | NONCE_MODE_MASK ((uint8_t)0x03) |
Nonce mode bits 2 to 7 are 0. More... | |
#define | NONCE_MODE_SEED_UPDATE ((uint8_t)0x00) |
Nonce mode: update seed. More... | |
#define | NONCE_MODE_NO_SEED_UPDATE ((uint8_t)0x01) |
Nonce mode: do not update seed. More... | |
#define | NONCE_MODE_INVALID ((uint8_t)0x02) |
Nonce mode 2 is invalid. More... | |
#define | NONCE_MODE_PASSTHROUGH ((uint8_t)0x03) |
Nonce mode: pass-through. More... | |
#define | NONCE_MODE_RANDOM_OUT ((uint16_t)0x0000) |
Nonce mode: output RandOut or single byte of zero. More... | |
#define | NONCE_MODE_TEMPKEY_OUT ((uint16_t)0x0080) |
Nonce mode: output RandOut or single byte of zero. More... | |
#define | NONCE_NUMIN_SIZE (20) |
Nonce data length. More... | |
#define | NONCE_NUMIN_SIZE_PASSTHROUGH (32) |
Nonce data length in pass-through mode (mode = 3) More... | |
Definitions for the Pause Command | |
#define | PAUSE_SELECT_IDX ATCA_PARAM1_IDX |
Pause command index for Selector. More... | |
#define | PAUSE_PARAM2_IDX ATCA_PARAM2_IDX |
Pause command index for 2. parameter. More... | |
#define | PAUSE_COUNT ATCA_CMD_SIZE_MIN |
Pause command packet size. More... | |
Definitions for the PrivWrite Command | |
#define | PRIVWRITE_ZONE_IDX ATCA_PARAM1_IDX |
PrivWrite command index for zone. More... | |
#define | PRIVWRITE_KEYID_IDX ATCA_PARAM2_IDX |
PrivWrite command index for KeyID. More... | |
#define | PRIVWRITE_VALUE_IDX ( 5) |
PrivWrite command index for value. More... | |
#define | PRIVWRITE_MAC_IDX (41) |
PrivWrite command index for MAC. More... | |
#define | PRIVWRITE_COUNT (75) |
PrivWrite command packet size. More... | |
#define | PRIVWRITE_ZONE_MASK ((uint8_t)0x40) |
PrivWrite zone bits 0 to 5 and 7 are 0. More... | |
#define | PRIVWRITE_MODE_ENCRYPT ((uint8_t)0x40) |
PrivWrite mode: encrypted. More... | |
Definitions for the Random Command | |
#define | RANDOM_MODE_IDX ATCA_PARAM1_IDX |
Random command index for mode. More... | |
#define | RANDOM_PARAM2_IDX ATCA_PARAM2_IDX |
Random command index for 2. parameter. More... | |
#define | RANDOM_COUNT ATCA_CMD_SIZE_MIN |
Random command packet size. More... | |
#define | RANDOM_SEED_UPDATE ((uint8_t)0x00) |
Random mode for automatic seed update. More... | |
#define | RANDOM_NO_SEED_UPDATE ((uint8_t)0x01) |
Random mode for no seed update. More... | |
#define | RANDOM_NUM_SIZE ((uint8_t)0x20) |
Number of bytes in the data packet of a random command. More... | |
Definitions for the Read Command | |
#define | READ_ZONE_IDX ATCA_PARAM1_IDX |
Read command index for zone. More... | |
#define | READ_ADDR_IDX ATCA_PARAM2_IDX |
Read command index for address. More... | |
#define | READ_COUNT ATCA_CMD_SIZE_MIN |
Read command packet size. More... | |
#define | READ_ZONE_MASK ((uint8_t)0x83) |
Read zone bits 2 to 6 are 0. More... | |
Definitions for the Sign Command | |
#define | SIGN_MODE_IDX ATCA_PARAM1_IDX |
Sign command index for mode. More... | |
#define | SIGN_KEYID_IDX ATCA_PARAM2_IDX |
Sign command index for key id. More... | |
#define | SIGN_COUNT ATCA_CMD_SIZE_MIN |
Sign command packet size. More... | |
#define | SIGN_MODE_MASK ((uint8_t)0xC0) |
Sign mode bits 0 to 5 are 0. More... | |
#define | SIGN_MODE_INTERNAL ((uint8_t)0x00) |
Sign mode 0: internal. More... | |
#define | SIGN_MODE_INCLUDE_SN ((uint8_t)0x40) |
Sign mode bit 6: include serial number. More... | |
#define | SIGN_MODE_EXTERNAL ((uint8_t)0x80) |
Sign mode bit 7: external. More... | |
Definitions for the UpdateExtra Command | |
#define | UPDATE_MODE_IDX ATCA_PARAM1_IDX |
UpdateExtra command index for mode. More... | |
#define | UPDATE_VALUE_IDX ATCA_PARAM2_IDX |
UpdateExtra command index for new value. More... | |
#define | UPDATE_COUNT ATCA_CMD_SIZE_MIN |
UpdateExtra command packet size. More... | |
#define | UPDATE_CONFIG_BYTE_85 ((uint8_t)0x01) |
UpdateExtra mode: update Config byte 85. More... | |
Definitions for the Verify Command | |
#define | VERIFY_MODE_IDX ATCA_PARAM1_IDX |
Verify command index for mode. More... | |
#define | VERIFY_KEYID_IDX ATCA_PARAM2_IDX |
Verify command index for key id. More... | |
#define | VERIFY_DATA_IDX ( 5) |
Verify command index for data. More... | |
#define | VERIFY_256_STORED_COUNT ( 71) |
Verify command packet size for 256-bit key in stored mode. More... | |
#define | VERIFY_283_STORED_COUNT ( 79) |
Verify command packet size for 283-bit key in stored mode. More... | |
#define | VERIFY_256_VALIDATE_COUNT ( 90) |
Verify command packet size for 256-bit key in validate mode. More... | |
#define | VERIFY_283_VALIDATE_COUNT ( 98) |
Verify command packet size for 283-bit key in validate mode. More... | |
#define | VERIFY_256_EXTERNAL_COUNT (135) |
Verify command packet size for 256-bit key in external mode. More... | |
#define | VERIFY_283_EXTERNAL_COUNT (151) |
Verify command packet size for 283-bit key in external mode. More... | |
#define | VERIFY_256_KEY_SIZE ( 64) |
Verify key size for 256-bit key. More... | |
#define | VERIFY_283_KEY_SIZE ( 72) |
Verify key size for 283-bit key. More... | |
#define | VERIFY_256_SIGNATURE_SIZE ( 64) |
Verify signature size for 256-bit key. More... | |
#define | VERIFY_283_SIGNATURE_SIZE ( 72) |
Verify signature size for 283-bit key. More... | |
#define | VERIFY_OTHER_DATA_SIZE ( 19) |
Verify size of "other data". More... | |
#define | VERIFY_MODE_MASK ((uint8_t)0x03) |
Verify mode bits 2 to 7 are 0. More... | |
#define | VERIFY_MODE_STORED ((uint8_t)0x00) |
Verify mode: stored. More... | |
#define | VERIFY_MODE_VALIDATEEXTERNAL ((uint8_t)0x01) |
Verify mode: validate external. More... | |
#define | VERIFY_MODE_EXTERNAL ((uint8_t)0x02) |
Verify mode: external. More... | |
#define | VERIFY_MODE_VALIDATE ((uint8_t)0x03) |
Verify mode: validate. More... | |
#define | VERIFY_MODE_INVALIDATE ((uint8_t)0x07) |
Verify mode: invalidate. More... | |
#define | VERIFY_KEY_B283 ((uint16_t)0x0000) |
Verify key type: B283. More... | |
#define | VERIFY_KEY_K283 ((uint16_t)0x0001) |
Verify key type: K283. More... | |
#define | VERIFY_KEY_P256 ((uint16_t)0x0004) |
Verify key type: P256. More... | |
Definitions for the Write Command | |
#define | WRITE_ZONE_IDX ATCA_PARAM1_IDX |
Write command index for zone. More... | |
#define | WRITE_ADDR_IDX ATCA_PARAM2_IDX |
Write command index for address. More... | |
#define | WRITE_VALUE_IDX ATCA_DATA_IDX |
Write command index for data. More... | |
#define | WRITE_MAC_VS_IDX ( 9) |
Write command index for MAC following short data. More... | |
#define | WRITE_MAC_VL_IDX (37) |
Write command index for MAC following long data. More... | |
#define | WRITE_COUNT_SHORT (11) |
Write command packet size with short data and no MAC. More... | |
#define | WRITE_COUNT_LONG (39) |
Write command packet size with long data and no MAC. More... | |
#define | WRITE_COUNT_SHORT_MAC (43) |
Write command packet size with short data and MAC. More... | |
#define | WRITE_COUNT_LONG_MAC (71) |
Write command packet size with long data and MAC. More... | |
#define | WRITE_MAC_SIZE (32) |
Write MAC size. More... | |
#define | WRITE_ZONE_MASK ((uint8_t)0xC3) |
Write zone bits 2 to 5 are 0. More... | |
#define | WRITE_ZONE_WITH_MAC ((uint8_t)0x40) |
Write zone bit 6: write encrypted with MAC. More... | |
#define | WRITE_ZONE_OTP ((uint8_t)1) |
WRITE zone id OTP. More... | |
#define | WRITE_ZONE_DATA ((uint8_t)2) |
WRITE zone id data. More... | |
Response Size Definitions | |
#define | CHECKMAC_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of DeriveKey command More... | |
#define | DERIVE_KEY_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of DeriveKey command More... | |
#define | GENDIG_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of GenDig command More... | |
#define | GENKEY_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
response size of GenKey command in Digest mode More... | |
#define | GENKEY_RSP_SIZE_LONG ATCA_RSP_SIZE_72 |
response size of GenKey command when generating key More... | |
#define | HMAC_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of HMAC command More... | |
#define | INFO_RSP_SIZE ATCA_RSP_SIZE_VAL |
response size of Info command returns 4 bytes More... | |
#define | LOCK_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of Lock command More... | |
#define | MAC_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of MAC command More... | |
#define | NONCE_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
response size of Nonce command with mode[0:1] = 3 More... | |
#define | NONCE_RSP_SIZE_LONG ATCA_RSP_SIZE_32 |
response size of Nonce command More... | |
#define | PAUSE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of Pause command More... | |
#define | PRIVWRITE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of PrivWrite command More... | |
#define | RANDOM_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of Random command More... | |
#define | READ_4_RSP_SIZE ATCA_RSP_SIZE_VAL |
response size of Read command when reading 4 bytes More... | |
#define | READ_32_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of Read command when reading 32 bytes More... | |
#define | SIGN_RSP_SIZE ATCA_RSP_SIZE_MAX |
response size of Sign command More... | |
#define | SHA_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of SHA command More... | |
#define | UPDATE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of UpdateExtra command More... | |
#define | VERIFY_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of UpdateExtra command More... | |
#define | WRITE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of Write command More... | |
#define | ECDH_KEY_SIZE ATCA_BLOCK_SIZE |
response size of ECDH command More... | |
#define | ECDH_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of ECDH command More... | |
#define | COUNTER_RSP_SIZE ATCA_RSP_SIZE_4 |
response size of COUNTER command More... | |
#define | SHA_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
response size of SHA command More... | |
#define | SHA_RSP_SIZE_LONG ATCA_RSP_SIZE_32 |
response size of SHA command More... | |
Typedefs | |
typedef struct atca_command * | ATCACommand |
Enumerations | |
enum | ATCA_CmdMap { WAKE_TWHI, CMD_CHECKMAC, CMD_COUNTER, CMD_DERIVEKEY, CMD_ECDH, CMD_GENDIG, CMD_GENKEY, CMD_HMAC, CMD_INFO, CMD_LOCK, CMD_MAC, CMD_NONCE, CMD_PAUSE, CMD_PRIVWRITE, CMD_RANDOM, CMD_READMEM, CMD_SHA, CMD_SIGN, CMD_UPDATEEXTRA, CMD_VERIFY, CMD_WRITEMEM, CMD_LASTCOMMAND } |
Functions | |
ATCACommand | newATCACommand (ATCADeviceType device_type) |
constructor for ATCACommand More... | |
ATCA_STATUS | atCheckMAC (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand CheckMAC method. More... | |
ATCA_STATUS | atCounter (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Counter method. More... | |
ATCA_STATUS | atDeriveKey (ATCACommand cacmd, ATCAPacket *packet, bool hasMAC) |
ATCACommand DeriveKey method. More... | |
ATCA_STATUS | atECDH (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand ECDH method. More... | |
ATCA_STATUS | atGenDig (ATCACommand cacmd, ATCAPacket *packet, bool hasMACKey) |
ATCACommand Generate Digest method. More... | |
ATCA_STATUS | atGenKey (ATCACommand cacmd, ATCAPacket *packet, bool isPubKey) |
ATCACommand Generate Key method. More... | |
ATCA_STATUS | atHMAC (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand HMAC method. More... | |
ATCA_STATUS | atInfo (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Info method. More... | |
ATCA_STATUS | atLock (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Lock method. More... | |
ATCA_STATUS | atMAC (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand MAC method. More... | |
ATCA_STATUS | atNonce (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Nonce method. More... | |
ATCA_STATUS | atPause (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Pause method. More... | |
ATCA_STATUS | atPrivWrite (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand PrivWrite method. More... | |
ATCA_STATUS | atRandom (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Random method. More... | |
ATCA_STATUS | atRead (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Read method. More... | |
ATCA_STATUS | atSHA (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand SHA method. More... | |
ATCA_STATUS | atSign (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Sign method. More... | |
ATCA_STATUS | atUpdateExtra (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand UpdateExtra method. More... | |
ATCA_STATUS | atVerify (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand ECDSA Verify method. More... | |
ATCA_STATUS | atWrite (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Write method. More... | |
ATCA_STATUS | atWriteEnc (ATCACommand cacmd, ATCAPacket *packet) |
ATCACommand Write encrypted method. More... | |
bool | atIsSHAFamily (ATCADeviceType deviceType) |
determines if a given device type is a SHA device or a superset of a SHA device More... | |
bool | atIsECCFamily (ATCADeviceType deviceType) |
determines if a given device type is an ECC device or a superset of a ECC device More... | |
ATCA_STATUS | isATCAError (uint8_t *data) |
checks for basic error frame in data More... | |
ATCA_STATUS | atInitExecTimes (ATCACommand cacmd, ATCADeviceType device_type) |
initialize the execution times for a given device type More... | |
uint16_t | atGetExecTime (ATCACommand cacmd, ATCA_CmdMap cmd) |
return the typical execution type for the given command More... | |
void | deleteATCACommand (ATCACommand *) |
ATCACommand destructor. More... | |
void | atCRC (uint8_t length, uint8_t *data, uint8_t *crc) |
This function calculates CRC given raw data, puts the CRC to given pointer. More... | |
void | atCalcCrc (ATCAPacket *pkt) |
This function calculates CRC and adds it to the correct offset in the packet data. More... | |
uint8_t | atCheckCrc (uint8_t *response) |
This function checks the consistency of a response. More... | |
Definitions for the COUNTER Command | |
#define | COUNTER_COUNT ATCA_CMD_SIZE_MIN |
#define | COUNTER_MODE_IDX ATCA_PARAM1_IDX |
COUNTER command index for mode. More... | |
#define | COUNTER_KEYID_IDX ATCA_PARAM2_IDX |
COUNTER command index for key id. More... | |
#define | COUNTER_CHALLENGE_IDX ATCA_DATA_IDX |
COUNTER command index for optional challenge. More... | |
#define | COUNTER_COUNT_LONG (70) |
COUNTER command packet size without challenge. More... | |
#define | COUNTER_MODE_MASK ((uint8_t)0x01) |
COUNTER mode bits 1 to 7 are 0. More... | |
enum | enum_counter_mode { COUNTER_MODE_READ = 0, COUNTER_MODE_INCREASE = 1 } |
Definitions for the SHA Command | |
#define | SHA_COUNT_SHORT ATCA_CMD_SIZE_MIN |
#define | SHA_COUNT_LONG (7) |
#define | ATCA_SHA_DIGEST_SIZE (32) |
#define | SHA_DATA_MAX (64) |
#define | SHA_SHA256_START_MASK ((uint8_t)0x00) |
Initialization, does not accept a message. More... | |
#define | SHA_SHA256_UPDATE_MASK ((uint8_t)0x01) |
Add 64 bytes in the meesage to the SHA context. More... | |
#define | SHA_SHA256_END_MASK ((uint8_t)0x02) |
Complete the calculation and load the digest. More... | |
#define | SHA_SHA256_PUBLIC_MASK ((uint8_t)0x03) |
Add 64 bytes in the slot to the SHA context. More... | |
#define | SHA_HMAC_START_MASK ((uint8_t)0x04) |
Initialization. More... | |
#define | SHA_HMAC_END_MASK ((uint8_t)0x05) |
Complete the HMAC/SHA256 computation. More... | |
enum | enum_sha_mode { SHA_MODE_SHA256_START = ((uint8_t) 0x00), SHA_MODE_SHA256_UPDATE = ((uint8_t) 0x01), SHA_MODE_SHA256_END = ((uint8_t) 0x02), SHA_MODE_SHA256_PUBLIC = ((uint8_t) 0x03), SHA_MODE_HMAC_START = ((uint8_t) 0x04), SHA_MODE_HMAC_UPDATE = ((uint8_t) 0x05), SHA_MODE_HMAC_END = ((uint8_t) 0x04) } |
Definitions for the GENKEY Command | |
#define | GENKEY_MODE_IDX ATCA_PARAM1_IDX |
GenKey command index for mode. More... | |
#define | GENKEY_KEYID_IDX ATCA_PARAM2_IDX |
GenKey command index for key id. More... | |
#define | GENKEY_DATA_IDX (5) |
GenKey command index for other data. More... | |
#define | GENKEY_COUNT ATCA_CMD_SIZE_MIN |
GenKey command packet size without "other data". More... | |
#define | GENKEY_COUNT_DATA (10) |
GenKey command packet size with "other data". More... | |
#define | GENKEY_OTHER_DATA_SIZE (3) |
GenKey size of "other data". More... | |
#define | GENKEY_MODE_MASK ((uint8_t)0x1C) |
GenKey mode bits 0 to 1 and 5 to 7 are 0. More... | |
#define | GENKEY_MODE_PRIVATE ((uint8_t)0x04) |
GenKey mode: private key generation. More... | |
#define | GENKEY_MODE_PUBLIC ((uint8_t)0x00) |
GenKey mode: public key calculation. More... | |
#define | GENKEY_MODE_DIGEST ((uint8_t)0x10) |
GenKey mode: digest calculation. More... | |
#define | GENKEY_MODE_ADD_DIGEST ((uint8_t)0x08) |
GenKey mode: additional digest calculation. More... | |
enum | enum_genkey_mode { GENKEY_MODE_PRIVATE_KEY_GENERATE = ((uint8_t) 0x04), GENKEY_MODE_PUBLIC_KEY_DIGEST = ((uint8_t) 0x08), GENKEY_MODE_DIGEST_IN_TEMPKEY = ((uint8_t) 0x10) } |
Atmel 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.
Copyright (c) 2015 Atmel Corporation. All rights reserved.
#define ATCA_ADDRESS_MASK (0x007F) |
Address bit 7 to 15 are always 0.
#define ATCA_ADDRESS_MASK_CONFIG (0x001F) |
Address bits 5 to 7 are 0 for Configuration zone.
#define ATCA_ADDRESS_MASK_OTP (0x000F) |
Address bits 4 to 7 are 0 for OTP zone.
#define ATCA_B283_KEY_TYPE 0 |
B283 NIST ECC key.
#define ATCA_BLOCK_SIZE (32) |
size of a block
#define ATCA_CHECKMAC ((uint8_t)0x28) |
CheckMac command op-code.
#define ATCA_CMD_SIZE_MAX ((uint8_t)4 * 36 + 7) |
maximum size of command packet (Verify)
#define ATCA_CMD_SIZE_MIN ((uint8_t)7) |
minimum number of bytes in command (from count byte to second CRC byte)
#define ATCA_CONFIG_SIZE (128) |
size of configuration zone
#define ATCA_COUNT_IDX (0) |
command packet index for count
#define ATCA_COUNT_SIZE ((uint8_t)1) |
Number of bytes in the command packet Count.
#define ATCA_COUNTER ((uint8_t)0x24) |
Counter command op-code.
#define ATCA_CRC_SIZE ((uint8_t)2) |
Number of bytes in the command packet CRC.
#define ATCA_DATA_IDX (5) |
command packet index for data load
#define ATCA_DATA_SIZE (ATCA_KEY_COUNT * ATCA_KEY_SIZE) |
size of data zone
#define ATCA_DERIVE_KEY ((uint8_t)0x1C) |
DeriveKey command op-code.
#define ATCA_ECDH ((uint8_t)0x43) |
ECDH 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_INFO ((uint8_t)0x30) |
Info command op-code.
#define ATCA_K283_KEY_TYPE 1 |
K283 NIST ECC key.
#define ATCA_KEY_COUNT (16) |
number of keys
#define ATCA_KEY_ID_MAX ((uint8_t)15) |
maximum value for key id
#define ATCA_KEY_SIZE (32) |
size of a symmetric SHA key
#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_OPCODE_IDX (1) |
command packet index for op-code
#define ATCA_OTP_BLOCK_MAX ((uint8_t)1) |
maximum value for OTP block
#define ATCA_OTP_SIZE (64) |
size of OTP zone
#define ATCA_P256_KEY_TYPE 4 |
P256 NIST ECC key.
#define ATCA_PACKET_OVERHEAD (ATCA_COUNT_SIZE + ATCA_CRC_SIZE) |
Number of bytes in the command packet.
#define ATCA_PARAM1_IDX (2) |
command packet index for first parameter
#define ATCA_PARAM2_IDX (3) |
command packet index for second parameter
#define ATCA_PAUSE ((uint8_t)0x01) |
Pause command op-code.
#define ATCA_PRIV_KEY_SIZE (32) |
size of a p256 private key
#define ATCA_PRIVWRITE ((uint8_t)0x46) |
PrivWrite command op-code.
#define ATCA_PUB_KEY_PAD (4) |
size of the public key pad
#define ATCA_PUB_KEY_SIZE (64) |
size of a p256 public key
#define ATCA_RANDOM ((uint8_t)0x1B) |
Random command op-code.
#define ATCA_READ ((uint8_t)0x02) |
Read command op-code.
#define ATCA_RSP_DATA_IDX (1) |
buffer index of data in response
#define ATCA_RSP_SIZE_32 ((uint8_t)35) |
size of response packet containing 32 bytes data
#define ATCA_RSP_SIZE_4 ((uint8_t)7) |
size of response packet containing 4 bytes data
#define ATCA_RSP_SIZE_64 ((uint8_t)67) |
size of response packet containing 64 bytes data
#define ATCA_RSP_SIZE_72 ((uint8_t)75) |
size of response packet containing 64 bytes data
#define ATCA_RSP_SIZE_MAX ((uint8_t)75) |
maximum size of response packet (GenKey and Verify command)
#define ATCA_RSP_SIZE_MIN ((uint8_t)4) |
minimum number of bytes in response
#define ATCA_RSP_SIZE_VAL ((uint8_t)7) |
size of response packet containing four bytes of data
#define ATCA_SERIAL_NUM_SIZE (9) |
number of bytes in the device serial number
#define ATCA_SHA ((uint8_t)0x47) |
SHA command op-code.
#define ATCA_SHA_CONFIG_SIZE (88) |
size of configuration zone
#define ATCA_SHA_DIGEST_SIZE (32) |
#define ATCA_SIG_SIZE (64) |
size of a p256 signature
#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_WORD_SIZE (4) |
size of a word
#define ATCA_WRITE ((uint8_t)0x12) |
Write command op-code.
#define ATCA_ZONE_ACCESS_32 ((uint8_t)32) |
Read or write 32 bytes.
#define ATCA_ZONE_ACCESS_4 ((uint8_t)4) |
Read or write 4 bytes.
#define ATCA_ZONE_CONFIG ((uint8_t)0x00) |
Configuration zone.
#define ATCA_ZONE_DATA ((uint8_t)0x02) |
Data zone.
#define ATCA_ZONE_MASK ((uint8_t)0x03) |
Zone mask.
#define ATCA_ZONE_OTP ((uint8_t)0x01) |
OTP (One Time Programming) zone.
#define ATCA_ZONE_READWRITE_32 ((uint8_t)0x80) |
Zone bit 7 set: Access 32 bytes, otherwise 4 bytes.
#define CHECKMAC_CLIENT_CHALLENGE_IDX ATCA_DATA_IDX |
CheckMAC command index for client challenge.
#define CHECKMAC_CLIENT_CHALLENGE_SIZE (32) |
CheckMAC size of client challenge.
#define CHECKMAC_CLIENT_COMMAND_SIZE (4) |
CheckMAC size of client command header size inside "other data".
#define CHECKMAC_CLIENT_RESPONSE_IDX (37) |
CheckMAC command index for client response.
#define CHECKMAC_CLIENT_RESPONSE_SIZE (32) |
CheckMAC size of client response.
#define CHECKMAC_CMD_MATCH (0) |
CheckMAC return value when there is a match.
#define CHECKMAC_CMD_MISMATCH (1) |
CheckMAC return value when there is a mismatch.
#define CHECKMAC_COUNT (84) |
CheckMAC command packet size.
#define CHECKMAC_DATA_IDX (69) |
CheckMAC command index for other data.
#define CHECKMAC_KEYID_IDX ATCA_PARAM2_IDX |
CheckMAC command index for key identifier.
#define CHECKMAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) |
CheckMAC mode bit 1: first SHA block from TempKey.
#define CHECKMAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) |
CheckMAC mode bit 0: second SHA block from TempKey.
#define CHECKMAC_MODE_CHALLENGE ((uint8_t)0x00) |
CheckMAC mode 0: first SHA block from key id.
#define CHECKMAC_MODE_IDX ATCA_PARAM1_IDX |
CheckMAC command index for mode.
#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_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
CheckMAC mode bit 2: match TempKey.SourceFlag.
#define CHECKMAC_OTHER_DATA_SIZE (13) |
CheckMAC size of "other data".
#define CHECKMAC_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of DeriveKey command
#define CMD_STATUS_BYTE_COMM ((uint8_t)0xFF) |
communication 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_PARSE ((uint8_t)0x03) |
command parse error
#define CMD_STATUS_SUCCESS ((uint8_t)0x00) |
status byte for success
#define CMD_STATUS_WAKEUP ((uint8_t)0x11) |
status byte after wake-up
#define COUNTER_CHALLENGE_IDX ATCA_DATA_IDX |
COUNTER command index for optional challenge.
#define COUNTER_COUNT ATCA_CMD_SIZE_MIN |
#define COUNTER_COUNT_LONG (70) |
COUNTER command packet size without challenge.
#define COUNTER_KEYID_IDX ATCA_PARAM2_IDX |
COUNTER command index for key id.
#define COUNTER_MODE_IDX ATCA_PARAM1_IDX |
COUNTER command index for mode.
#define COUNTER_MODE_MASK ((uint8_t)0x01) |
COUNTER mode bits 1 to 7 are 0.
#define COUNTER_RSP_SIZE ATCA_RSP_SIZE_4 |
response size of COUNTER command
#define DERIVE_KEY_COUNT_LARGE (39) |
DeriveKey command packet size with MAC.
#define DERIVE_KEY_COUNT_SMALL ATCA_CMD_SIZE_MIN |
DeriveKey command packet size without MAC.
#define DERIVE_KEY_MAC_IDX ATCA_DATA_IDX |
DeriveKey command index for optional MAC.
#define DERIVE_KEY_MAC_SIZE (32) |
DeriveKey MAC size.
#define DERIVE_KEY_RANDOM_FLAG ((uint8_t)4) |
DeriveKey 1. parameter; has to match TempKey.SourceFlag.
#define DERIVE_KEY_RANDOM_IDX ATCA_PARAM1_IDX |
DeriveKey command index for random bit.
#define DERIVE_KEY_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of DeriveKey command
#define DERIVE_KEY_TARGETKEY_IDX ATCA_PARAM2_IDX |
DeriveKey command index for target slot.
#define ECDH_COUNT (71) |
#define ECDH_KEY_SIZE ATCA_BLOCK_SIZE |
response size of ECDH command
#define ECDH_PREFIX_MODE ((uint8_t)0x00) |
#define ECDH_PUBKEYIN_SIZE (64) |
#define ECDH_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of ECDH command
#define GENDIG_COUNT ATCA_CMD_SIZE_MIN |
GenDig command packet size without "other data".
#define GENDIG_COUNT_DATA (11) |
GenDig command packet size with "other data".
#define GENDIG_DATA_IDX ATCA_DATA_IDX |
GenDig command index for optional data.
#define GENDIG_KEYID_IDX ATCA_PARAM2_IDX |
GenDig command index for key id.
#define GENDIG_OTHER_DATA_SIZE (32) |
GenDig size of "other data". Is 4 bytes for SHA204, can be either 4 or 32 for ECC.
#define GENDIG_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of GenDig command
#define GENDIG_ZONE_CONFIG ((uint8_t)0) |
GenDig zone id config.
#define GENDIG_ZONE_DATA ((uint8_t)2) |
GenDig zone id data.
#define GENDIG_ZONE_IDX ATCA_PARAM1_IDX |
GenDig command index for zone.
#define GENDIG_ZONE_OTP ((uint8_t)1) |
GenDig zone id OTP.
#define GENKEY_COUNT ATCA_CMD_SIZE_MIN |
GenKey command packet size without "other data".
#define GENKEY_COUNT_DATA (10) |
GenKey command packet size with "other data".
#define GENKEY_DATA_IDX (5) |
GenKey command index for other data.
#define GENKEY_KEYID_IDX ATCA_PARAM2_IDX |
GenKey command index for key id.
#define GENKEY_MODE_ADD_DIGEST ((uint8_t)0x08) |
GenKey mode: additional digest calculation.
#define GENKEY_MODE_DIGEST ((uint8_t)0x10) |
GenKey mode: digest calculation.
#define GENKEY_MODE_IDX ATCA_PARAM1_IDX |
GenKey command index for mode.
#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_OTHER_DATA_SIZE (3) |
GenKey size of "other data".
#define GENKEY_RSP_SIZE_LONG ATCA_RSP_SIZE_72 |
response size of GenKey command when generating key
#define GENKEY_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
response size of GenKey command in Digest mode
#define HMAC_COUNT ATCA_CMD_SIZE_MIN |
HMAC command packet size.
#define HMAC_KEYID_IDX ATCA_PARAM2_IDX |
HMAC command index for key id.
#define HMAC_MODE_IDX ATCA_PARAM1_IDX |
HMAC command index for mode.
#define HMAC_MODE_MASK ((uint8_t)0x74) |
HMAC mode bits 0, 1, 3, and 7 are 0.
#define HMAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
HMAC mode bit 2: match TempKey.SourceFlag.
#define HMAC_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of HMAC command
#define INFO_COUNT ATCA_CMD_SIZE_MIN |
Info command packet size.
#define INFO_DRIVER_STATE_MASK ((uint8_t)0x02) |
Info driver state mask.
#define INFO_MODE_GPIO ((uint8_t)0x03) |
Info mode GPIO.
#define INFO_MODE_KEY_VALID ((uint8_t)0x01) |
Info mode KeyValid.
#define INFO_MODE_MAX ((uint8_t)0x03) |
Info mode maximum value.
#define INFO_MODE_REVISION ((uint8_t)0x00) |
Info mode Revision.
#define INFO_MODE_STATE ((uint8_t)0x02) |
Info mode State.
#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_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_PARAM2_MAX ((uint8_t)0x03) |
Info param2 (state) maximum value.
#define INFO_RSP_SIZE ATCA_RSP_SIZE_VAL |
response size of Info command returns 4 bytes
#define INFO_SIZE ((uint8_t)0x04) |
Info param2 (state) maximum value.
#define LOCK_COUNT ATCA_CMD_SIZE_MIN |
Lock command packet size.
#define LOCK_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of Lock command
#define LOCK_SUMMARY_IDX ATCA_PARAM2_IDX |
Lock command index for summary.
#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_IDX ATCA_PARAM1_IDX |
Lock command index for zone.
#define LOCK_ZONE_MASK (0xBF) |
Lock parameter 1 bits 6 are 0.
#define LOCK_ZONE_NO_CRC ((uint8_t)0x80) |
Lock command: Ignore summary.
#define MAC_CHALLENGE_IDX ATCA_DATA_IDX |
MAC command index for optional challenge.
#define MAC_CHALLENGE_SIZE (32) |
MAC size of challenge.
#define MAC_COUNT_LONG (39) |
MAC command packet size with challenge.
#define MAC_COUNT_SHORT ATCA_CMD_SIZE_MIN |
MAC command packet size without challenge.
#define MAC_KEYID_IDX ATCA_PARAM2_IDX |
MAC command index for key id.
#define MAC_MODE_BLOCK1_TEMPKEY ((uint8_t)0x02) |
MAC mode bit 1: first SHA block from TempKey.
#define MAC_MODE_BLOCK2_TEMPKEY ((uint8_t)0x01) |
MAC mode bit 0: second SHA block from TempKey.
#define MAC_MODE_CHALLENGE ((uint8_t)0x00) |
MAC mode 0: first SHA block from data slot.
#define MAC_MODE_IDX ATCA_PARAM1_IDX |
MAC command index for mode.
#define MAC_MODE_INCLUDE_OTP_64 ((uint8_t)0x20) |
MAC mode bit 5: include first 64 OTP bits.
#define MAC_MODE_INCLUDE_OTP_88 ((uint8_t)0x10) |
MAC mode bit 4: include first 88 OTP bits.
#define MAC_MODE_INCLUDE_SN ((uint8_t)0x40) |
MAC mode bit 6: include serial number.
#define MAC_MODE_MASK ((uint8_t)0x77) |
MAC mode bits 3 and 7 are 0.
#define MAC_MODE_PASSTHROUGH ((uint8_t)0x07) |
MAC mode bit 0-2: pass-through mode.
#define MAC_MODE_PTNONCE_TEMPKEY ((uint8_t)0x06) |
MAC mode bit 0: second SHA block from TempKey.
#define MAC_MODE_SOURCE_FLAG_MATCH ((uint8_t)0x04) |
MAC mode bit 2: match TempKey.SourceFlag.
#define MAC_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of MAC command
#define MAC_SIZE (32) |
MAC size of response.
#define NONCE_COUNT_LONG (39) |
Nonce command packet size for 32 bytes of data.
#define NONCE_COUNT_SHORT (27) |
Nonce command packet size for 20 bytes of data.
#define NONCE_INPUT_IDX ATCA_DATA_IDX |
Nonce command index for input data.
#define NONCE_MODE_IDX ATCA_PARAM1_IDX |
Nonce command index for mode.
#define NONCE_MODE_INVALID ((uint8_t)0x02) |
Nonce mode 2 is invalid.
#define NONCE_MODE_MASK ((uint8_t)0x03) |
Nonce mode bits 2 to 7 are 0.
#define NONCE_MODE_NO_SEED_UPDATE ((uint8_t)0x01) |
Nonce mode: do not update seed.
#define NONCE_MODE_PASSTHROUGH ((uint8_t)0x03) |
Nonce mode: pass-through.
#define NONCE_MODE_RANDOM_OUT ((uint16_t)0x0000) |
Nonce mode: output RandOut or single byte of zero.
#define NONCE_MODE_SEED_UPDATE ((uint8_t)0x00) |
Nonce mode: update seed.
#define NONCE_MODE_TEMPKEY_OUT ((uint16_t)0x0080) |
Nonce mode: output RandOut or single byte of zero.
#define NONCE_NUMIN_SIZE (20) |
Nonce data length.
#define NONCE_NUMIN_SIZE_PASSTHROUGH (32) |
Nonce data length in pass-through mode (mode = 3)
#define NONCE_PARAM2_IDX ATCA_PARAM2_IDX |
Nonce command index for 2. parameter.
#define NONCE_RSP_SIZE_LONG ATCA_RSP_SIZE_32 |
response size of Nonce command
#define NONCE_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
response size of Nonce command with mode[0:1] = 3
#define PAUSE_COUNT ATCA_CMD_SIZE_MIN |
Pause command packet size.
#define PAUSE_PARAM2_IDX ATCA_PARAM2_IDX |
Pause command index for 2. parameter.
#define PAUSE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of Pause command
#define PAUSE_SELECT_IDX ATCA_PARAM1_IDX |
Pause command index for Selector.
#define PRIVWRITE_COUNT (75) |
PrivWrite command packet size.
#define PRIVWRITE_KEYID_IDX ATCA_PARAM2_IDX |
PrivWrite command index for KeyID.
#define PRIVWRITE_MAC_IDX (41) |
PrivWrite command index for MAC.
#define PRIVWRITE_MODE_ENCRYPT ((uint8_t)0x40) |
PrivWrite mode: encrypted.
#define PRIVWRITE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of PrivWrite command
#define PRIVWRITE_VALUE_IDX ( 5) |
PrivWrite command index for value.
#define PRIVWRITE_ZONE_IDX ATCA_PARAM1_IDX |
PrivWrite command index for zone.
#define PRIVWRITE_ZONE_MASK ((uint8_t)0x40) |
PrivWrite zone bits 0 to 5 and 7 are 0.
#define RANDOM_COUNT ATCA_CMD_SIZE_MIN |
Random command packet size.
#define RANDOM_MODE_IDX ATCA_PARAM1_IDX |
Random command index for mode.
#define RANDOM_NO_SEED_UPDATE ((uint8_t)0x01) |
Random mode for no seed update.
#define RANDOM_NUM_SIZE ((uint8_t)0x20) |
Number of bytes in the data packet of a random command.
#define RANDOM_PARAM2_IDX ATCA_PARAM2_IDX |
Random command index for 2. parameter.
#define RANDOM_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of Random command
#define RANDOM_SEED_UPDATE ((uint8_t)0x00) |
Random mode for automatic seed update.
#define READ_32_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of Read command when reading 32 bytes
#define READ_4_RSP_SIZE ATCA_RSP_SIZE_VAL |
response size of Read command when reading 4 bytes
#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_IDX ATCA_PARAM1_IDX |
Read command index for zone.
#define READ_ZONE_MASK ((uint8_t)0x83) |
Read zone bits 2 to 6 are 0.
#define RSA2048_KEY_SIZE (256) |
size of a RSA private key
#define SHA_COUNT_LONG (7) |
#define SHA_COUNT_SHORT ATCA_CMD_SIZE_MIN |
#define SHA_DATA_MAX (64) |
#define SHA_HMAC_END_MASK ((uint8_t)0x05) |
Complete the HMAC/SHA256 computation.
#define SHA_HMAC_START_MASK ((uint8_t)0x04) |
Initialization.
#define SHA_RSP_SIZE ATCA_RSP_SIZE_32 |
response size of SHA command
#define SHA_RSP_SIZE_LONG ATCA_RSP_SIZE_32 |
response size of SHA command
#define SHA_RSP_SIZE_SHORT ATCA_RSP_SIZE_MIN |
response size of SHA command
#define SHA_SHA256_END_MASK ((uint8_t)0x02) |
Complete the calculation and load the digest.
#define SHA_SHA256_PUBLIC_MASK ((uint8_t)0x03) |
Add 64 bytes in the slot to the SHA context.
#define SHA_SHA256_START_MASK ((uint8_t)0x00) |
Initialization, does not accept a message.
#define SHA_SHA256_UPDATE_MASK ((uint8_t)0x01) |
Add 64 bytes in the meesage to the SHA context.
#define SIGN_COUNT ATCA_CMD_SIZE_MIN |
Sign command packet size.
#define SIGN_KEYID_IDX ATCA_PARAM2_IDX |
Sign command index for key id.
#define SIGN_MODE_EXTERNAL ((uint8_t)0x80) |
Sign mode bit 7: external.
#define SIGN_MODE_IDX ATCA_PARAM1_IDX |
Sign command index for mode.
#define SIGN_MODE_INCLUDE_SN ((uint8_t)0x40) |
Sign mode bit 6: include serial number.
#define SIGN_MODE_INTERNAL ((uint8_t)0x00) |
Sign mode 0: internal.
#define SIGN_MODE_MASK ((uint8_t)0xC0) |
Sign mode bits 0 to 5 are 0.
#define SIGN_RSP_SIZE ATCA_RSP_SIZE_MAX |
response size of Sign command
#define UPDATE_CONFIG_BYTE_85 ((uint8_t)0x01) |
UpdateExtra mode: update Config byte 85.
#define UPDATE_COUNT ATCA_CMD_SIZE_MIN |
UpdateExtra command packet size.
#define UPDATE_MODE_IDX ATCA_PARAM1_IDX |
UpdateExtra command index for mode.
#define UPDATE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of UpdateExtra command
#define UPDATE_VALUE_IDX ATCA_PARAM2_IDX |
UpdateExtra command index for new value.
#define VERIFY_256_EXTERNAL_COUNT (135) |
Verify command packet size for 256-bit key in external mode.
#define VERIFY_256_KEY_SIZE ( 64) |
Verify key size for 256-bit key.
#define VERIFY_256_SIGNATURE_SIZE ( 64) |
Verify signature size for 256-bit key.
#define VERIFY_256_STORED_COUNT ( 71) |
Verify command packet size for 256-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_EXTERNAL_COUNT (151) |
Verify command packet size for 283-bit key in external mode.
#define VERIFY_283_KEY_SIZE ( 72) |
Verify key size for 283-bit key.
#define VERIFY_283_SIGNATURE_SIZE ( 72) |
Verify signature size for 283-bit key.
#define VERIFY_283_STORED_COUNT ( 79) |
Verify command packet size for 283-bit key in stored mode.
#define VERIFY_283_VALIDATE_COUNT ( 98) |
Verify command packet size for 283-bit key in validate mode.
#define VERIFY_DATA_IDX ( 5) |
Verify command index for data.
#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_KEYID_IDX ATCA_PARAM2_IDX |
Verify command index for key id.
#define VERIFY_MODE_EXTERNAL ((uint8_t)0x02) |
Verify mode: external.
#define VERIFY_MODE_IDX ATCA_PARAM1_IDX |
Verify command index for mode.
#define VERIFY_MODE_INVALIDATE ((uint8_t)0x07) |
Verify mode: invalidate.
#define VERIFY_MODE_MASK ((uint8_t)0x03) |
Verify mode bits 2 to 7 are 0.
#define VERIFY_MODE_STORED ((uint8_t)0x00) |
Verify mode: stored.
#define VERIFY_MODE_VALIDATE ((uint8_t)0x03) |
Verify mode: validate.
#define VERIFY_MODE_VALIDATEEXTERNAL ((uint8_t)0x01) |
Verify mode: validate external.
#define VERIFY_OTHER_DATA_SIZE ( 19) |
Verify size of "other data".
#define VERIFY_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of UpdateExtra command
#define WRITE_ADDR_IDX ATCA_PARAM2_IDX |
Write command index for address.
#define WRITE_COUNT_LONG (39) |
Write command packet size with long data and no MAC.
#define WRITE_COUNT_LONG_MAC (71) |
Write command packet size with long data and MAC.
#define WRITE_COUNT_SHORT (11) |
Write command packet size with short data and no MAC.
#define WRITE_COUNT_SHORT_MAC (43) |
Write command packet size with short data and MAC.
#define WRITE_MAC_SIZE (32) |
Write MAC size.
#define WRITE_MAC_VL_IDX (37) |
Write command index for MAC following long data.
#define WRITE_MAC_VS_IDX ( 9) |
Write command index for MAC following short data.
#define WRITE_RSP_SIZE ATCA_RSP_SIZE_MIN |
response size of Write command
#define WRITE_VALUE_IDX ATCA_DATA_IDX |
Write command index for data.
#define WRITE_ZONE_DATA ((uint8_t)2) |
WRITE zone id data.
#define WRITE_ZONE_IDX ATCA_PARAM1_IDX |
Write command index for zone.
#define WRITE_ZONE_MASK ((uint8_t)0xC3) |
Write zone bits 2 to 5 are 0.
#define WRITE_ZONE_OTP ((uint8_t)1) |
WRITE zone id OTP.
#define WRITE_ZONE_WITH_MAC ((uint8_t)0x40) |
Write zone bit 6: write encrypted with MAC.
typedef struct atca_command* ATCACommand |
enum ATCA_CmdMap |
enum enum_counter_mode |
enum enum_genkey_mode |
enum enum_sha_mode |