• Home
  • Raw
  • Download

Lines Matching refs:prng

53 static void fortuna_update_iv(prng_state *prng)  in fortuna_update_iv()  argument
58 IV = prng->fortuna.IV; in fortuna_update_iv()
66 static int fortuna_reseed(prng_state *prng) in fortuna_reseed() argument
72 ++prng->fortuna.reset_cnt; in fortuna_reseed()
76 if ((err = sha256_process(&md, prng->fortuna.K, 32)) != CRYPT_OK) { in fortuna_reseed()
82 if (x == 0 || ((prng->fortuna.reset_cnt >> (x-1)) & 1) == 0) { in fortuna_reseed()
84 if ((err = sha256_done(&prng->fortuna.pool[x], tmp)) != CRYPT_OK) { in fortuna_reseed()
94 if ((err = sha256_init(&prng->fortuna.pool[x])) != CRYPT_OK) { in fortuna_reseed()
104 if ((err = sha256_done(&md, prng->fortuna.K)) != CRYPT_OK) { in fortuna_reseed()
107 if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { in fortuna_reseed()
110 fortuna_update_iv(prng); in fortuna_reseed()
113 prng->fortuna.pool0_len = 0; in fortuna_reseed()
114 prng->fortuna.wd = 0; in fortuna_reseed()
130 int fortuna_start(prng_state *prng) in fortuna_start() argument
135 LTC_ARGCHK(prng != NULL); in fortuna_start()
139 if ((err = sha256_init(&prng->fortuna.pool[x])) != CRYPT_OK) { in fortuna_start()
141 sha256_done(&prng->fortuna.pool[y], tmp); in fortuna_start()
146 prng->fortuna.pool_idx = prng->fortuna.pool0_len = prng->fortuna.wd = 0; in fortuna_start()
147 prng->fortuna.reset_cnt = 0; in fortuna_start()
150 zeromem(prng->fortuna.K, 32); in fortuna_start()
151 if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { in fortuna_start()
153 sha256_done(&prng->fortuna.pool[x], tmp); in fortuna_start()
157 zeromem(prng->fortuna.IV, 16); in fortuna_start()
159 LTC_MUTEX_INIT(&prng->fortuna.prng_lock) in fortuna_start()
171 int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) in fortuna_add_entropy() argument
177 LTC_ARGCHK(prng != NULL); in fortuna_add_entropy()
179 LTC_MUTEX_LOCK(&prng->fortuna.prng_lock); in fortuna_add_entropy()
183 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_add_entropy()
190 if ((err = sha256_process(&prng->fortuna.pool[prng->fortuna.pool_idx], tmp, 2)) != CRYPT_OK) { in fortuna_add_entropy()
191 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_add_entropy()
194 if ((err = sha256_process(&prng->fortuna.pool[prng->fortuna.pool_idx], in, inlen)) != CRYPT_OK) { in fortuna_add_entropy()
195 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_add_entropy()
198 if (prng->fortuna.pool_idx == 0) { in fortuna_add_entropy()
199 prng->fortuna.pool0_len += inlen; in fortuna_add_entropy()
201 if (++(prng->fortuna.pool_idx) == FORTUNA_POOLS) { in fortuna_add_entropy()
202 prng->fortuna.pool_idx = 0; in fortuna_add_entropy()
205 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_add_entropy()
214 int fortuna_ready(prng_state *prng) in fortuna_ready() argument
216 return fortuna_reseed(prng); in fortuna_ready()
226 unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng) in fortuna_read() argument
233 LTC_ARGCHK(prng != NULL); in fortuna_read()
235 LTC_MUTEX_LOCK(&prng->fortuna.prng_lock); in fortuna_read()
238 if (++prng->fortuna.wd == FORTUNA_WD || prng->fortuna.pool0_len >= 64) { in fortuna_read()
239 if ((err = fortuna_reseed(prng)) != CRYPT_OK) { in fortuna_read()
240 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_read()
251 rijndael_ecb_encrypt(prng->fortuna.IV, out, &prng->fortuna.skey); in fortuna_read()
254 fortuna_update_iv(prng); in fortuna_read()
259 rijndael_ecb_encrypt(prng->fortuna.IV, tmp, &prng->fortuna.skey); in fortuna_read()
261 fortuna_update_iv(prng); in fortuna_read()
265 …rijndael_ecb_encrypt(prng->fortuna.IV, prng->fortuna.K , &prng->fortuna.skey); fortuna_update_iv… in fortuna_read()
266 …rijndael_ecb_encrypt(prng->fortuna.IV, prng->fortuna.K+16, &prng->fortuna.skey); fortuna_update_iv… in fortuna_read()
267 if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { in fortuna_read()
268 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_read()
275 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_read()
284 int fortuna_done(prng_state *prng) in fortuna_done() argument
289 LTC_ARGCHK(prng != NULL); in fortuna_done()
290 LTC_MUTEX_LOCK(&prng->fortuna.prng_lock); in fortuna_done()
294 if ((err = sha256_done(&(prng->fortuna.pool[x]), tmp)) != CRYPT_OK) { in fortuna_done()
295 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_done()
305 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_done()
316 int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng) in fortuna_export() argument
323 LTC_ARGCHK(prng != NULL); in fortuna_export()
325 LTC_MUTEX_LOCK(&prng->fortuna.prng_lock); in fortuna_export()
329 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_export()
336 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_export()
345 XMEMCPY(md, &(prng->fortuna.pool[x]), sizeof(*md)); in fortuna_export()
371 LTC_MUTEX_UNLOCK(&prng->fortuna.prng_lock); in fortuna_export()
382 int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng) in fortuna_import() argument
387 LTC_ARGCHK(prng != NULL); in fortuna_import()
393 if ((err = fortuna_start(prng)) != CRYPT_OK) { in fortuna_import()
397 if ((err = fortuna_add_entropy(in+x*32, 32, prng)) != CRYPT_OK) { in fortuna_import()