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