Skip to content

Commit 36e5294

Browse files
committed
put PRNG descriptor into state
1 parent 427ce33 commit 36e5294

16 files changed

+49
-243
lines changed

helper.pl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ sub check_descriptors {
133133
my $fails = 0;
134134
$fails = $fails + check_descriptor("ciphers", "cipher");
135135
$fails = $fails + check_descriptor("hashes", "hash");
136-
$fails = $fails + check_descriptor("prngs", "prng");
137136
return $fails;
138137
}
139138

src/headers/tomcrypt_prng.h

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -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
130133
int yarrow_start(prng_state *prng);
@@ -135,7 +138,6 @@ int yarrow_done(prng_state *prng);
135138
int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
136139
int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
137140
int 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);
149151
int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
150152
int fortuna_update_seed(const unsigned char *in, unsigned long inlen, prng_state *prng);
151153
int 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);
161162
int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
162163
int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
163164
int 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);
173173
int chacha20_prng_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
174174
int chacha20_prng_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
175175
int 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);
185184
int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
186185
int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
187186
int 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);
197195
int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
198196
int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
199197
int 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
*/
213203
unsigned 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
220210
extern unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen,

src/misc/crypt/crypt_find_prng.c

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/misc/crypt/crypt_prng_descriptor.c

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/misc/crypt/crypt_prng_is_valid.c

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/misc/crypt/crypt_prng_rng_descriptor.c

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/misc/crypt/crypt_register_all_prngs.c

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/misc/crypt/crypt_register_prng.c

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/misc/crypt/crypt_unregister_prng.c

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/prngs/chacha20.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
#ifdef LTC_CHACHA20_PRNG
1111

12-
const struct ltc_prng_descriptor chacha20_prng_desc =
12+
static const struct ltc_prng_descriptor chacha20_prng_desc =
1313
{
1414
"chacha20",
1515
40,
@@ -34,6 +34,7 @@ int chacha20_prng_start(prng_state *prng)
3434
prng->ready = 0;
3535
XMEMSET(&prng->u.chacha.ent, 0, sizeof(prng->u.chacha.ent));
3636
prng->u.chacha.idx = 0;
37+
prng->desc = chacha20_prng_desc;
3738
LTC_MUTEX_INIT(&prng->lock)
3839
return CRYPT_OK;
3940
}

src/prngs/fortuna.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ we reseed automatically when len(pool0) >= 64 or every LTC_FORTUNA_WD calls to t
5151
#define AES_TEST aes_test
5252
#endif
5353

54-
const struct ltc_prng_descriptor fortuna_desc = {
54+
static const struct ltc_prng_descriptor fortuna_desc = {
5555
"fortuna",
5656
64,
5757
&fortuna_start,
@@ -256,6 +256,8 @@ int fortuna_start(prng_state *prng)
256256
}
257257
zeromem(prng->u.fortuna.IV, 16);
258258

259+
prng->desc = fortuna_desc;
260+
259261
LTC_MUTEX_INIT(&prng->lock)
260262

261263
return CRYPT_OK;

src/prngs/rc4.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
#ifdef LTC_RC4
1111

12-
const struct ltc_prng_descriptor rc4_desc =
12+
static const struct ltc_prng_descriptor rc4_desc =
1313
{
1414
"rc4",
1515
32,
@@ -36,6 +36,7 @@ int rc4_start(prng_state *prng)
3636
prng->u.rc4.s.x = 0;
3737
/* clear entropy (key) buffer */
3838
XMEMSET(&prng->u.rc4.s.buf, 0, sizeof(prng->u.rc4.s.buf));
39+
prng->desc = rc4_desc;
3940
LTC_MUTEX_INIT(&prng->lock)
4041
return CRYPT_OK;
4142
}

0 commit comments

Comments
 (0)