MSP432E4 DriverLib API Guide  1.11.00.03
Functions
Aes_api

Functions

void AESReset (uint32_t ui32Base)
 
void AESConfigSet (uint32_t ui32Base, uint32_t ui32Config)
 
void AESKey1Set (uint32_t ui32Base, uint32_t *pui32Key, uint32_t ui32Keysize)
 
void AESKey2Set (uint32_t ui32Base, uint32_t *pui32Key, uint32_t ui32Keysize)
 
void AESKey3Set (uint32_t ui32Base, uint32_t *pui32Key)
 
void AESIVSet (uint32_t ui32Base, uint32_t *pui32IVdata)
 
void AESIVRead (uint32_t ui32Base, uint32_t *pui32IVData)
 
void AESTagRead (uint32_t ui32Base, uint32_t *pui32TagData)
 
void AESLengthSet (uint32_t ui32Base, uint64_t ui64Length)
 
void AESAuthLengthSet (uint32_t ui32Base, uint32_t ui32Length)
 
bool AESDataReadNonBlocking (uint32_t ui32Base, uint32_t *pui32Dest)
 
void AESDataRead (uint32_t ui32Base, uint32_t *pui32Dest)
 
bool AESDataWriteNonBlocking (uint32_t ui32Base, uint32_t *pui32Src)
 
void AESDataWrite (uint32_t ui32Base, uint32_t *pui32Src)
 
bool AESDataProcess (uint32_t ui32Base, uint32_t *pui32Src, uint32_t *pui32Dest, uint32_t ui32Length)
 
bool AESDataAuth (uint32_t ui32Base, uint32_t *pui32Src, uint32_t ui32Length, uint32_t *pui32Tag)
 
bool AESDataProcessAuth (uint32_t ui32Base, uint32_t *pui32Src, uint32_t *pui32Dest, uint32_t ui32Length, uint32_t *pui32AuthSrc, uint32_t ui32AuthLength, uint32_t *pui32Tag)
 
uint32_t AESIntStatus (uint32_t ui32Base, bool bMasked)
 
void AESIntEnable (uint32_t ui32Base, uint32_t ui32IntFlags)
 
void AESIntDisable (uint32_t ui32Base, uint32_t ui32IntFlags)
 
void AESIntClear (uint32_t ui32Base, uint32_t ui32IntFlags)
 
void AESIntRegister (uint32_t ui32Base, void(*pfnHandler)(void))
 
void AESIntUnregister (uint32_t ui32Base)
 
void AESDMAEnable (uint32_t ui32Base, uint32_t ui32Flags)
 
void AESDMADisable (uint32_t ui32Base, uint32_t ui32Flags)
 

Detailed Description

Introduction

The AES module driver provides a method for performing encryption and decryption operations on blocks of 128-bits of data. The configuration and feature highlights are:

API Functions

The AES API consists of functions for configuring the AES module and processing data.

Programming Example

The following example sets up the AES module to perform an encryption operation on four blocks of data in CBC mode with an 128-bit key. This example corresponds to vector F.2.1 in NIST document SP 800-38A.

//
// Random data for encryption/decryption.
//
uint32_t g_ui32AESPlainText[16] =
{
0xe2bec16b, 0x969f402e, 0x117e3de9, 0x2a179373,
0x578a2dae, 0x9cac031e, 0xac6fb79e, 0x518eaf45,
0x461cc830, 0x11e45ca3, 0x19c1fbe5, 0xef520a1a,
0x45249ff6, 0x179b4fdf, 0x7b412bad, 0x10376ce6
};
//
// Encryption key
//
uint32_t g_ui32AES128Key[4] =
{
0x16157e2b, 0xa6d2ae28, 0x8815f7ab, 0x3c4fcf09
};
//
// Initial value for CBC mode.
//
uint32_t g_ui32AESIV[4] =
{
0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c
};
int
main(void)
{
uint32_t pui32CipherText[16];
//
// Enable the CCM module.
//
//
// Wait for the CCM module to be ready.
//
{
}
//
// Reset the AES module before use.
//
AESReset(AES_BASE);
//
// Configure the AES module.
//
AESConfigSet(AES_BASE,
//
// Set the initial value.
//
AESIVSet(AES_BASE, g_ui32AESIV);
//
// Set the encryption key.
//
AESKey1Set(AES_BASE, g_ui32AES128Key);
//
// Encrypt the data.
//
// The ciphertext should be:
// {0xacab4976, 0x46b21981, 0x9b8ee9ce, 0x7d19e912,
// 0x9bcb8650, 0xee197250, 0x3a11db95, 0xb2787691,
// 0xb8d6be73, 0x3b74c1e3, 0x9ee61671, 0x16952222,
// 0xa1caf13f, 0x09ac1f68, 0x30ca0e12, 0xa7e18675}
//
AESDataProcess(AES_BASE, g_ui32AESPlainText, pui32CipherText, 64);
}

Function Documentation

§ AESReset()

void AESReset ( uint32_t  ui32Base)

Resets the AES module.

Parameters
ui32Baseis the base address of the AES module.

This function performs a softreset the AES module.

Returns
None.

References AES_O_SYSCONFIG, AES_O_SYSSTATUS, AES_SYSCONFIG_SOFTRESET, AES_SYSSTATUS_RESETDONE, ASSERT, and HWREG.

§ AESConfigSet()

void AESConfigSet ( uint32_t  ui32Base,
uint32_t  ui32Config 
)

Configures the AES module.

Parameters
ui32Baseis the base address of the AES module.
ui32Configis the configuration of the AES module.

This function configures the AES module based on the specified parameters. It does not change any DMA- or interrupt-related parameters.

The ui32Config parameter is a bit-wise OR of a number of configuration flags. The valid flags are grouped based on their function.

The direction of the operation is specified with only of following flags:

  • AES_CFG_DIR_ENCRYPT - Encryption mode
  • AES_CFG_DIR_DECRYPT - Decryption mode

The key size is specified with only one of the following flags:

  • AES_CFG_KEY_SIZE_128BIT - Key size of 128 bits
  • AES_CFG_KEY_SIZE_192BIT - Key size of 192 bits
  • AES_CFG_KEY_SIZE_256BIT - Key size of 256 bits

The mode of operation is specified with only one of the following flags.

  • AES_CFG_MODE_ECB - Electronic codebook mode
  • AES_CFG_MODE_CBC - Cipher-block chaining mode
  • AES_CFG_MODE_CFB - Cipher feedback mode
  • AES_CFG_MODE_CTR - Counter mode
  • AES_CFG_MODE_ICM - Integer counter mode
  • AES_CFG_MODE_XTS - Ciphertext stealing mode
  • AES_CFG_MODE_XTS_TWEAKJL - XEX-based tweaked-codebook mode with ciphertext stealing with previous/intermediate tweak value and j loaded
  • AES_CFG_MODE_XTS_K2IJL - XEX-based tweaked-codebook mode with ciphertext stealing with key2, i and j loaded
  • AES_CFG_MODE_XTS_K2ILJ0 - XEX-based tweaked-codebook mode with ciphertext stealing with key2 and i loaded, j = 0
  • AES_CFG_MODE_F8 - F8 mode
  • AES_CFG_MODE_F9 - F9 mode
  • AES_CFG_MODE_CBCMAC - Cipher block chaining message authentication code mode
  • AES_CFG_MODE_GCM_HLY0ZERO - Galois/counter mode with GHASH with H loaded, Y0-encrypted forced to zero and counter is not enabled.
  • AES_CFG_MODE_GCM_HLY0CALC - Galois/counter mode with GHASH with H loaded, Y0-encrypted calculated internally and counter is enabled.
  • AES_CFG_MODE_GCM_HY0CALC - Galois/Counter mode with autonomous GHASH (both H and Y0-encrypted calculated internally) and counter is enabled.
  • AES_CFG_MODE_CCM - Counter with CBC-MAC mode

The following defines are used to specify the counter width. It is only required to be defined when using CTR, CCM, or GCM modes, only one of the following defines must be used to specify the counter width length:

  • AES_CFG_CTR_WIDTH_32 - Counter is 32 bits
  • AES_CFG_CTR_WIDTH_64 - Counter is 64 bits
  • AES_CFG_CTR_WIDTH_96 - Counter is 96 bits
  • AES_CFG_CTR_WIDTH_128 - Counter is 128 bits

Only one of the following defines must be used to specify the length field for CCM operations (L):

  • AES_CFG_CCM_L_1 - 1 byte
  • AES_CFG_CCM_L_2 - 2 bytes
  • AES_CFG_CCM_L_3 - 3 bytes
  • AES_CFG_CCM_L_4 - 4 bytes
  • AES_CFG_CCM_L_5 - 5 bytes
  • AES_CFG_CCM_L_6 - 6 bytes
  • AES_CFG_CCM_L_7 - 7 bytes
  • AES_CFG_CCM_L_8 - 8 bytes

Only one of the following defines must be used to specify the length of the authentication field for CCM operations (M) through the ui32Config argument in the AESConfigSet() function:

  • AES_CFG_CCM_M_4 - 4 bytes
  • AES_CFG_CCM_M_6 - 6 bytes
  • AES_CFG_CCM_M_8 - 8 bytes
  • AES_CFG_CCM_M_10 - 10 bytes
  • AES_CFG_CCM_M_12 - 12 bytes
  • AES_CFG_CCM_M_14 - 14 bytes
  • AES_CFG_CCM_M_16 - 16 bytes
Note
When performing a basic GHASH operation for used with GCM mode, use the AES_CFG_MODE_GCM_HLY0ZERO and do not specify a direction.
Returns
None.

References AES_CFG_CCM_L_1, AES_CFG_CCM_L_2, AES_CFG_CCM_L_3, AES_CFG_CCM_L_4, AES_CFG_CCM_L_5, AES_CFG_CCM_L_6, AES_CFG_CCM_L_7, AES_CFG_CCM_L_8, AES_CFG_CCM_M_10, AES_CFG_CCM_M_12, AES_CFG_CCM_M_14, AES_CFG_CCM_M_16, AES_CFG_CCM_M_4, AES_CFG_CCM_M_6, AES_CFG_CCM_M_8, AES_CFG_CTR_WIDTH_128, AES_CFG_CTR_WIDTH_32, AES_CFG_CTR_WIDTH_64, AES_CFG_CTR_WIDTH_96, AES_CFG_DIR_DECRYPT, AES_CFG_DIR_ENCRYPT, AES_CFG_KEY_SIZE_128BIT, AES_CFG_KEY_SIZE_192BIT, AES_CFG_KEY_SIZE_256BIT, AES_CFG_MODE_CBC, AES_CFG_MODE_CBCMAC, AES_CFG_MODE_CCM, AES_CFG_MODE_CFB, AES_CFG_MODE_CTR, AES_CFG_MODE_ECB, AES_CFG_MODE_F8, AES_CFG_MODE_F9, AES_CFG_MODE_GCM_HLY0CALC, AES_CFG_MODE_GCM_HLY0ZERO, AES_CFG_MODE_GCM_HY0CALC, AES_CFG_MODE_ICM, AES_CFG_MODE_XTS_K2IJL, AES_CFG_MODE_XTS_K2ILJ0, AES_CFG_MODE_XTS_TWEAKJL, AES_CTRL_SAVE_CONTEXT, AES_O_CTRL, ASSERT, and HWREG.

§ AESKey1Set()

void AESKey1Set ( uint32_t  ui32Base,
uint32_t *  pui32Key,
uint32_t  ui32Keysize 
)

Writes the key 1 configuration registers, which are used for encryption or decryption.

Parameters
ui32Baseis the base address for the AES module.
pui32Keyis an array of 32-bit words, containing the key to be configured. The least significant word in the 0th index.
ui32Keysizeis the size of the key, which must be one of the following values: AES_CFG_KEY_SIZE_128, AES_CFG_KEY_SIZE_192, or AES_CFG_KEY_SIZE_256.

This function writes key 1 configuration registers based on the key size. This function is used in all modes.

Returns
None.

References AES_CFG_KEY_SIZE_128BIT, AES_CFG_KEY_SIZE_192BIT, AES_CFG_KEY_SIZE_256BIT, AES_O_KEY1_0, AES_O_KEY1_1, AES_O_KEY1_2, AES_O_KEY1_3, AES_O_KEY1_4, AES_O_KEY1_5, AES_O_KEY1_6, AES_O_KEY1_7, ASSERT, and HWREG.

§ AESKey2Set()

void AESKey2Set ( uint32_t  ui32Base,
uint32_t *  pui32Key,
uint32_t  ui32Keysize 
)

Writes the key 2 configuration registers, which are used for encryption or decryption.

Parameters
ui32Baseis the base address for the AES module.
pui32Keyis an array of 32-bit words, containing the key to be configured. The least significant word in the 0th index.
ui32Keysizeis the size of the key, which must be one of the following values: AES_CFG_KEY_SIZE_128, AES_CFG_KEY_SIZE_192, or AES_CFG_KEY_SIZE_256.

This function writes the key 2 configuration registers based on the key size. This function is used in the F8, F9, XTS, CCM, and CBC-MAC modes.

Returns
None.

References AES_CFG_KEY_SIZE_128BIT, AES_CFG_KEY_SIZE_192BIT, AES_CFG_KEY_SIZE_256BIT, AES_O_KEY2_0, AES_O_KEY2_1, AES_O_KEY2_2, AES_O_KEY2_3, AES_O_KEY2_4, AES_O_KEY2_5, AES_O_KEY2_6, AES_O_KEY2_7, ASSERT, and HWREG.

§ AESKey3Set()

void AESKey3Set ( uint32_t  ui32Base,
uint32_t *  pui32Key 
)

Writes key 3 configuration registers, which are used for encryption or decryption.

Parameters
ui32Baseis the base address for the AES module.
pui32Keyis a pointer to an array of 4 words (128 bits), containing the key to be configured. The least significant word is in the 0th index.

This function writes the key 2 configuration registers with key 3 data used in CBC-MAC and F8 modes. This key is always 128 bits.

Returns
None.

References AES_O_KEY2_4, AES_O_KEY2_5, AES_O_KEY2_6, AES_O_KEY2_7, ASSERT, and HWREG.

§ AESIVSet()

void AESIVSet ( uint32_t  ui32Base,
uint32_t *  pui32IVdata 
)

Writes the Initial Vector (IV) register, needed in some of the AES Modes.

Parameters
ui32Baseis the base address of the AES module.
pui32IVdatais an array of 4 words (128 bits), containing the IV value to be configured. The least significant word is in the 0th index.

This functions writes the initial vector registers in the AES module.

Returns
None.

References AES_O_IV_IN_0, AES_O_IV_IN_1, AES_O_IV_IN_2, AES_O_IV_IN_3, ASSERT, and HWREG.

§ AESIVRead()

void AESIVRead ( uint32_t  ui32Base,
uint32_t *  pui32IVData 
)

Saves the Initial Vector (IV) registers to a user-defined location.

Parameters
ui32Baseis the base address of the AES module.
pui32IVDatais pointer to the location that stores the IV data.

This function stores the IV for use with authenticated encryption and decryption operations. It is assumed that the AES_CTRL_SAVE_CONTEXT bit is set in the AES_CTRL register.

Returns
None.

References AES_CTRL_SVCTXTRDY, AES_O_CTRL, AES_O_IV_IN_0, AES_O_IV_IN_1, AES_O_IV_IN_2, AES_O_IV_IN_3, ASSERT, and HWREG.

§ AESTagRead()

void AESTagRead ( uint32_t  ui32Base,
uint32_t *  pui32TagData 
)

Saves the tag registers to a user-defined location.

Parameters
ui32Baseis the base address of the AES module.
pui32TagDatais pointer to the location that stores the tag data.

This function stores the tag data for use authenticated encryption and decryption operations. It is assumed that the AES_CTRL_SAVE_CONTEXT bit is set in the AES_CTRL register.

Returns
None.

References AES_CTRL_SVCTXTRDY, AES_O_CTRL, AES_O_TAG_OUT_0, AES_O_TAG_OUT_1, AES_O_TAG_OUT_2, AES_O_TAG_OUT_3, ASSERT, and HWREG.

Referenced by AESDataAuth(), and AESDataProcessAuth().

§ AESLengthSet()

void AESLengthSet ( uint32_t  ui32Base,
uint64_t  ui64Length 
)

Used to set the write crypto data length in the AES module.

Parameters
ui32Baseis the base address of the AES module.
ui64Lengthis the crypto data length in bytes.

This function stores the cryptographic data length in blocks for all modes. Data lengths up to (2^61 - 1) bytes are allowed. For GCM, any value up to (2^36 - 2) bytes are allowed because a 32-bit block counter is used. For basic modes (ECB/CBC/CTR/ICM/CFB128), zero can be programmed into the length field, indicating that the length is infinite.

When this function is called, the engine is triggered to start using this context.

Note
This length does not include the authentication-only data used in some modes. Use the AESAuthLengthSet() function to specify the authentication data length.
Returns
None

References AES_O_C_LENGTH_0, AES_O_C_LENGTH_1, ASSERT, and HWREG.

Referenced by AESDataAuth(), AESDataProcess(), and AESDataProcessAuth().

§ AESAuthLengthSet()

void AESAuthLengthSet ( uint32_t  ui32Base,
uint32_t  ui32Length 
)

Sets the authentication data length in the AES module.

Parameters
ui32Baseis the base address of the AES module.
ui32Lengthis the length in bytes.

This function is only used to write the authentication data length in the combined modes (GCM or CCM) and XTS mode. Supported AAD lengths for CCM are from 0 to (2^16 - 28) bytes. For GCM, any value up to (2^32 - 1) can be used. For XTS mode, this register is used to load j. Loading of j is only required if j != 0. j represents the sequential number of the 128-bit blocks inside the data unit. Consequently, j must be multiplied by 16 when passed to this function, thereby placing the block number in bits [31:4] of the register.

When this function is called, the engine is triggered to start using this context for GCM and CCM.

Returns
None

References AES_O_AUTH_LENGTH, ASSERT, and HWREG.

Referenced by AESDataProcessAuth().

§ AESDataReadNonBlocking()

bool AESDataReadNonBlocking ( uint32_t  ui32Base,
uint32_t *  pui32Dest 
)

Reads plaintext/ciphertext from data registers without blocking.

Parameters
ui32Baseis the base address of the AES module.
pui32Destis a pointer to an array of words of data.

This function reads a block of either plaintext or ciphertext out of the AES module. If the output data is not ready, the function returns false. If the read completed successfully, the function returns true. A block is 16 bytes or 4 words.

Returns
true or false.

References AES_CTRL_OUTPUT_READY, AES_O_CTRL, AES_O_DATA_IN_0, AES_O_DATA_IN_1, AES_O_DATA_IN_2, AES_O_DATA_IN_3, ASSERT, and HWREG.

§ AESDataRead()

void AESDataRead ( uint32_t  ui32Base,
uint32_t *  pui32Dest 
)

Reads plaintext/ciphertext from data registers with blocking.

Parameters
ui32Baseis the base address of the AES module.
pui32Destis a pointer to an array of words.

This function reads a block of either plaintext or ciphertext out of the AES module. If the output is not ready, the function waits until it is ready. A block is 16 bytes or 4 words.

Returns
None.

References AES_CTRL_OUTPUT_READY, AES_O_CTRL, AES_O_DATA_IN_0, AES_O_DATA_IN_1, AES_O_DATA_IN_2, AES_O_DATA_IN_3, ASSERT, and HWREG.

Referenced by AESDataProcess(), and AESDataProcessAuth().

§ AESDataWriteNonBlocking()

bool AESDataWriteNonBlocking ( uint32_t  ui32Base,
uint32_t *  pui32Src 
)

Writes plaintext/ciphertext to data registers without blocking.

Parameters
ui32Baseis the base address of the AES module.
pui32Srcis a pointer to an array of words of data.

This function writes a block of either plaintext or ciphertext into the AES module. If the input is not ready, the function returns false. If the write completed successfully, the function returns true. A block is 16 bytes or 4 words.

Returns
True or false.

References AES_CTRL_INPUT_READY, AES_O_CTRL, AES_O_DATA_IN_0, AES_O_DATA_IN_1, AES_O_DATA_IN_2, AES_O_DATA_IN_3, ASSERT, and HWREG.

§ AESDataWrite()

void AESDataWrite ( uint32_t  ui32Base,
uint32_t *  pui32Src 
)

Writes plaintext/ciphertext to data registers with blocking.

Parameters
ui32Baseis the base address of the AES module.
pui32Srcis a pointer to an array of bytes.

This function writes a block of either plaintext or ciphertext into the AES module. If the input is not ready, the function waits until it is ready before performing the write. A block is 16 bytes or 4 words.

Returns
None.

References AES_CTRL_INPUT_READY, AES_O_CTRL, AES_O_DATA_IN_0, AES_O_DATA_IN_1, AES_O_DATA_IN_2, AES_O_DATA_IN_3, ASSERT, and HWREG.

Referenced by AESDataAuth(), AESDataProcess(), and AESDataProcessAuth().

§ AESDataProcess()

bool AESDataProcess ( uint32_t  ui32Base,
uint32_t *  pui32Src,
uint32_t *  pui32Dest,
uint32_t  ui32Length 
)

Used to process(transform) blocks of data, either encrypt or decrypt it.

Parameters
ui32Baseis the base address of the AES module.
pui32Srcis a pointer to the memory location where the input data is stored. The data must be padded to the 16-byte boundary.
pui32Destis a pointer to the memory location output is written. The space for written data must be rounded up to the 16-byte boundary.
ui32Lengthis the length of the cryptographic data in bytes.

This function iterates the encryption or decryption mechanism number over the data length. Before calling this function, ensure that the AES module is properly configured the key, data size, mode, etc. Only ECB, CBC, CTR, ICM, CFB, XTS and F8 operating modes should be used. The data is processed in 4-word (16-byte) blocks.

Note
This function only supports values of ui32Length less than 2^32, because the memory size is restricted to between 0 to 2^32 bytes.
Returns
Returns true if data was processed successfully. Returns false if data processing failed.

References AESDataRead(), AESDataWrite(), AESLengthSet(), and ASSERT.

§ AESDataAuth()

bool AESDataAuth ( uint32_t  ui32Base,
uint32_t *  pui32Src,
uint32_t  ui32Length,
uint32_t *  pui32Tag 
)

Used to authenticate blocks of data by generating a hash tag.

Parameters
ui32Baseis the base address of the AES module.
pui32Srcis a pointer to the memory location where the input data is stored. The data must be padded to the 16-byte boundary.
ui32Lengthis the length of the cryptographic data in bytes.
pui32Tagis a pointer to a 4-word array where the hash tag is written.

This function processes data to produce a hash tag that can be used tor authentication. Before calling this function, ensure that the AES module is properly configured the key, data size, mode, etc. Only CBC-MAC and F9 modes should be used.

Returns
Returns true if data was processed successfully. Returns false if data processing failed.

References AESDataWrite(), AESLengthSet(), AESTagRead(), and ASSERT.

§ AESDataProcessAuth()

bool AESDataProcessAuth ( uint32_t  ui32Base,
uint32_t *  pui32Src,
uint32_t *  pui32Dest,
uint32_t  ui32Length,
uint32_t *  pui32AuthSrc,
uint32_t  ui32AuthLength,
uint32_t *  pui32Tag 
)

Processes and authenticates blocks of data, either encrypt it or decrypts it.

Parameters
ui32Baseis the base address of the AES module.
pui32Srcis a pointer to the memory location where the input data is stored. The data must be padded to the 16-byte boundary.
pui32Destis a pointer to the memory location output is written. The space for written data must be rounded up to the 16-byte boundary.
ui32Lengthis the length of the cryptographic data in bytes.
pui32AuthSrcis a pointer to the memory location where the additional authentication data is stored. The data must be padded to the 16-byte boundary.
ui32AuthLengthis the length of the additional authentication data in bytes.
pui32Tagis a pointer to a 4-word array where the hash tag is written.

This function encrypts or decrypts blocks of data in addition to authentication data. A hash tag is also produced. Before calling this function, ensure that the AES module is properly configured the key, data size, mode, etc. Only CCM and GCM modes should be used.

Returns
Returns true if data was processed successfully. Returns false if data processing failed.

References AESAuthLengthSet(), AESDataRead(), AESDataWrite(), AESLengthSet(), AESTagRead(), and ASSERT.

§ AESIntStatus()

uint32_t AESIntStatus ( uint32_t  ui32Base,
bool  bMasked 
)

Returns the current AES module interrupt status.

Parameters
ui32Baseis the base address of the AES module.
bMaskedis false if the raw interrupt status is required and true if the masked interrupt status is required.
Returns
Returns a bit mask of the interrupt sources, which is a logical OR of any of the following:
  • AES_INT_CONTEXT_IN - Context interrupt
  • AES_INT_CONTEXT_OUT - Authentication tag (and IV) interrupt.
  • AES_INT_DATA_IN - Data input interrupt
  • AES_INT_DATA_OUT - Data output interrupt
  • AES_INT_DMA_CONTEXT_IN - Context DMA done interrupt
  • AES_INT_DMA_CONTEXT_OUT - Authentication tag (and IV) DMA done interrupt
  • AES_INT_DMA_DATA_IN - Data input DMA done interrupt
  • AES_INT_DMA_DATA_OUT - Data output DMA done interrupt

References AES_O_DMAMIS, AES_O_DMARIS, AES_O_IRQENABLE, AES_O_IRQSTATUS, ASSERT, and HWREG.

§ AESIntEnable()

void AESIntEnable ( uint32_t  ui32Base,
uint32_t  ui32IntFlags 
)

Enables AES module interrupts.

Parameters
ui32Baseis the base address of the AES module.
ui32IntFlagsis a bit mask of the interrupt sources to enable.

This function enables the interrupts in the AES module. The ui32IntFlags parameter is the logical OR of any of the following:

  • AES_INT_CONTEXT_IN - Context interrupt
  • AES_INT_CONTEXT_OUT - Authentication tag (and IV) interrupt
  • AES_INT_DATA_IN - Data input interrupt
  • AES_INT_DATA_OUT - Data output interrupt
  • AES_INT_DMA_CONTEXT_IN - Context DMA done interrupt
  • AES_INT_DMA_CONTEXT_OUT - Authentication tag (and IV) DMA done interrupt
  • AES_INT_DMA_DATA_IN - Data input DMA done interrupt
  • AES_INT_DMA_DATA_OUT - Data output DMA done interrupt
Note
Interrupts that have been previously been enabled are not disabled when this function is called.
Returns
None.

References AES_INT_CONTEXT_IN, AES_INT_CONTEXT_OUT, AES_INT_DATA_IN, AES_INT_DATA_OUT, AES_INT_DMA_CONTEXT_IN, AES_INT_DMA_CONTEXT_OUT, AES_INT_DMA_DATA_IN, AES_INT_DMA_DATA_OUT, AES_O_DMAIM, AES_O_IRQENABLE, ASSERT, and HWREG.

§ AESIntDisable()

void AESIntDisable ( uint32_t  ui32Base,
uint32_t  ui32IntFlags 
)

Disables AES module interrupts.

Parameters
ui32Baseis the base address of the AES module.
ui32IntFlagsis a bit mask of the interrupt sources to disable.

This function disables the interrupt sources in the AES module. The ui32IntFlags parameter is the logical OR of any of the following:

  • AES_INT_CONTEXT_IN - Context interrupt
  • AES_INT_CONTEXT_OUT - Authentication tag (and IV) interrupt
  • AES_INT_DATA_IN - Data input interrupt
  • AES_INT_DATA_OUT - Data output interrupt
  • AES_INT_DMA_CONTEXT_IN - Context DMA done interrupt
  • AES_INT_DMA_CONTEXT_OUT - Authentication tag (and IV) DMA done interrupt
  • AES_INT_DMA_DATA_IN - Data input DMA done interrupt
  • AES_INT_DMA_DATA_OUT - Data output DMA done interrupt
Note
The DMA done interrupts are the only interrupts that can be cleared. The remaining interrupts can be disabled instead using AESIntDisable().
Returns
None.

References AES_INT_CONTEXT_IN, AES_INT_CONTEXT_OUT, AES_INT_DATA_IN, AES_INT_DATA_OUT, AES_INT_DMA_CONTEXT_IN, AES_INT_DMA_CONTEXT_OUT, AES_INT_DMA_DATA_IN, AES_INT_DMA_DATA_OUT, AES_O_DMAIM, AES_O_IRQENABLE, ASSERT, and HWREG.

§ AESIntClear()

void AESIntClear ( uint32_t  ui32Base,
uint32_t  ui32IntFlags 
)

Clears AES module interrupts.

Parameters
ui32Baseis the base address of the AES module.
ui32IntFlagsis a bit mask of the interrupt sources to disable.

This function clears the interrupt sources in the AES module. The ui32IntFlags parameter is the logical OR of any of the following:

  • AES_INT_DMA_CONTEXT_IN - Context DMA done interrupt
  • AES_INT_DMA_CONTEXT_OUT - Authentication tag (and IV) DMA done interrupt
  • AES_INT_DMA_DATA_IN - Data input DMA done interrupt
  • AES_INT_DMA_DATA_OUT - Data output DMA done interrupt
Note
Only the DMA done interrupts can be cleared. The remaining interrupts should be disabled with AESIntDisable().
Returns
None.

References AES_INT_DMA_CONTEXT_IN, AES_INT_DMA_CONTEXT_OUT, AES_INT_DMA_DATA_IN, AES_INT_DMA_DATA_OUT, AES_O_DMAIC, ASSERT, and HWREG.

§ AESIntRegister()

void AESIntRegister ( uint32_t  ui32Base,
void(*)(void)  pfnHandler 
)

Registers an interrupt handler for the AES module.

Parameters
ui32Baseis the base address of the AES module.
pfnHandleris a pointer to the function to be called when the enabled AES interrupts occur.

This function registers the interrupt handler in the interrupt vector table, and enables AES interrupts on the interrupt controller; specific AES interrupt sources must be enabled using AESIntEnable(). The interrupt handler being registered must clear the source of the interrupt using AESIntClear().

If the application is using a static interrupt vector table stored in flash, then it is not necessary to register the interrupt handler this way. Instead, IntEnable() is used to enable AES interrupts on the interrupt controller.

See also
IntRegister() for important information about registering interrupt handlers.
Returns
None.

References ASSERT, INT_AES0, IntEnable(), and IntRegister().

§ AESIntUnregister()

void AESIntUnregister ( uint32_t  ui32Base)

Unregisters an interrupt handler for the AES module.

Parameters
ui32Baseis the base address of the AES module.

This function unregisters the previously registered interrupt handler and disables the interrupt in the interrupt controller.

See also
IntRegister() for important information about registering interrupt handlers.
Returns
None.

References ASSERT, INT_AES0, IntDisable(), and IntUnregister().

§ AESDMAEnable()

void AESDMAEnable ( uint32_t  ui32Base,
uint32_t  ui32Flags 
)

Enables uDMA requests for the AES module.

Parameters
ui32Baseis the base address of the AES module.
ui32Flagsis a bit mask of the uDMA requests to be enabled.

This function enables the uDMA request sources in the AES module. The ui32Flags parameter is the logical OR of any of the following:

  • AES_DMA_DATA_IN
  • AES_DMA_DATA_OUT
  • AES_DMA_CONTEXT_IN
  • AES_DMA_CONTEXT_OUT
Returns
None.

References AES_DMA_CONTEXT_IN, AES_DMA_CONTEXT_OUT, AES_DMA_DATA_IN, AES_DMA_DATA_OUT, AES_O_SYSCONFIG, ASSERT, and HWREG.

§ AESDMADisable()

void AESDMADisable ( uint32_t  ui32Base,
uint32_t  ui32Flags 
)

Disables uDMA requests for the AES module.

Parameters
ui32Baseis the base address of the AES module.
ui32Flagsis a bit mask of the uDMA requests to be disabled.

This function disables the uDMA request sources in the AES module. The ui32Flags parameter is the logical OR of any of the following:

  • AES_DMA_DATA_IN
  • AES_DMA_DATA_OUT
  • AES_DMA_CONTEXT_IN
  • AES_DMA_CONTEXT_OUT
Returns
None.

References AES_DMA_CONTEXT_IN, AES_DMA_CONTEXT_OUT, AES_DMA_DATA_IN, AES_DMA_DATA_OUT, AES_O_SYSCONFIG, ASSERT, and HWREG.

© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale