Apache Portable Runtime
Data Structures | Typedefs | Functions
Random Functions
Apache Portability Runtime library

Data Structures

struct  apr_crypto_hash_t

Typedefs

typedef struct apr_crypto_hash_t apr_crypto_hash_t
typedef void apr_crypto_hash_init_t (apr_crypto_hash_t *hash)
typedef void apr_crypto_hash_add_t (apr_crypto_hash_t *hash, const void *data, apr_size_t bytes)
typedef void apr_crypto_hash_finish_t (apr_crypto_hash_t *hash, unsigned char *result)
typedef struct apr_random_t apr_random_t

Functions

apr_status_t apr_generate_random_bytes (unsigned char *buf, apr_size_t length)
apr_crypto_hash_tapr_crypto_sha256_new (apr_pool_t *p)
void apr_random_init (apr_random_t *g, apr_pool_t *p, apr_crypto_hash_t *pool_hash, apr_crypto_hash_t *key_hash, apr_crypto_hash_t *prng_hash)
apr_random_tapr_random_standard_new (apr_pool_t *p)
void apr_random_add_entropy (apr_random_t *g, const void *entropy_, apr_size_t bytes)
apr_status_t apr_random_insecure_bytes (apr_random_t *g, void *random, apr_size_t bytes)
apr_status_t apr_random_secure_bytes (apr_random_t *g, void *random, apr_size_t bytes)
void apr_random_barrier (apr_random_t *g)
apr_status_t apr_random_secure_ready (apr_random_t *r)
apr_status_t apr_random_insecure_ready (apr_random_t *r)
void apr_random_after_fork (apr_proc_t *proc)

Typedef Documentation

typedef struct apr_random_t apr_random_t

Opaque PRNG structure.


Function Documentation

apr_crypto_hash_t* apr_crypto_sha256_new ( apr_pool_t p)

Allocate and initialize the SHA-256 context

Parameters:
pThe pool to allocate from
apr_status_t apr_generate_random_bytes ( unsigned char *  buf,
apr_size_t  length 
)

Generate random bytes.

Parameters:
bufBuffer to fill with random bytes
lengthLength of buffer in bytes
void apr_random_add_entropy ( apr_random_t g,
const void *  entropy_,
apr_size_t  bytes 
)

Mix the randomness pools.

Parameters:
gThe PRNG state
entropy_Entropy buffer
bytesLength of entropy_ in bytes
void apr_random_after_fork ( apr_proc_t proc)

Mix the randomness pools after forking.

Parameters:
procThe resulting process handle from apr_proc_fork()
Remarks:
Call this in the child after forking to mix the randomness pools. Note that its generally a bad idea to fork a process with a real PRNG in it - better to have the PRNG externally and get the randomness from there. However, if you really must do it, then you should supply all your entropy to all the PRNGs - don't worry, they won't produce the same output.
Note that apr_proc_fork() calls this for you, so only weird applications need ever call it themselves.
void apr_random_barrier ( apr_random_t g)

Ensures that E bits of conditional entropy are mixed into the PRNG before any further randomness is extracted.

Parameters:
gThe RNG state
void apr_random_init ( apr_random_t g,
apr_pool_t p,
apr_crypto_hash_t pool_hash,
apr_crypto_hash_t key_hash,
apr_crypto_hash_t prng_hash 
)

Initialize a PRNG state

Parameters:
gThe PRNG state
pThe pool to allocate from
pool_hashPool hash functions
key_hashKey hash functions
prng_hashPRNG hash functions
apr_status_t apr_random_insecure_bytes ( apr_random_t g,
void *  random,
apr_size_t  bytes 
)

Generate cryptographically insecure random bytes.

Parameters:
gThe RNG state
randomBuffer to fill with random bytes
bytesLength of buffer in bytes
apr_status_t apr_random_insecure_ready ( apr_random_t r)

Return APR_SUCCESS if the PRNG has been seeded with enough data, APR_ENOTENOUGHENTROPY otherwise.

Parameters:
rThe PRNG state
apr_status_t apr_random_secure_bytes ( apr_random_t g,
void *  random,
apr_size_t  bytes 
)

Generate cryptographically secure random bytes.

Parameters:
gThe RNG state
randomBuffer to fill with random bytes
bytesLength of buffer in bytes
apr_status_t apr_random_secure_ready ( apr_random_t r)

Return APR_SUCCESS if the cryptographic PRNG has been seeded with enough data, APR_ENOTENOUGHENTROPY otherwise.

Parameters:
rThe RNG state
apr_random_t* apr_random_standard_new ( apr_pool_t p)

Allocate and initialize (apr_crypto_sha256_new) a new PRNG state.

Parameters:
pThe pool to allocate from
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines