MSP430 DriverLib for MSP430FR5xx_6xx Devices  2.21.00.08
 All Data Structures Functions Variables Modules Pages
aes256

Functions

uint8_t AES256_setCipherKey (uint16_t baseAddress, const uint8_t *cipherKey, uint16_t keyLength)
 Loads a 128, 192 or 256 bit cipher key to AES256 module. More...
 
void AES256_encryptData (uint16_t baseAddress, const uint8_t *data, uint8_t *encryptedData)
 Encrypts a block of data using the AES256 module. More...
 
void AES256_decryptData (uint16_t baseAddress, const uint8_t *data, uint8_t *decryptedData)
 Decrypts a block of data using the AES256 module. More...
 
uint8_t AES256_setDecipherKey (uint16_t baseAddress, const uint8_t *cipherKey, uint16_t keyLength)
 Sets the decipher key. More...
 
void AES256_clearInterrupt (uint16_t baseAddress)
 Clears the AES256 ready interrupt flag. More...
 
uint32_t AES256_getInterruptStatus (uint16_t baseAddress)
 Gets the AES256 ready interrupt flag status. More...
 
void AES256_enableInterrupt (uint16_t baseAddress)
 Enables AES256 ready interrupt. More...
 
void AES256_disableInterrupt (uint16_t baseAddress)
 Disables AES256 ready interrupt. More...
 
void AES256_reset (uint16_t baseAddress)
 Resets AES256 Module immediately. More...
 
void AES256_startEncryptData (uint16_t baseAddress, const uint8_t *data)
 Starts an encryption process on the AES256 module. More...
 
void AES256_startDecryptData (uint16_t baseAddress, const uint8_t *data)
 Decrypts a block of data using the AES256 module. More...
 
uint8_t AES256_startSetDecipherKey (uint16_t baseAddress, const uint8_t *cipherKey, uint16_t keyLength)
 Sets the decipher key. More...
 
uint8_t AES256_getDataOut (uint16_t baseAddress, uint8_t *outputData)
 Reads back the output data from AES256 module. More...
 
uint16_t AES256_isBusy (uint16_t baseAddress)
 Gets the AES256 module busy status. More...
 
void AES256_clearErrorFlag (uint16_t baseAddress)
 Clears the AES256 error flag. More...
 
uint32_t AES256_getErrorFlagStatus (uint16_t baseAddress)
 Gets the AES256 error flag status. More...
 

Detailed Description

Function Documentation

void AES256_clearErrorFlag ( uint16_t  baseAddress)

Clears the AES256 error flag.

Clears the AES256 error flag that results from a key or data being written while the AES256 module is busy.

Parameters
baseAddressis the base address of the AES256 module.

Modified bits are AESERRFG of AESACTL0 register.

Returns
None
void AES256_clearInterrupt ( uint16_t  baseAddress)

Clears the AES256 ready interrupt flag.

This function clears the AES256 ready interrupt flag. This flag is automatically cleared when AES256ADOUT is read, or when AES256AKEY or AES256ADIN is written. This function should be used when the flag needs to be reset and it has not been automatically cleared by one of the previous actions.

Parameters
baseAddressis the base address of the AES256 module.

Modified bits are AESRDYIFG of AESACTL0 register.

Returns
None
void AES256_decryptData ( uint16_t  baseAddress,
const uint8_t *  data,
uint8_t *  decryptedData 
)

Decrypts a block of data using the AES256 module.

This function requires a pregenerated decryption key. A key can be loaded and pregenerated by using function AES256_setDecipherKey() or AES256_startSetDecipherKey(). The decryption takes 167 MCLK.

Parameters
baseAddressis the base address of the AES256 module.
datais a pointer to an uint8_t array with a length of 16 bytes that contains encrypted data to be decrypted.
decryptedDatais a pointer to an uint8_t array with a length of 16 bytes in that the decrypted data will be written.
Returns
None
void AES256_disableInterrupt ( uint16_t  baseAddress)

Disables AES256 ready interrupt.

Disables AES256 ready interrupt. This interrupt is reset by a PUC, but not reset by AES256_reset.

Parameters
baseAddressis the base address of the AES256 module.

Modified bits are AESRDYIE of AESACTL0 register.

Returns
None
void AES256_enableInterrupt ( uint16_t  baseAddress)

Enables AES256 ready interrupt.

Enables AES256 ready interrupt. This interrupt is reset by a PUC, but not reset by AES256_reset.

Parameters
baseAddressis the base address of the AES256 module.

Modified bits are AESRDYIE of AESACTL0 register.

Returns
None
void AES256_encryptData ( uint16_t  baseAddress,
const uint8_t *  data,
uint8_t *  encryptedData 
)

Encrypts a block of data using the AES256 module.

The cipher key that is used for encryption should be loaded in advance by using function AES256_setCipherKey()

Parameters
baseAddressis the base address of the AES256 module.
datais a pointer to an uint8_t array with a length of 16 bytes that contains data to be encrypted.
encryptedDatais a pointer to an uint8_t array with a length of 16 bytes in that the encrypted data will be written.
Returns
None
uint8_t AES256_getDataOut ( uint16_t  baseAddress,
uint8_t *  outputData 
)

Reads back the output data from AES256 module.

This function is meant to use after an encryption or decryption process that was started and finished by initiating an interrupt by use of AES256_startEncryptData or AES256_startDecryptData functions.

Parameters
baseAddressis the base address of the AES256 module.
outputDatais a pointer to an uint8_t array with a length of 16 bytes in that the data will be written.
Returns
STATUS_SUCCESS if data is valid, otherwise STATUS_FAIL
uint32_t AES256_getErrorFlagStatus ( uint16_t  baseAddress)

Gets the AES256 error flag status.

Checks the AES256 error flag that results from a key or data being written while the AES256 module is busy. If the flag is set, it needs to be cleared using AES256_clearErrorFlag.

Parameters
baseAddressis the base address of the AES256 module.
Returns
One of the following:
  • AES256_ERROR_OCCURRED
  • AES256_NO_ERROR
    indicating the error flag status
uint32_t AES256_getInterruptStatus ( uint16_t  baseAddress)

Gets the AES256 ready interrupt flag status.

This function checks the AES256 ready interrupt flag. This flag is automatically cleared when AES256ADOUT is read, or when AES256AKEY or AES256ADIN is written. This function can be used to confirm that this has been done.

Parameters
baseAddressis the base address of the AES256 module.
Returns
One of the following:
  • AES256_READY_INTERRUPT
  • AES256_NOTREADY_INTERRUPT
    indicating the status of the AES256 ready status
uint16_t AES256_isBusy ( uint16_t  baseAddress)

Gets the AES256 module busy status.

Gets the AES256 module busy status. If a key or data are written while the AES256 module is busy, an error flag will be thrown.

Parameters
baseAddressis the base address of the AES256 module.
Returns
One of the following:
  • AES256_BUSY
  • AES256_NOT_BUSY
    indicating if the AES256 module is busy
void AES256_reset ( uint16_t  baseAddress)

Resets AES256 Module immediately.

This function performs a software reset on the AES256 Module, note that this does not affect the AES256 ready interrupt.

Parameters
baseAddressis the base address of the AES256 module.

Modified bits are AESSWRST of AESACTL0 register.

Returns
None
uint8_t AES256_setCipherKey ( uint16_t  baseAddress,
const uint8_t *  cipherKey,
uint16_t  keyLength 
)

Loads a 128, 192 or 256 bit cipher key to AES256 module.

This function loads a 128, 192 or 256 bit cipher key to AES256 module. Requires both a key as well as the length of the key provided. Acceptable key lengths are AES256_KEYLENGTH_128BIT, AES256_KEYLENGTH_192BIT, or AES256_KEYLENGTH_256BIT

Parameters
baseAddressis the base address of the AES256 module.
cipherKeyis a pointer to an uint8_t array with a length of 16 bytes that contains a 128 bit cipher key.
keyLengthis the length of the key. Valid values are:
  • AES256_KEYLENGTH_128BIT
  • AES256_KEYLENGTH_192BIT
  • AES256_KEYLENGTH_256BIT
Returns
STATUS_SUCCESS or STATUS_FAIL of key loading
uint8_t AES256_setDecipherKey ( uint16_t  baseAddress,
const uint8_t *  cipherKey,
uint16_t  keyLength 
)

Sets the decipher key.

The API AES256_startSetDecipherKey or AES256_setDecipherKey must be invoked before invoking AES256_startDecryptData.

Parameters
baseAddressis the base address of the AES256 module.
cipherKeyis a pointer to an uint8_t array with a length of 16 bytes that contains a 128 bit cipher key.
keyLengthis the length of the key. Valid values are:
  • AES256_KEYLENGTH_128BIT
  • AES256_KEYLENGTH_192BIT
  • AES256_KEYLENGTH_256BIT
Returns
STATUS_SUCCESS or STATUS_FAIL of key loading
void AES256_startDecryptData ( uint16_t  baseAddress,
const uint8_t *  data 
)

Decrypts a block of data using the AES256 module.

This is the non-blocking equivalent of AES256_decryptData(). This function requires a pregenerated decryption key. A key can be loaded and pregenerated by using function AES256_setDecipherKey() or AES256_startSetDecipherKey(). The decryption takes 167 MCLK. It is recommended to use interrupt to check for procedure completion then use the AES256_getDataOut() API to retrieve the decrypted data.

Parameters
baseAddressis the base address of the AES256 module.
datais a pointer to an uint8_t array with a length of 16 bytes that contains encrypted data to be decrypted.
Returns
None
void AES256_startEncryptData ( uint16_t  baseAddress,
const uint8_t *  data 
)

Starts an encryption process on the AES256 module.

The cipher key that is used for decryption should be loaded in advance by using function AES256_setCipherKey(). This is a non-blocking equivalent of AES256_encryptData(). It is recommended to use the interrupt functionality to check for procedure completion then use the AES256_getDataOut() API to retrieve the encrypted data.

Parameters
baseAddressis the base address of the AES256 module.
datais a pointer to an uint8_t array with a length of 16 bytes that contains data to be encrypted.
Returns
None
uint8_t AES256_startSetDecipherKey ( uint16_t  baseAddress,
const uint8_t *  cipherKey,
uint16_t  keyLength 
)

Sets the decipher key.

The API AES256_startSetDecipherKey() or AES256_setDecipherKey() must be invoked before invoking AES256_startDecryptData.

Parameters
baseAddressis the base address of the AES256 module.
cipherKeyis a pointer to an uint8_t array with a length of 16 bytes that contains a 128 bit cipher key.
keyLengthis the length of the key. Valid values are:
  • AES256_KEYLENGTH_128BIT
  • AES256_KEYLENGTH_192BIT
  • AES256_KEYLENGTH_256BIT
Returns
STATUS_SUCCESS or STATUS_FAIL of key loading

Copyright 2015, Texas Instruments Incorporated