tor
master
|
Common functions for using (pseudo-)random number generators. More...
Go to the source code of this file.
Functions | |
int | crypto_seed_rng (void) ATTR_WUR |
MOCK_DECL (void, crypto_rand,(char *to, size_t n)) | |
void | crypto_rand_unmocked (char *to, size_t n) |
void | crypto_strongest_rand (uint8_t *out, size_t out_len) |
int | crypto_rand_int (unsigned int max) |
int | crypto_rand_int_range (unsigned int min, unsigned int max) |
uint64_t | crypto_rand_uint64_range (uint64_t min, uint64_t max) |
time_t | crypto_rand_time_range (time_t min, time_t max) |
uint64_t | crypto_rand_uint64 (uint64_t max) |
double | crypto_rand_double (void) |
void | crypto_seed_weak_rng (struct tor_weak_rng_t *rng) |
char * | crypto_random_hostname (int min_rand_len, int max_rand_len, const char *prefix, const char *suffix) |
void * | smartlist_choose (const struct smartlist_t *sl) |
void | smartlist_shuffle (struct smartlist_t *sl) |
int | crypto_force_rand_ssleay (void) |
Common functions for using (pseudo-)random number generators.
int crypto_force_rand_ssleay | ( | void | ) |
Make sure that openssl is using its default PRNG. Return 1 if we had to adjust it; 0 otherwise.
double crypto_rand_double | ( | void | ) |
Return a pseudorandom double d, chosen uniformly from the range 0.0 <= d < 1.0.
int crypto_rand_int | ( | unsigned int | max | ) |
Return a pseudorandom integer, chosen uniformly from the values between 0 and max-1 inclusive. max must be between 1 and INT_MAX+1, inclusive.
int crypto_rand_int_range | ( | unsigned int | min, |
unsigned int | max | ||
) |
Return a pseudorandom integer, chosen uniformly from the values i such that min <= i < max.
min MUST be in range [0, max). max MUST be in range (min, INT_MAX].
time_t crypto_rand_time_range | ( | time_t | min, |
time_t | max | ||
) |
As crypto_rand_int_range, but supports time_t.
uint64_t crypto_rand_uint64 | ( | uint64_t | max | ) |
Return a pseudorandom 64-bit integer, chosen uniformly from the values between 0 and max-1 inclusive.
uint64_t crypto_rand_uint64_range | ( | uint64_t | min, |
uint64_t | max | ||
) |
As crypto_rand_int_range, but supports uint64_t.
void crypto_rand_unmocked | ( | char * | to, |
size_t | n | ||
) |
Write n bytes of strong random data to to. Most callers will want crypto_rand instead.
This function is not allowed to fail; if it would fail to generate strong entropy, it must terminate the process instead.
char* crypto_random_hostname | ( | int | min_rand_len, |
int | max_rand_len, | ||
const char * | prefix, | ||
const char * | suffix | ||
) |
Generate and return a new random hostname starting with prefix, ending with suffix, and containing no fewer than min_rand_len and no more than max_rand_len random base32 characters. Does not check for failure.
Clip max_rand_len to MAX_DNS_LABEL_SIZE.
int crypto_seed_rng | ( | void | ) |
Seed OpenSSL's random number generator with bytes from the operating system. Return 0 on success, -1 on failure.
void crypto_seed_weak_rng | ( | tor_weak_rng_t * | rng | ) |
Set the seed of the weak RNG to a random value.
void crypto_strongest_rand | ( | uint8_t * | out, |
size_t | out_len | ||
) |
Try to get out_len bytes of the strongest entropy we can generate, storing it into out.
void smartlist_shuffle | ( | smartlist_t * | sl | ) |
Scramble the elements of sl into a random order.