52 ccm_auth_crypt_start(uint8_t encrypt, uint8_t len_len, uint8_t key_area,
53 const void *nonce,
const void *adata, uint16_t adata_len,
54 const void *data_in,
void *data_out, uint16_t data_len,
55 uint8_t mic_len,
struct process *process)
58 uint32_t iv[AES_IV_LEN /
sizeof(uint32_t)];
71 ((uint8_t *)iv)[0] = len_len - 1;
73 rom_util_memcpy(&((uint8_t *)iv)[CCM_FLAGS_LEN], nonce,
74 CCM_NONCE_LEN_LEN - len_len);
76 rom_util_memset(&((uint8_t *)iv)[AES_IV_LEN - len_len], 0, len_len);
79 data_in, data_out, data_len, process);
83 ccm_auth_crypt_get_result(
const void *cdata, uint16_t cdata_len,
84 void *mic, uint8_t mic_len)
86 uint32_t tag[AES_TAG_LEN /
sizeof(uint32_t)];
91 if(ret != CRYPTO_SUCCESS) {
97 data_len = cdata_len - mic_len;
98 if(rom_util_memcmp(tag, &((
const uint8_t *)cdata)[data_len], mic_len)) {
99 ret = AES_AUTHENTICATION_FAILED;
104 rom_util_memcpy(mic, tag, mic_len);
111 const void *adata, uint16_t adata_len,
const void *pdata,
112 uint16_t pdata_len,
void *cdata, uint8_t mic_len,
113 struct process *process)
115 return ccm_auth_crypt_start(
true, len_len, key_area, nonce, adata, adata_len,
116 pdata, cdata, pdata_len, mic_len, process);
122 return ccm_auth_crypt_get_result(NULL, 0, mic, mic_len);
127 const void *adata, uint16_t adata_len,
const void *cdata,
128 uint16_t cdata_len,
void *pdata, uint8_t mic_len,
129 struct process *process)
131 uint16_t data_len = cdata_len - mic_len;
133 return ccm_auth_crypt_start(
false, len_len, key_area, nonce, adata, adata_len,
134 cdata, pdata, data_len, mic_len, process);
139 void *mic, uint8_t mic_len)
140 __attribute__ ((alias(
"ccm_auth_crypt_get_result")));
#define AES_AES_CTRL_SAVE_CONTEXT
Auth.
#define AES_AES_CTRL_CCM
AES-CCM mode.
#define AES_AES_CTRL_CCM_L_S
CCM length field width shift.
uint8_t aes_auth_crypt_get_result(void *iv, void *tag)
Gets the result of the AES authentication/crypto operation.
uint8_t ccm_auth_encrypt_get_result(void *mic, uint8_t mic_len)
Gets the result of the CCM authentication and encryption operation.
#define AES_AES_CTRL_DIRECTION_ENCRYPT
Encrypt.
uint8_t ccm_auth_decrypt_get_result(const void *cdata, uint16_t cdata_len, void *mic, uint8_t mic_len)
Gets the result of the CCM authentication checking and decryption operation.
uint8_t ccm_auth_decrypt_start(uint8_t len_len, uint8_t key_area, const void *nonce, const void *adata, uint16_t adata_len, const void *cdata, uint16_t cdata_len, void *pdata, uint8_t mic_len, struct process *process)
Starts a CCM authentication checking and decryption operation.
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.
#define AES_AES_CTRL_CCM_M_S
CCM auth.
Header file for the cc2538 ROM utility function library driver.
#define AES_AES_CTRL_CTR
AES-CTR mode.
Default definitions of C compiler quirk work-arounds.
uint8_t ccm_auth_encrypt_start(uint8_t len_len, uint8_t key_area, const void *nonce, const void *adata, uint16_t adata_len, const void *pdata, uint16_t pdata_len, void *cdata, uint8_t mic_len, struct process *process)
Starts a CCM authentication and encryption operation.
Header file for the cc2538 AES-CCM driver.
#define AES_AES_CTRL_CTR_WIDTH_128
CTR counter width: 128 bits.