|
void | emberAesEcbEncryptBlock (uint8_t *block, const uint8_t *key, bool sameKey) |
| This function performs a standalone-mode "electronic code book" (ECB) AES-128 encryption of the 16-byte plaintext block using the 128-bit (16-byte) key . The resulting 16 byte ciphertext overwrites the plaintext block .
|
|
void | emberAesCtrCryptData (uint8_t *nonce, const uint8_t *key, uint8_t *data, uint32_t dataLen, uint32_t dataDid) |
| This function performs a counter-mode (CTR) AES-128 encrypt/decrypt of the data for dataLen bytes, using the 128-bit (16-byte) key and 128-bit (16-byte) nonce . The resulting encrypted/decrypted data overwrites the data passed in.
|
See aes.h
for source code.
#define EMBER_AES_BLOCK_SIZE_BYTES 16 |
void emberAesCtrCryptData |
( |
uint8_t * |
nonce, |
|
|
const uint8_t * |
key, |
|
|
uint8_t * |
data, |
|
|
uint32_t |
dataLen, |
|
|
uint32_t |
dataDid |
|
) |
| |
- Parameters
-
nonce | The big-endian nonce (MSB is nonce[0] and LSB is nonce[15]) serves as a 128-bit block counter for every 16-byte block of data . It is incremented by the number of blocks processed ((dataLen+15)/16). |
key | A pointer to the 128-bit key to be used for the nonce encryption. |
data | A pointer to the plain- or cypher-text to be encrypted/decrypted in place. |
dataLen | Indicates the number of bytes of data. It need not be a multiple of 16 bytes. |
dataDid | This parameter allows splitting a CTR operation across multiple calls. The first call passes in dataDid of 0 to start a fresh CTR. Then subsequent calls pass in dataDid of the sum of the previous calls' dataLen values (with data and dataLen representing the new portion to encrypt/decrypt). A non-zero dataDid indicates a continuation of the prior CTR operation which will pick up where the earlier one left off. |
- Note
- If your
nonce
is divided into a fixed and counter portion, ensure that the counter value passed in is such that when incremented by the number of blocks ((dataLen+15)/16) it won't overflow the counter portion into the fixed portion of the nonce. It may be necessary to split the operation across multiple calls to emberAesCtrCryptData() to satisfy this criteria.
void emberAesEcbEncryptBlock |
( |
uint8_t * |
block, |
|
|
const uint8_t * |
key, |
|
|
bool |
sameKey |
|
) |
| |
- Parameters
-
block | A pointer to the 128-bit data in RAM to be encrypted in place. |
key | A pointer to the 128-bit key to be used for the encryption. |
sameKey | If true, indicates that the 128-bit key value is the same as it was in a prior call to this routine and serves as a hint that the key needn't be reloaded into the AES hardware engine. Otherwise, the key value is considered new and will always be loaded. |