@@ -48,31 +48,10 @@ struct sober128_prng {
4848};
4949#endif
5050
51- typedef struct {
52- union {
53- char dummy [1 ];
54- #ifdef LTC_YARROW
55- struct yarrow_prng yarrow ;
56- #endif
57- #ifdef LTC_RC4
58- struct rc4_prng rc4 ;
59- #endif
60- #ifdef LTC_CHACHA20_PRNG
61- struct chacha20_prng chacha ;
62- #endif
63- #ifdef LTC_FORTUNA
64- struct fortuna_prng fortuna ;
65- #endif
66- #ifdef LTC_SOBER128
67- struct sober128_prng sober128 ;
68- #endif
69- } u ;
70- short ready ; /* ready flag 0-1 */
71- LTC_MUTEX_TYPE (lock ) /* lock */
72- } prng_state ;
51+ typedef struct ltc_prng_state prng_state ;
7352
7453/** PRNG descriptor */
75- extern struct ltc_prng_descriptor {
54+ struct ltc_prng_descriptor {
7655 /** Name of the PRNG */
7756 const char * name ;
7857 /** size in bytes of exported state */
@@ -124,7 +103,31 @@ extern struct ltc_prng_descriptor {
124103 @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled
125104 */
126105 int (* test )(void );
127- } prng_descriptor [];
106+ };
107+
108+ struct ltc_prng_state {
109+ union {
110+ char dummy [1 ];
111+ #ifdef LTC_YARROW
112+ struct yarrow_prng yarrow ;
113+ #endif
114+ #ifdef LTC_RC4
115+ struct rc4_prng rc4 ;
116+ #endif
117+ #ifdef LTC_CHACHA20_PRNG
118+ struct chacha20_prng chacha ;
119+ #endif
120+ #ifdef LTC_FORTUNA
121+ struct fortuna_prng fortuna ;
122+ #endif
123+ #ifdef LTC_SOBER128
124+ struct sober128_prng sober128 ;
125+ #endif
126+ } u ;
127+ short ready ; /* ready flag 0-1 */
128+ struct ltc_prng_descriptor desc ;
129+ LTC_MUTEX_TYPE (lock ) /* lock */
130+ };
128131
129132#ifdef LTC_YARROW
130133int yarrow_start (prng_state * prng );
@@ -135,7 +138,6 @@ int yarrow_done(prng_state *prng);
135138int yarrow_export (unsigned char * out , unsigned long * outlen , prng_state * prng );
136139int yarrow_import (const unsigned char * in , unsigned long inlen , prng_state * prng );
137140int yarrow_test (void );
138- extern const struct ltc_prng_descriptor yarrow_desc ;
139141#endif
140142
141143#ifdef LTC_FORTUNA
@@ -149,7 +151,6 @@ int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
149151int fortuna_import (const unsigned char * in , unsigned long inlen , prng_state * prng );
150152int fortuna_update_seed (const unsigned char * in , unsigned long inlen , prng_state * prng );
151153int fortuna_test (void );
152- extern const struct ltc_prng_descriptor fortuna_desc ;
153154#endif
154155
155156#ifdef LTC_RC4
@@ -161,7 +162,6 @@ int rc4_done(prng_state *prng);
161162int rc4_export (unsigned char * out , unsigned long * outlen , prng_state * prng );
162163int rc4_import (const unsigned char * in , unsigned long inlen , prng_state * prng );
163164int rc4_test (void );
164- extern const struct ltc_prng_descriptor rc4_desc ;
165165#endif
166166
167167#ifdef LTC_CHACHA20_PRNG
@@ -173,7 +173,6 @@ int chacha20_prng_done(prng_state *prng);
173173int chacha20_prng_export (unsigned char * out , unsigned long * outlen , prng_state * prng );
174174int chacha20_prng_import (const unsigned char * in , unsigned long inlen , prng_state * prng );
175175int chacha20_prng_test (void );
176- extern const struct ltc_prng_descriptor chacha20_prng_desc ;
177176#endif
178177
179178#ifdef LTC_SPRNG
@@ -185,7 +184,6 @@ int sprng_done(prng_state *prng);
185184int sprng_export (unsigned char * out , unsigned long * outlen , prng_state * prng );
186185int sprng_import (const unsigned char * in , unsigned long inlen , prng_state * prng );
187186int sprng_test (void );
188- extern const struct ltc_prng_descriptor sprng_desc ;
189187#endif
190188
191189#ifdef LTC_SOBER128
@@ -197,24 +195,16 @@ int sober128_done(prng_state *prng);
197195int sober128_export (unsigned char * out , unsigned long * outlen , prng_state * prng );
198196int sober128_import (const unsigned char * in , unsigned long inlen , prng_state * prng );
199197int sober128_test (void );
200- extern const struct ltc_prng_descriptor sober128_desc ;
201198#endif
202199
203- int find_prng (const char * name );
204- int register_prng (const struct ltc_prng_descriptor * prng );
205- int unregister_prng (const struct ltc_prng_descriptor * prng );
206- int register_all_prngs (void );
207- int prng_is_valid (int idx );
208- LTC_MUTEX_PROTO (ltc_prng_mutex )
209-
210200/* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this
211201 * might not work on all platforms as planned
212202 */
213203unsigned long rng_get_bytes (unsigned char * out ,
214204 unsigned long outlen ,
215205 void (* callback )(void ));
216206
217- int rng_make_prng (int bits , int wprng , prng_state * prng , void (* callback )(void ));
207+ int rng_make_prng (int bits , prng_state * prng , void (* callback )(void ));
218208
219209#ifdef LTC_PRNG_ENABLE_LTC_RNG
220210extern unsigned long (* ltc_rng )(unsigned char * out , unsigned long outlen ,
0 commit comments