LPCOpen Platform for LPC18XX/43XX microcontrollers: CHIP: LPC18xx/43xx AES Engine driver

| LPCOpen Platform for LPC18XX/43XX microcontrollers 18XX43XX LPCOpen Platform for the NXP LPC18XX/43XX family of Microcontrollers

- Main Page
- Modules
- Data Structures
- Files

Enumerations | Functions
CHIP: LPC18xx/43xx AES Engine driver
LPC18xx/43xx chip specific drivers

## Detailed Description

## Enumerations
enum | CHIP_AES_OP_MODE_T { CHIP_AES_API_CMD_ENCODE_ECB, CHIP_AES_API_CMD_DECODE_ECB, CHIP_AES_API_CMD_ENCODE_CBC, CHIP_AES_API_CMD_DECODE_CBC }
| AES Engine operation mode. More...

## Functions
void | Chip_AES_Init (void)
| Initialize the AES Engine function. More...
uint32_t | Chip_AES_SetMode (CHIP_AES_OP_MODE_T AesMode)
| Set operation mode in AES Engine. More...
void | Chip_AES_LoadKey (uint32_t keyNum)
| Load 128-bit AES user key in AES Engine. More...
void | Chip_AES_LoadKeyRNG (void)
| Load randomly generated key in AES engine. More...
void | Chip_AES_LoadKeySW (uint8_t *pKey)
| Load 128-bit AES software defined user key in AES Engine. More...
void | Chip_AES_LoadIV_SW (uint8_t *pVector)
| Load 128-bit AES initialization vector in AES Engine. More...
void | Chip_AES_LoadIV_IC (void)
| Load IC specific 128-bit AES initialization vector in AES Engine. More...
uint32_t | Chip_AES_Operate (uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size)
| Operate AES Engine. More...
uint32_t | Chip_AES_ProgramKey (uint32_t KeyNum, uint8_t *pKey)
| Program 128-bit AES Key in OTP. More...
uint32_t | Chip_AES_Config_DMA (uint32_t channel_id)
| Checks for valid AES configuration of the chip and setup DMA channel to process an AES data block. More...
uint32_t | Chip_AES_OperateDMA (uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size)
| Checks for valid AES configuration of the chip and enables DMA channel to process an AES data block. More...
uint32_t | Chip_AES_GetStatusDMA (uint32_t channel_id)
| Read status of DMA channels that process an AES data block. More...

## Enumeration Type Documentation

enum CHIP_AES_OP_MODE_T

AES Engine operation mode.

Enumerator
CHIP_AES_API_CMD_ENCODE_ECB | ECB Encode mode
CHIP_AES_API_CMD_DECODE_ECB | ECB Decode mode
CHIP_AES_API_CMD_ENCODE_CBC | CBC Encode mode
CHIP_AES_API_CMD_DECODE_CBC | CBC Decode mode

Definition at line 47 of file aes_18xx_43xx.h.

## Function Documentation

uint32_t Chip_AES_Config_DMA | ( | uint32_t | channel_id | ) |

Checks for valid AES configuration of the chip and setup DMA channel to process an AES data block.

Parameters

  channel_id | : channel id

Returns
  Status

Definition at line 159 of file aes_18xx_43xx.c.

uint32_t Chip_AES_GetStatusDMA | ( | uint32_t | channel_id | ) |

Read status of DMA channels that process an AES data block.

Parameters

  channel_id | : channel id

Returns
  Status

Definition at line 171 of file aes_18xx_43xx.c.

void Chip_AES_Init | ( | void |  | ) |

Initialize the AES Engine function.

Returns
  None This function will initialize all the AES Engine driver function pointers and call the AES Engine Initialization function.

Definition at line 73 of file aes_18xx_43xx.c.

void Chip_AES_LoadIV_IC | ( | void |  | ) |

Load IC specific 128-bit AES initialization vector in AES Engine.

Returns
  None This loads 128-bit AES IC specific initialization vector, which is used to decrypt a boot image

Definition at line 133 of file aes_18xx_43xx.c.

void Chip_AES_LoadIV_SW | ( | uint8_t * | pVector | ) |

Load 128-bit AES initialization vector in AES Engine.

Parameters

  pVector | : Pointer to 16 byte Initialisation vector

Returns
  None

Definition at line 127 of file aes_18xx_43xx.c.

void Chip_AES_LoadKey | ( | uint32_t | keyNum | ) |

Load 128-bit AES user key in AES Engine.

Parameters

  keyNum,: | 0 - Load AES 128-bit user key 1, else load user key2

Returns
  None

Definition at line 104 of file aes_18xx_43xx.c.

void Chip_AES_LoadKeyRNG | ( | void |  | ) |

Load randomly generated key in AES engine.

Returns
  None To update the RNG and load a new random number, the API call Chip_OTP_GenRand should be used

Definition at line 115 of file aes_18xx_43xx.c.

void Chip_AES_LoadKeySW | ( | uint8_t * | pKey | ) |

Load 128-bit AES software defined user key in AES Engine.

Parameters

  pKey | : Pointer to 16 byte user key

Returns
  None

Definition at line 121 of file aes_18xx_43xx.c.

uint32_t Chip_AES_Operate | ( | uint8_t * | pDatOut,
|  | uint8_t * | pDatIn,
|  | uint32_t | Size
| ) |  |

Operate AES Engine.

Parameters

  pDatOut | : Pointer to output data stream
  pDatIn | : Pointer to input data stream
  Size | : Size of the data stream (128-bit)

Returns
  Status This function performs the AES operation after the AES mode has been set using Chip_AES_SetMode and the appropriate keys and init vectors have been loaded

Definition at line 139 of file aes_18xx_43xx.c.

uint32_t Chip_AES_OperateDMA | ( | uint32_t | channel_id,
|  | uint8_t * | dataOutAddr,
|  | uint8_t * | dataInAddr,
|  | uint32_t | size
| ) |  |

Checks for valid AES configuration of the chip and enables DMA channel to process an AES data block.

Parameters

  channel_id | : channel_id
  dataOutAddr | : destination address(16 x size of consecutive bytes)
  dataInAddr | : source address(16 x size of consecutive bytes)
  size | : number of 128 bit AES blocks

Returns
  Status

Definition at line 165 of file aes_18xx_43xx.c.

uint32_t Chip_AES_ProgramKey | ( | uint32_t | KeyNum,
|  | uint8_t * | pKey
| ) |  |

Program 128-bit AES Key in OTP.

Parameters

  KeyNum | : Key Number (Select 0 or 1)
  pKey | : Pointer to AES Key (16 bytes required)

Returns
  Status When calling the aes_ProgramKey2 function, ensure that VPP = 2.7 V to 3.6 V.

Definition at line 145 of file aes_18xx_43xx.c.

uint32_t Chip_AES_SetMode | ( | CHIP_AES_OP_MODE_T | AesMode | ) |

Set operation mode in AES Engine.

Parameters

  AesMode | : AES Operation Mode

Returns
  Status

Definition at line 98 of file aes_18xx_43xx.c.