Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ctr_drbg.h File Reference
CTR_DRBG is based on AES-256, as defined in NIST SP 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators. More...
Go to the source code of this file.
Data Structures | |
struct | mbedtls_ctr_drbg_context |
The CTR_DRBG context structure. More... | |
Functions | |
void | mbedtls_ctr_drbg_init (mbedtls_ctr_drbg_context *ctx) |
This function initializes the CTR_DRBG context, and prepares it for mbedtls_ctr_drbg_seed() or mbedtls_ctr_drbg_free(). | |
int | mbedtls_ctr_drbg_seed (mbedtls_ctr_drbg_context *ctx, int(*f_entropy)(void *, unsigned char *, size_t), void *p_entropy, const unsigned char *custom, size_t len) |
This function seeds and sets up the CTR_DRBG entropy source for future reseeds. | |
void | mbedtls_ctr_drbg_free (mbedtls_ctr_drbg_context *ctx) |
This function clears CTR_CRBG context data. | |
void | mbedtls_ctr_drbg_set_prediction_resistance (mbedtls_ctr_drbg_context *ctx, int resistance) |
This function turns prediction resistance on or off. | |
void | mbedtls_ctr_drbg_set_entropy_len (mbedtls_ctr_drbg_context *ctx, size_t len) |
This function sets the amount of entropy grabbed on each seed or reseed. | |
void | mbedtls_ctr_drbg_set_reseed_interval (mbedtls_ctr_drbg_context *ctx, int interval) |
This function sets the reseed interval. | |
int | mbedtls_ctr_drbg_reseed (mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t len) |
This function reseeds the CTR_DRBG context, that is extracts data from the entropy source. | |
void | mbedtls_ctr_drbg_update (mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t add_len) |
This function updates the state of the CTR_DRBG context. | |
int | mbedtls_ctr_drbg_random_with_add (void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len) |
This function updates a CTR_DRBG instance with additional data and uses it to generate random data. | |
int | mbedtls_ctr_drbg_random (void *p_rng, unsigned char *output, size_t output_len) |
This function uses CTR_DRBG to generate random data. | |
int | mbedtls_ctr_drbg_write_seed_file (mbedtls_ctr_drbg_context *ctx, const char *path) |
This function writes a seed file. | |
int | mbedtls_ctr_drbg_update_seed_file (mbedtls_ctr_drbg_context *ctx, const char *path) |
This function reads and updates a seed file. | |
int | mbedtls_ctr_drbg_self_test (int verbose) |
The CTR_DRBG checkup routine. |
Detailed Description
CTR_DRBG is based on AES-256, as defined in NIST SP 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators.
Definition in file ctr_drbg.h.
Function Documentation
void mbedtls_ctr_drbg_free | ( | mbedtls_ctr_drbg_context * | ctx ) |
This function clears CTR_CRBG context data.
- Parameters:
-
ctx The CTR_DRBG context to clear.
Definition at line 119 of file ctr_drbg.c.
void mbedtls_ctr_drbg_init | ( | mbedtls_ctr_drbg_context * | ctx ) |
This function initializes the CTR_DRBG context, and prepares it for mbedtls_ctr_drbg_seed() or mbedtls_ctr_drbg_free().
- Parameters:
-
ctx The CTR_DRBG context to initialize.
Definition at line 60 of file ctr_drbg.c.
int mbedtls_ctr_drbg_random | ( | void * | p_rng, |
unsigned char * | output, | ||
size_t | output_len | ||
) |
This function uses CTR_DRBG to generate random data.
- Note:
- The function automatically reseeds if the reseed counter is exceeded.
- Parameters:
-
p_rng The CTR_DRBG context. This must be a pointer to a mbedtls_ctr_drbg_context structure. output The buffer to fill. output_len The length of the buffer.
- Returns:
0
on success, or MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG on failure.
Definition at line 457 of file ctr_drbg.c.
int mbedtls_ctr_drbg_random_with_add | ( | void * | p_rng, |
unsigned char * | output, | ||
size_t | output_len, | ||
const unsigned char * | additional, | ||
size_t | add_len | ||
) |
This function updates a CTR_DRBG instance with additional data and uses it to generate random data.
- Note:
- The function automatically reseeds if the reseed counter is exceeded.
- Parameters:
-
p_rng The CTR_DRBG context. This must be a pointer to a mbedtls_ctr_drbg_context structure. output The buffer to fill. output_len The length of the buffer. additional Additional data to update. Can be NULL. add_len The length of the additional data.
- Returns:
0
on success, or MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG on failure.
Definition at line 378 of file ctr_drbg.c.
int mbedtls_ctr_drbg_reseed | ( | mbedtls_ctr_drbg_context * | ctx, |
const unsigned char * | additional, | ||
size_t | len | ||
) |
This function reseeds the CTR_DRBG context, that is extracts data from the entropy source.
- Parameters:
-
ctx The CTR_DRBG context. additional Additional data to add to the state. Can be NULL. len The length of the additional data.
- Returns:
0
on success, or MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure.
Definition at line 325 of file ctr_drbg.c.
int mbedtls_ctr_drbg_seed | ( | mbedtls_ctr_drbg_context * | ctx, |
int(*)(void *, unsigned char *, size_t) | f_entropy, | ||
void * | p_entropy, | ||
const unsigned char * | custom, | ||
size_t | len | ||
) |
This function seeds and sets up the CTR_DRBG entropy source for future reseeds.
- Note:
- Personalization data can be provided in addition to the more generic entropy source, to make this instantiation as unique as possible.
- Parameters:
-
ctx The CTR_DRBG context to seed. f_entropy The entropy callback, taking as arguments the p_entropy
context, the buffer to fill, and the length of the buffer.p_entropy The entropy context. custom Personalization data, that is device-specific identifiers. Can be NULL. len The length of the personalization data.
- Returns:
0
on success, or MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure.
Definition at line 109 of file ctr_drbg.c.
int mbedtls_ctr_drbg_self_test | ( | int | verbose ) |
The CTR_DRBG checkup routine.
- Returns:
0
on success, or1
on failure.
Definition at line 600 of file ctr_drbg.c.
void mbedtls_ctr_drbg_set_entropy_len | ( | mbedtls_ctr_drbg_context * | ctx, |
size_t | len | ||
) |
This function sets the amount of entropy grabbed on each seed or reseed.
The default value is MBEDTLS_CTR_DRBG_ENTROPY_LEN.
- Parameters:
-
ctx The CTR_DRBG context. len The amount of entropy to grab.
Definition at line 136 of file ctr_drbg.c.
void mbedtls_ctr_drbg_set_prediction_resistance | ( | mbedtls_ctr_drbg_context * | ctx, |
int | resistance | ||
) |
This function turns prediction resistance on or off.
The default value is off.
- Note:
- If enabled, entropy is gathered at the beginning of every call to mbedtls_ctr_drbg_random_with_add(). Only use this if your entropy source has sufficient throughput.
- Parameters:
-
ctx The CTR_DRBG context. resistance MBEDTLS_CTR_DRBG_PR_ON or MBEDTLS_CTR_DRBG_PR_OFF.
Definition at line 131 of file ctr_drbg.c.
void mbedtls_ctr_drbg_set_reseed_interval | ( | mbedtls_ctr_drbg_context * | ctx, |
int | interval | ||
) |
This function sets the reseed interval.
The default value is MBEDTLS_CTR_DRBG_RESEED_INTERVAL.
- Parameters:
-
ctx The CTR_DRBG context. interval The reseed interval.
Definition at line 141 of file ctr_drbg.c.
void mbedtls_ctr_drbg_update | ( | mbedtls_ctr_drbg_context * | ctx, |
const unsigned char * | additional, | ||
size_t | add_len | ||
) |
This function updates the state of the CTR_DRBG context.
- Parameters:
-
ctx The CTR_DRBG context. additional The data to update the state with. add_len Length of additional
data.
- Note:
- If
add_len
is greater than MBEDTLS_CTR_DRBG_MAX_SEED_INPUT, only the first MBEDTLS_CTR_DRBG_MAX_SEED_INPUT Bytes are used. The remaining Bytes are silently discarded.
Definition at line 308 of file ctr_drbg.c.
int mbedtls_ctr_drbg_update_seed_file | ( | mbedtls_ctr_drbg_context * | ctx, |
const char * | path | ||
) |
This function reads and updates a seed file.
The seed is added to this instance.
- Parameters:
-
ctx The CTR_DRBG context. path The name of the file.
- Returns:
0
on success, MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error, MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG on failure.
Definition at line 502 of file ctr_drbg.c.
int mbedtls_ctr_drbg_write_seed_file | ( | mbedtls_ctr_drbg_context * | ctx, |
const char * | path | ||
) |
This function writes a seed file.
- Parameters:
-
ctx The CTR_DRBG context. path The name of the file.
- Returns:
0
on success, MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error, or MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure.
Definition at line 478 of file ctr_drbg.c.
Generated on Tue Jul 12 2022 12:22:30 by
