46 gcm_auth_crypt_start(uint8_t encrypt, uint8_t key_area,
const void *iv,
47 const void *adata, uint16_t adata_len,
48 const void *data_in,
void *data_out, uint16_t data_len,
49 struct process *process)
52 uint32_t aes_iv[AES_IV_LEN /
sizeof(uint32_t)];
63 rom_util_memcpy(aes_iv, iv, GCM_IV_LEN);
65 aes_iv[GCM_IV_LEN /
sizeof(aes_iv[0])] = 0x01000000;
68 data_in, data_out, data_len, process);
72 gcm_auth_crypt_get_result(
const void *tag_in,
void *tag_out)
74 uint32_t tag[AES_TAG_LEN /
sizeof(uint32_t)];
78 if(ret != CRYPTO_SUCCESS) {
84 if(rom_util_memcmp(tag, tag_in, GCM_TAG_LEN)) {
85 ret = AES_AUTHENTICATION_FAILED;
91 rom_util_memcpy(tag_out, tag, GCM_TAG_LEN);
99 uint16_t adata_len,
const void *pdata,
100 uint16_t pdata_len,
void *cdata,
struct process *process)
102 return gcm_auth_crypt_start(
true, key_area, iv, adata, adata_len,
103 pdata, cdata, pdata_len, process);
109 return gcm_auth_crypt_get_result(NULL, tag);
114 uint16_t adata_len,
const void *cdata,
115 uint16_t cdata_len,
void *pdata,
struct process *process)
117 return gcm_auth_crypt_start(
false, key_area, iv, adata, adata_len,
118 cdata, pdata, cdata_len, process);
123 __attribute__ ((alias(
"gcm_auth_crypt_get_result")));
#define AES_AES_CTRL_SAVE_CONTEXT
Auth.
uint8_t aes_auth_crypt_get_result(void *iv, void *tag)
Gets the result of the AES authentication/crypto operation.
#define AES_AES_CTRL_DIRECTION_ENCRYPT
Encrypt.
uint8_t gcm_auth_decrypt_get_result(const void *tag_in, void *tag_out)
Gets the result of the GCM authentication checking and decryption operation.
uint8_t gcm_auth_encrypt_start(uint8_t key_area, const void *iv, const void *adata, uint16_t adata_len, const void *pdata, uint16_t pdata_len, void *cdata, struct process *process)
Starts a GCM authentication and encryption operation.
#define AES_AES_CTRL_CTR_WIDTH_32
CTR counter width: 32 bits.
uint8_t aes_auth_crypt_start(uint32_t ctrl, uint8_t key_area, const void *iv, const void *adata, uint16_t adata_len, const void *data_in, void *data_out, uint16_t data_len, struct process *process)
Starts an AES authentication/crypto operation.
uint8_t gcm_auth_decrypt_start(uint8_t key_area, const void *iv, const void *adata, uint16_t adata_len, const void *cdata, uint16_t cdata_len, void *pdata, struct process *process)
Starts a GCM authentication checking and decryption operation.
#define AES_AES_CTRL_GCM
AES-GCM mode.
Header file for the cc2538 AES-GCM driver.
Header file for the cc2538 ROM utility function library driver.
#define AES_AES_CTRL_CTR
AES-CTR mode.
uint8_t gcm_auth_encrypt_get_result(void *tag)
Gets the result of the GCM authentication and encryption operation.