comparison src/headers/tomcrypt_prng.h @ 381:999a5eb4ed10 libtomcrypt-dropbear

propagate from branch 'au.asn.ucc.matt.ltc.orig' (head 52840647ac7f5c707c3bd158d119a15734a7ef28) to branch 'au.asn.ucc.matt.ltc.dropbear' (head 20dccfc09627970a312d77fb41dc2970b62689c3)
author Matt Johnston <matt@ucc.asn.au>
date Thu, 11 Jan 2007 02:39:21 +0000
parents d5faf4814ddb
children
comparison
equal deleted inserted replaced
281:997e6f7dc01e 381:999a5eb4ed10
2 #ifdef YARROW 2 #ifdef YARROW
3 struct yarrow_prng { 3 struct yarrow_prng {
4 int cipher, hash; 4 int cipher, hash;
5 unsigned char pool[MAXBLOCKSIZE]; 5 unsigned char pool[MAXBLOCKSIZE];
6 symmetric_CTR ctr; 6 symmetric_CTR ctr;
7 LTC_MUTEX_TYPE(prng_lock)
7 }; 8 };
8 #endif 9 #endif
9 10
10 #ifdef RC4 11 #ifdef RC4
11 struct rc4_prng { 12 struct rc4_prng {
26 unsigned long pool_idx, /* current pool we will add to */ 27 unsigned long pool_idx, /* current pool we will add to */
27 pool0_len, /* length of 0'th pool */ 28 pool0_len, /* length of 0'th pool */
28 wd; 29 wd;
29 30
30 ulong64 reset_cnt; /* number of times we have reset */ 31 ulong64 reset_cnt; /* number of times we have reset */
32 LTC_MUTEX_TYPE(prng_lock)
31 }; 33 };
32 #endif 34 #endif
33 35
34 #ifdef SOBER128 36 #ifdef SOBER128
35 struct sober128_prng { 37 struct sober128_prng {
44 46
45 }; 47 };
46 #endif 48 #endif
47 49
48 typedef union Prng_state { 50 typedef union Prng_state {
51 char dummy[1];
49 #ifdef YARROW 52 #ifdef YARROW
50 struct yarrow_prng yarrow; 53 struct yarrow_prng yarrow;
51 #endif 54 #endif
52 #ifdef RC4 55 #ifdef RC4
53 struct rc4_prng rc4; 56 struct rc4_prng rc4;
58 #ifdef SOBER128 61 #ifdef SOBER128
59 struct sober128_prng sober128; 62 struct sober128_prng sober128;
60 #endif 63 #endif
61 } prng_state; 64 } prng_state;
62 65
66 /** PRNG descriptor */
63 extern struct ltc_prng_descriptor { 67 extern struct ltc_prng_descriptor {
64 /** Name of the PRNG */ 68 /** Name of the PRNG */
65 char *name; 69 char *name;
66 /** size in bytes of exported state */ 70 /** size in bytes of exported state */
67 int export_size; 71 int export_size;
176 180
177 int find_prng(const char *name); 181 int find_prng(const char *name);
178 int register_prng(const struct ltc_prng_descriptor *prng); 182 int register_prng(const struct ltc_prng_descriptor *prng);
179 int unregister_prng(const struct ltc_prng_descriptor *prng); 183 int unregister_prng(const struct ltc_prng_descriptor *prng);
180 int prng_is_valid(int idx); 184 int prng_is_valid(int idx);
181 LTC_MUTEX_PROTO(ltc_prng_mutex); 185 LTC_MUTEX_PROTO(ltc_prng_mutex)
182 186
183 /* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this 187 /* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this
184 * might not work on all platforms as planned 188 * might not work on all platforms as planned
185 */ 189 */
186 unsigned long rng_get_bytes(unsigned char *out, 190 unsigned long rng_get_bytes(unsigned char *out,
189 193
190 int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); 194 int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void));
191 195
192 196
193 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_prng.h,v $ */ 197 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_prng.h,v $ */
194 /* $Revision: 1.3 $ */ 198 /* $Revision: 1.8 $ */
195 /* $Date: 2005/06/19 18:00:28 $ */ 199 /* $Date: 2006/11/05 01:36:43 $ */