Defines all functions of mcuxClEls_Rng.
More...
Defines all functions of mcuxClEls_Rng.
◆ mcuxClEls_Rng_DrbgRequest_Async()
Writes random data from the ELS DRBG to the given buffer.
This function fills a buffer with random values from the DRBG. The DRBG provides 128 bits of security strength.
Before execution, ELS will wait until mcuxClEls_HwState_t.drbgentlvl == MCUXCLELS_STATUS_DRBGENTLVL_HIGH. This can lead to a delay if the DRBG is in a state with less security strength at the time of the call.
If the random values from the DRBG are later used as a cryptographic key, the security strength of the cryptographic operation using the generated key should not exceed that of the DRBG.
To name a few examples, this means (as per NIST SP 800-57 Part 1 Rev. 5):
- AES-192 or AES-256 keys generated with this function will provide only 128 bits of security strength
- RSA keys longer than 3072 bits will provide only 128 bits of security strength
- ECC keys longer than 383 bits will provide only 128 bits of security strength
Call mcuxClEls_WaitForOperation to complete the operation.
- Parameters
-
[out] | pOutput | Pointer to the beginning of the memory area to fill with random data |
[in] | outputLength | Number of requested random bytes |
- Parameter properties
outputLength
- supported values are MCUXCLELS_RNG_DRBG_TEST_EXTRACT_OUTPUT_MIN_SIZE bytes up to MCUXCLELS_RNG_DRBG_TEST_EXTRACT_OUTPUT_MAX_SIZE bytes. The size must be a multiple of 4.
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
◆ mcuxClEls_Rng_DrbgTestInstantiate_Async()
Instantiates the DRBG in test mode.
This function is a support function for FIPS CAVP testing. This function turns the ELS internal DRBG in test mode by loading known entropy from system memory. Call mcuxClEls_WaitForOperation to complete the operation. Note that this function will alter the ELS internal entropy state which needs to be updated by the TRNG to use the DRBG in normal mode. The update process is majorly impacted by the time the TRNG needs to provide fresh entropy.
- Parameters
-
[in] | pEntropy | Pointer to the input entropy data |
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
◆ mcuxClEls_Rng_DrbgTestExtract_Async()
◆ mcuxClEls_Rng_DrbgTestAesEcb_Async()
Encrypts data using the AES-ECB engine of the DRBG.
This function is a support function for FIPS CAVP testing. This function performs an AES-ECB encryption on system data to evaluate the encryption engine of the DRBG. Call mcuxClEls_WaitForOperation to complete the operation. Note that this function will alter the ELS internal entropy state which needs to be updated by the TRNG to use the DRBG in normal mode. The update process is majorly impacted by the time the TRNG needs to provide fresh entropy.
- Parameters
-
[in] | pDataKey | Pointer to the data and key |
[out] | pOutput | Pointer to the encrypted output |
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
◆ mcuxClEls_Rng_DrbgTestAesCtr_Async()
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_Rng_DrbgTestAesCtr_Async |
( |
uint8_t const * |
pData, |
|
|
size_t |
dataLength, |
|
|
uint8_t const * |
pIvKey, |
|
|
uint8_t * |
pOutput |
|
) |
| |
Encrypts data using the AES-CTR engine of the DRBG.
This function is a support function for FIPS CAVP testing. This function performs an AES-CTR encryption on system data to evaluate the encryption engine of the DRBG in test mode. Call mcuxClEls_WaitForOperation to complete the operation. Note that this function will alter the ELS internal entropy state which needs to be updated by the TRNG to use the DRBG in normal mode. The update process is majorly impacted by the time the TRNG needs to provide fresh entropy.
- Parameters
-
[in] | pData | Pointer to the data to be encrypted |
[in] | dataLength | Length of the data to be encrypted |
[in] | pIvKey | Pointer to the IV and key |
[out] | pOutput | Pointer to the encrypted output |
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
◆ mcuxClEls_Rng_Dtrng_ConfigLoad_Async()
Loads a configuration of the ELS DTRNG.
This function overwrites the default DTRNG configuration in order to optimize or fine tune the DTRNG entropy gathering process. Call mcuxClEls_WaitForOperation to complete the operation. Note that the TRNG configuration set by this function is non-persistent and any reset of the ELS (e.g. a power-cycle or calling mcuxClEls_Reset_Async) will resets the DTRNG configuration to its default value.
- Parameters
-
[in] | pInput | The pointer to DTRNG initialization data |
- Parameter properties
pInput
- The size is MCUXCLELS_RNG_DTRNG_CONFIG_SIZE bytes.
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
◆ mcuxClEls_Rng_Dtrng_ConfigEvaluate_Async()
◆ mcuxClEls_Prng_GetRandomWord()
Returns one random word from the ELS PRNG.
This function returns one low-quality random CPU word gathered from the PRNG.
- Attention
- PRNG has to be initialized prior to the first time calling this function.
- Parameters
-
[out] | pWord | The pointer to the random word |
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
- Examples
- mcuxClEls_Rng_Prng_Get_Random_example.c.
◆ mcuxClEls_Prng_GetRandom()
Writes random data from the ELS PRNG to the given buffer.
This function fills a buffer with low-quality random values gathered from the PRNG.
- Attention
- PRNG has to be initialized prior to the first time calling this function.
- Parameters
-
[out] | pOutput | Pointer to the beginning of the memory area to fill with random data from PRNG |
[in] | outputLength | Size of pOutput in bytes |
- Returns
- An error code that can be any error code in MCUXCLELS_STATUS_, see individual documentation for more information
- Return values
-
- Examples
- mcuxClEls_Rng_Prng_Get_Random_example.c, and mcuxClEls_Tls_Master_Key_Session_Keys_example.c.