Lines Matching refs:prng

33 int sober128_start(prng_state *prng)  in sober128_start()  argument
35 LTC_ARGCHK(prng != NULL); in sober128_start()
36 prng->ready = 0; in sober128_start()
37 XMEMSET(&prng->u.sober128.ent, 0, sizeof(prng->u.sober128.ent)); in sober128_start()
38 prng->u.sober128.idx = 0; in sober128_start()
39 LTC_MUTEX_INIT(&prng->lock) in sober128_start()
50 int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) in sober128_add_entropy() argument
56 LTC_ARGCHK(prng != NULL); in sober128_add_entropy()
60 LTC_MUTEX_LOCK(&prng->lock); in sober128_add_entropy()
61 if (prng->ready) { in sober128_add_entropy()
63 …if ((err = sober128_stream_keystream(&prng->u.sober128.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL… in sober128_add_entropy()
66 … if ((err = sober128_stream_setup(&prng->u.sober128.s, buf, 32)) != CRYPT_OK) goto LBL_UNLOCK; in sober128_add_entropy()
68 … if ((err = sober128_stream_setiv(&prng->u.sober128.s, buf + 32, 8)) != CRYPT_OK) goto LBL_UNLOCK; in sober128_add_entropy()
74 …while (inlen--) prng->u.sober128.ent[prng->u.sober128.idx++ % sizeof(prng->u.sober128.ent)] ^= *in… in sober128_add_entropy()
78 LTC_MUTEX_UNLOCK(&prng->lock); in sober128_add_entropy()
87 int sober128_ready(prng_state *prng) in sober128_ready() argument
91 LTC_ARGCHK(prng != NULL); in sober128_ready()
93 LTC_MUTEX_LOCK(&prng->lock); in sober128_ready()
94 …if (prng->ready) { err = CRYPT_OK; goto… in sober128_ready()
96 …if ((err = sober128_stream_setup(&prng->u.sober128.s, prng->u.sober128.ent, 32)) != CRYPT_OK) … in sober128_ready()
98 …if ((err = sober128_stream_setiv(&prng->u.sober128.s, prng->u.sober128.ent + 32, 8)) != CRYPT_OK) … in sober128_ready()
99 XMEMSET(&prng->u.sober128.ent, 0, sizeof(prng->u.sober128.ent)); in sober128_ready()
100 prng->u.sober128.idx = 0; in sober128_ready()
101 prng->ready = 1; in sober128_ready()
103 LTC_MUTEX_UNLOCK(&prng->lock); in sober128_ready()
114 unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng) in sober128_read() argument
116 if (outlen == 0 || prng == NULL || out == NULL) return 0; in sober128_read()
117 LTC_MUTEX_LOCK(&prng->lock); in sober128_read()
118 if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } in sober128_read()
119 if (sober128_stream_keystream(&prng->u.sober128.s, out, outlen) != CRYPT_OK) outlen = 0; in sober128_read()
121 LTC_MUTEX_UNLOCK(&prng->lock); in sober128_read()
130 int sober128_done(prng_state *prng) in sober128_done() argument
133 LTC_ARGCHK(prng != NULL); in sober128_done()
134 LTC_MUTEX_LOCK(&prng->lock); in sober128_done()
135 prng->ready = 0; in sober128_done()
136 err = sober128_stream_done(&prng->u.sober128.s); in sober128_done()
137 LTC_MUTEX_UNLOCK(&prng->lock); in sober128_done()
138 LTC_MUTEX_DESTROY(&prng->lock); in sober128_done()
158 int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng) in LTC_PRNG_EXPORT()
162 LTC_ARGCHK(prng != NULL); in LTC_PRNG_EXPORT()
166 if ((err = sober128_start(prng)) != CRYPT_OK) return err; in LTC_PRNG_EXPORT()
167 if ((err = sober128_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; in LTC_PRNG_EXPORT()