27 #ifndef ATCA_BASIC_AES_GCM_H_ 28 #define ATCA_BASIC_AES_GCM_H_ 54 const uint8_t* free_field,
size_t free_field_size, uint8_t* iv);
uint8_t h[AES_DATA_SIZE]
Subkey for ghash functions in GCM.
Definition: atca_basic_aes_gcm.h:43
uint32_t aad_size
Size of the additional authenticated data in bytes.
Definition: atca_basic_aes_gcm.h:42
ATCA_STATUS atcab_aes_gcm_init_rand(atca_aes_gcm_ctx_t *ctx, uint16_t key_id, uint8_t key_block, size_t rand_size, const uint8_t *free_field, size_t free_field_size, uint8_t *iv)
Initialize context for AES GCM operation with a IV composed of a random and optional fixed(free) fiel...
Definition: atca_basic_aes_gcm.c:227
uint32_t partial_aad_size
Amount of data in the partial block buffer.
Definition: atca_basic_aes_gcm.h:47
ATCA_STATUS
Definition: atca_status.h:41
ATCA_STATUS atcab_aes_gcm_init(atca_aes_gcm_ctx_t *ctx, uint16_t key_id, uint8_t key_block, const uint8_t *iv, size_t iv_size)
Initialize context for AES GCM operation with an existing IV, which is common when starting a decrypt...
Definition: atca_basic_aes_gcm.c:152
ATCA_STATUS atcab_aes_gcm_decrypt_finish(atca_aes_gcm_ctx_t *ctx, const uint8_t *tag, size_t tag_size, bool *is_verified)
Complete a GCM decrypt operation verifying the authentication tag.
Definition: atca_basic_aes_gcm.c:542
uint8_t j0[AES_DATA_SIZE]
Precounter block generated from IV.
Definition: atca_basic_aes_gcm.h:44
uint8_t y[AES_DATA_SIZE]
Current GHASH output.
Definition: atca_basic_aes_gcm.h:45
Single aggregation point for all CryptoAuthLib header files.
ATCA_STATUS atcab_aes_gcm_aad_update(atca_aes_gcm_ctx_t *ctx, const uint8_t *aad, uint32_t aad_size)
Process Additional Authenticated Data (AAD) using GCM mode and a key within the ATECC608A device...
Definition: atca_basic_aes_gcm.c:272
ATCA_STATUS atcab_aes_gcm_decrypt_update(atca_aes_gcm_ctx_t *ctx, const uint8_t *ciphertext, uint32_t ciphertext_size, uint8_t *plaintext)
Decrypt data using GCM mode and a key within the ATECC608A device. atcab_aes_gcm_init() or atcab_aes_...
Definition: atca_basic_aes_gcm.c:528
uint8_t cb[AES_DATA_SIZE]
Counter block, comprises of nonce + count value (16 bytes).
Definition: atca_basic_aes_gcm.h:40
uint8_t enc_cb[AES_DATA_SIZE]
Last encrypted counter block.
Definition: atca_basic_aes_gcm.h:48
uint8_t partial_aad[AES_DATA_SIZE]
Partial blocks of data waiting to be processed.
Definition: atca_basic_aes_gcm.h:46
const char * atca_basic_aes_gcm_version
Definition: atca_basic_aes_gcm.c:38
struct atca_aes_gcm_ctx atca_aes_gcm_ctx_t
#define AES_DATA_SIZE
size of AES encrypt/decrypt data
Definition: atca_command.h:306
uint8_t ciphertext_block[AES_DATA_SIZE]
Last ciphertext block.
Definition: atca_basic_aes_gcm.h:49
ATCA_STATUS atcab_aes_gcm_encrypt_update(atca_aes_gcm_ctx_t *ctx, const uint8_t *plaintext, uint32_t plaintext_size, uint8_t *ciphertext)
Encrypt data using GCM mode and a key within the ATECC608A device. atcab_aes_gcm_init() or atcab_aes_...
Definition: atca_basic_aes_gcm.c:416
Definition: atca_basic_aes_gcm.h:36
uint16_t key_id
Key location. Can either be a slot number or ATCA_TEMPKEY_KEYID for TempKey.
Definition: atca_basic_aes_gcm.h:38
uint32_t data_size
Size of the data being encrypted/decrypted in bytes.
Definition: atca_basic_aes_gcm.h:41
ATCA_STATUS atcab_aes_gcm_encrypt_finish(atca_aes_gcm_ctx_t *ctx, uint8_t *tag, size_t tag_size)
Complete a GCM encrypt operation returning the authentication tag.
Definition: atca_basic_aes_gcm.c:484
uint8_t key_block
Index of the 16-byte block to use within the key location for the actual key.
Definition: atca_basic_aes_gcm.h:39