1f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* ---- PRNG Stuff ---- */ 2f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef YARROW 3f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectstruct yarrow_prng { 4f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int cipher, hash; 5f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char pool[MAXBLOCKSIZE]; 6f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project symmetric_CTR ctr; 7f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project LTC_MUTEX_TYPE(prng_lock) 8f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}; 9f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 10f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 11f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef RC4 12f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectstruct rc4_prng { 13f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int x, y; 14f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char buf[256]; 15f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}; 16f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 17f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 18f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef FORTUNA 19f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectstruct fortuna_prng { 20f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project hash_state pool[FORTUNA_POOLS]; /* the pools */ 21f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 22f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project symmetric_key skey; 23f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 24f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned char K[32], /* the current key */ 25f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project IV[16]; /* IV for CTR mode */ 26f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 27f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long pool_idx, /* current pool we will add to */ 28f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project pool0_len, /* length of 0'th pool */ 29f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project wd; 30f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 31f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project ulong64 reset_cnt; /* number of times we have reset */ 32f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project LTC_MUTEX_TYPE(prng_lock) 33f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}; 34f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 35f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 36f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef SOBER128 37f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectstruct sober128_prng { 38f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project ulong32 R[17], /* Working storage for the shift register */ 39f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project initR[17], /* saved register contents */ 40f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project konst, /* key dependent constant */ 41f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project sbuf; /* partial word encryption buffer */ 42f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 43f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int nbuf, /* number of part-word stream bits buffered */ 44f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project flag, /* first add_entropy call or not? */ 45f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project set; /* did we call add_entropy to set key? */ 46f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 47f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}; 48f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 49f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 50f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projecttypedef union Prng_state { 51f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char dummy[1]; 52f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef YARROW 53f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct yarrow_prng yarrow; 54f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 55f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef RC4 56f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct rc4_prng rc4; 57f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 58f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef FORTUNA 59f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct fortuna_prng fortuna; 60f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 61f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef SOBER128 62f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project struct sober128_prng sober128; 63f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 64f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} prng_state; 65f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 66f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/** PRNG descriptor */ 67f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern struct ltc_prng_descriptor { 68f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Name of the PRNG */ 69f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project char *name; 70f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** size in bytes of exported state */ 71f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int export_size; 72f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Start a PRNG state 73f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng [out] The state to initialize 74f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful 75f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 76f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*start)(prng_state *prng); 77f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Add entropy to the PRNG 78f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param in The entropy 79f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param inlen Length of the entropy (octets)\ 80f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng The PRNG state 81f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful 82f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 83f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*add_entropy)(const unsigned char *in, unsigned long inlen, prng_state *prng); 84f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Ready a PRNG state to read from 85f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng The PRNG state to ready 86f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful 87f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 88f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*ready)(prng_state *prng); 89f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Read from the PRNG 90f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param out [out] Where to store the data 91f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param outlen Length of data desired (octets) 92f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng The PRNG state to read from 93f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return Number of octets read 94f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 95f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long (*read)(unsigned char *out, unsigned long outlen, prng_state *prng); 96f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Terminate a PRNG state 97f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng The PRNG state to terminate 98f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful 99f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 100f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*done)(prng_state *prng); 101f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Export a PRNG state 102f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param out [out] The destination for the state 103f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param outlen [in/out] The max size and resulting size of the PRNG state 104f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng The PRNG to export 105f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful 106f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 107f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*pexport)(unsigned char *out, unsigned long *outlen, prng_state *prng); 108f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Import a PRNG state 109f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param in The data to import 110f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param inlen The length of the data to import (octets) 111f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @param prng The PRNG to initialize/import 112f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful 113f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 114f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*pimport)(const unsigned char *in, unsigned long inlen, prng_state *prng); 115f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project /** Self-test the PRNG 116f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled 117f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 118f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project int (*test)(void); 119f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project} prng_descriptor[]; 120f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 121f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef YARROW 122f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_start(prng_state *prng); 123f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); 124f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_ready(prng_state *prng); 125f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectunsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng); 126f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_done(prng_state *prng); 127f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng); 128f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng); 129f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint yarrow_test(void); 130f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern const struct ltc_prng_descriptor yarrow_desc; 131f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 132f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 133f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef FORTUNA 134f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_start(prng_state *prng); 135f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); 136f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_ready(prng_state *prng); 137f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectunsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng); 138f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_done(prng_state *prng); 139f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng); 140f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng); 141f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint fortuna_test(void); 142f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern const struct ltc_prng_descriptor fortuna_desc; 143f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 144f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 145f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef RC4 146f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_start(prng_state *prng); 147f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); 148f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_ready(prng_state *prng); 149f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectunsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng); 150f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_done(prng_state *prng); 151f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng); 152f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng); 153f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rc4_test(void); 154f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern const struct ltc_prng_descriptor rc4_desc; 155f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 156f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 157f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef SPRNG 158f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_start(prng_state *prng); 159f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); 160f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_ready(prng_state *prng); 161f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectunsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng); 162f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_done(prng_state *prng); 163f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng); 164f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng); 165f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sprng_test(void); 166f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern const struct ltc_prng_descriptor sprng_desc; 167f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 168f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 169f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef SOBER128 170f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_start(prng_state *prng); 171f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); 172f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_ready(prng_state *prng); 173f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectunsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng); 174f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_done(prng_state *prng); 175f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng); 176f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng); 177f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint sober128_test(void); 178f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectextern const struct ltc_prng_descriptor sober128_desc; 179f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif 180f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 181f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint find_prng(const char *name); 182f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint register_prng(const struct ltc_prng_descriptor *prng); 183f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint unregister_prng(const struct ltc_prng_descriptor *prng); 184f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint prng_is_valid(int idx); 185f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source ProjectLTC_MUTEX_PROTO(ltc_prng_mutex) 186f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 187f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this 188f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * might not work on all platforms as planned 189f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */ 190f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectunsigned long rng_get_bytes(unsigned char *out, 191f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project unsigned long outlen, 192f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project void (*callback)(void)); 193f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 194f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); 195f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 196f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project 197f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_prng.h,v $ */ 198f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Revision: 1.8 $ */ 199f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Date: 2006/11/05 01:36:43 $ */ 200