Description
AES decryption functionality for bootloader.
Data Structures |
|
struct | AesContext |
Context variable type for AES-ECB.
|
|
struct | AesCtrContext |
Context variable type for AES-CTR (and AES-CCM)
|
|
Typedefs |
|
typedef struct AesContext | AesContext_t |
Context variable type for AES-ECB.
|
|
typedef struct AesCtrContext | AesCtrContext_t |
Context variable type for AES-CTR (and AES-CCM)
|
|
Functions |
|
void | btl_initAesContext (void *ctx) |
void | btl_setAesKey (void *ctx, const uint8_t *key, unsigned int keySize, bool encryptNotDecrypt) |
void | btl_processAesBlock (void *ctx, uint8_t *inputBlock, uint8_t *outputBlock, bool encryptNotDecrypt) |
void | btl_initAesCcm (void *ctx, uint8_t flags, uint8_t *nonce, uint32_t counter, const uint8_t *key, unsigned int keySize) |
void | btl_processAesCtrData (void *ctx, const uint8_t *input, uint8_t *output, size_t length) |
Function Documentation
void btl_initAesContext | ( | void * |
ctx
|
) |
Initialize AES context.
Wipes the AES context struct before use.
- Parameters
-
ctx
Context variable of type AesContext_t
void btl_setAesKey | ( | void * |
ctx,
|
const uint8_t * |
key,
|
||
unsigned int |
keySize,
|
||
bool |
encryptNotDecrypt
|
||
) |
Set AES key to use for encryption/decryption.
Initializes the AES context struct with the key to use.
- Parameters
-
ctx
Context variable of type AesContext_t key
Pointer to the AES key keySize
Size of the key in bits. Can be 128 or 256. encryptNotDecrypt
True if using this context for encryption, false if using for decryption.
void btl_processAesBlock | ( | void * |
ctx,
|
uint8_t * |
inputBlock,
|
||
uint8_t * |
outputBlock,
|
||
bool |
encryptNotDecrypt
|
||
) |
Process one block of data using AES-ECB.
Runs one block of data through the AES algorithm. In-place encryption/ decryption is supported.
- Parameters
-
ctx
Context variable of type AesContext_t inputBlock
128-bit (16 byte) buffer/block of data to be en/decrypted outputBlock
128-bit (16 byte) buffer/block of data to put the result of the en/decryption in. encryptNotDecrypt
True for encryption, false for decryption
void btl_initAesCcm | ( | void * |
ctx,
|
uint8_t |
flags,
|
||
uint8_t * |
nonce,
|
||
uint32_t |
counter,
|
||
const uint8_t * |
key,
|
||
unsigned int |
keySize
|
||
) |
Set up the AES-CTR context structure in CCM mode.
Initializes an AES-CTR context struct with parameters used in AES-CCM mode. Data can then be en/decrypted using btl_processAesCtrData.
- Parameters
-
ctx
Context variable of type AesCtrContext_t flags
CCM flags nonce
12-byte nonce specific to this transmission counter
3-byte running block counter key
Pointer to the AES key keySize
Size of the key in bits. Can be 128 or 256.
void btl_processAesCtrData | ( | void * |
ctx,
|
const uint8_t * |
input,
|
||
uint8_t * |
output,
|
||
size_t |
length
|
||
) |
Process data using AES-CTR.
Runs data for encryption or decryption (which uses the same function) through the AES-CTR algorithm. In-place encryption/decryption is supported.
- Parameters
-
ctx
Context variable of type AesCtrContext_t input
Raw data to en/decrypt output
Output buffer to put en/decrypted data length
Size (in bytes) of the input/output buffers