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_t * apr_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:
p The pool to allocate from

apr_status_t apr_generate_random_bytes ( unsigned char *  buf,
apr_size_t  length 
)

Generate random bytes.

Parameters:
buf Buffer to fill with random bytes
length Length 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:
g The PRNG state
entropy_ Entropy buffer
bytes Length of entropy_ in bytes

void apr_random_after_fork ( apr_proc_t proc  ) 

Mix the randomness pools after forking.

Parameters:
proc The 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:
g The 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:
g The PRNG state
p The pool to allocate from
pool_hash Pool hash functions
key_hash Key hash functions
prng_hash PRNG 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:
g The RNG state
random Buffer to fill with random bytes
bytes Length 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:
r The 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:
g The RNG state
random Buffer to fill with random bytes
bytes Length 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:
r The 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:
p The pool to allocate from


Generated on Sat Aug 16 19:13:41 2008 for Apache Portable Runtime by  doxygen 1.5.6