Contiki-NG

Driver for the cc2538 AES-CCM mode of the security core. More...

Files

file  ccm.c
 Implementation of the cc2538 AES-CCM driver.
 
file  ccm.h
 Header file for the cc2538 AES-CCM driver.
 

AES-CCM functions

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. More...
 
uint8_t ccm_auth_encrypt_get_result (void *mic, uint8_t mic_len)
 Gets the result of the CCM authentication and encryption operation. More...
 
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. More...
 
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. More...
 
#define ccm_auth_encrypt_check_status   aes_auth_crypt_check_status
 Checks the status of the CCM authentication and encryption operation. More...
 
#define ccm_auth_decrypt_check_status   aes_auth_crypt_check_status
 Checks the status of the CCM authentication checking and decryption operation. More...
 

AES-CCM constants

#define CCM_FLAGS_LEN   1
 
#define CCM_NONCE_LEN_LEN   (AES_IV_LEN - CCM_FLAGS_LEN)
 
#define CCM_MIC_MAX_LEN   AES_TAG_LEN
 

Detailed Description

Driver for the cc2538 AES-CCM mode of the security core.

Macro Definition Documentation

◆ ccm_auth_decrypt_check_status

#define ccm_auth_decrypt_check_status   aes_auth_crypt_check_status

Checks the status of the CCM authentication checking and decryption operation.

Return values
falseResult not yet available, and no error occurred
trueResult available, or error occurred

Definition at line 137 of file ccm.h.

◆ ccm_auth_encrypt_check_status

#define ccm_auth_encrypt_check_status   aes_auth_crypt_check_status

Checks the status of the CCM authentication and encryption operation.

Return values
falseResult not yet available, and no error occurred
trueResult available, or error occurred

Definition at line 98 of file ccm.h.

Function Documentation

◆ ccm_auth_decrypt_get_result()

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.

Parameters
cdataPointer to encrypted and authenticated message
cdata_lenLength of encrypted and authenticated message in octets
micPointer to authentication field, or NULL
mic_lenNumber of octets in authentication field (even value between 0 and CCM_MIC_MAX_LEN)
Returns
CRYPTO_SUCCESS if successful, or CRYPTO/AES/CCM error code
Note
This function must be called only after ccm_auth_decrypt_start().

◆ ccm_auth_decrypt_start()

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.

Parameters
len_lenNumber of octets in length field (2, 4, or 8)
key_areaArea in Key RAM where the key is stored (0 to AES_KEY_AREAS - 1)
noncePointer to nonce (CCM_NONCE_LEN_LEN - len_len octets)
adataPointer to additional authenticated data in SRAM, or NULL
adata_lenLength of additional authenticated data in octets, or 0
cdataPointer to encrypted and authenticated message in SRAM
cdata_lenLength of encrypted and authenticated message in octets
pdataPointer to decrypted message in SRAM (may be cdata), or NULL
mic_lenNumber of octets in authentication field (even value between 0 and CCM_MIC_MAX_LEN)
processProcess to be polled upon completion of the operation, or NULL
Returns
CRYPTO_SUCCESS if successful, or CRYPTO/AES/CCM error code

Definition at line 126 of file ccm.c.

◆ ccm_auth_encrypt_get_result()

uint8_t ccm_auth_encrypt_get_result ( void *  mic,
uint8_t  mic_len 
)

Gets the result of the CCM authentication and encryption operation.

Parameters
micPointer to authentication field, or NULL
mic_lenNumber of octets in authentication field (even value between 0 and CCM_MIC_MAX_LEN)
Returns
CRYPTO_SUCCESS if successful, or CRYPTO/AES/CCM error code
Note
This function must be called only after ccm_auth_encrypt_start().

Definition at line 120 of file ccm.c.

◆ ccm_auth_encrypt_start()

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.

Parameters
len_lenNumber of octets in length field (2, 4, or 8)
key_areaArea in Key RAM where the key is stored (0 to AES_KEY_AREAS - 1)
noncePointer to nonce (CCM_NONCE_LEN_LEN - len_len octets)
adataPointer to additional authenticated data in SRAM, or NULL
adata_lenLength of additional authenticated data in octets, or 0
pdataPointer to message to authenticate and encrypt in SRAM, or NULL
pdata_lenLength of message to authenticate and encrypt in octets, or 0
cdataPointer to encrypted message in SRAM (may be pdata), or NULL
mic_lenNumber of octets in authentication field (even value between 0 and CCM_MIC_MAX_LEN)
processProcess to be polled upon completion of the operation, or NULL
Returns
CRYPTO_SUCCESS if successful, or CRYPTO/AES/CCM error code

Definition at line 110 of file ccm.c.