00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef APR_RANDOM_H
00018 #define APR_RANDOM_H
00019
00020 #include <apr_pools.h>
00021
00022 typedef struct apr_crypto_hash_t apr_crypto_hash_t;
00023
00024 typedef void apr_crypto_hash_init_t(apr_crypto_hash_t *hash);
00025 typedef void apr_crypto_hash_add_t(apr_crypto_hash_t *hash,const void *data,
00026 apr_size_t bytes);
00027 typedef void apr_crypto_hash_finish_t(apr_crypto_hash_t *hash,
00028 unsigned char *result);
00029
00030
00031 struct apr_crypto_hash_t {
00032 apr_crypto_hash_init_t *init;
00033 apr_crypto_hash_add_t *add;
00034 apr_crypto_hash_finish_t *finish;
00035 apr_size_t size;
00036 void *data;
00037 };
00038
00039 APR_DECLARE(apr_crypto_hash_t *) apr_crypto_sha256_new(apr_pool_t *p);
00040
00041 typedef struct apr_random_t apr_random_t;
00042
00043 APR_DECLARE(void) apr_random_init(apr_random_t *g,apr_pool_t *p,
00044 apr_crypto_hash_t *pool_hash,
00045 apr_crypto_hash_t *key_hash,
00046 apr_crypto_hash_t *prng_hash);
00047 APR_DECLARE(apr_random_t *) apr_random_standard_new(apr_pool_t *p);
00048 APR_DECLARE(void) apr_random_add_entropy(apr_random_t *g,
00049 const void *entropy_,
00050 apr_size_t bytes);
00051 APR_DECLARE(apr_status_t) apr_random_insecure_bytes(apr_random_t *g,
00052 void *random,
00053 apr_size_t bytes);
00054 APR_DECLARE(apr_status_t) apr_random_secure_bytes(apr_random_t *g,
00055 void *random,
00056 apr_size_t bytes);
00057 APR_DECLARE(void) apr_random_barrier(apr_random_t *g);
00058 APR_DECLARE(apr_status_t) apr_random_secure_ready(apr_random_t *r);
00059 APR_DECLARE(apr_status_t) apr_random_insecure_ready(apr_random_t *r);
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 struct apr_proc_t;
00072 APR_DECLARE(void) apr_random_after_fork(struct apr_proc_t *proc);
00073
00074 #endif