Home | History | Annotate | Download | only in prngs

Lines Matching refs:prng

15   RC4 PRNG, Tom St Denis
34 Start the PRNG
35 @param prng [out] The PRNG state to initialize
38 int rc4_start(prng_state *prng)
40 LTC_ARGCHK(prng != NULL);
43 prng->rc4.x = 0;
49 Add entropy to the PRNG state
52 @param prng PRNG state to update
55 int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng)
58 LTC_ARGCHK(prng != NULL);
61 if (prng->rc4.x + inlen > 256) {
62 if (prng->rc4.x == 256) {
67 inlen = 256 - prng->rc4.x;
72 prng->rc4.buf[prng->rc4.x++] = *in++;
80 Make the PRNG ready to read from
81 @param prng The PRNG to make active
84 int rc4_ready(prng_state *prng)
89 LTC_ARGCHK(prng != NULL);
92 s = prng->rc4.buf;
94 keylen = prng->rc4.x;
102 y = (y + prng->rc4.buf[x] + key[j++]) & 255;
108 prng->rc4.x = 0;
109 prng->rc4.y = 0;
119 Read from the PRNG
122 @param prng The active PRNG to read from
125 unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng)
131 LTC_ARGCHK(prng != NULL);
138 x = prng->rc4.x;
139 y = prng->rc4.y;
140 s = prng->rc4.buf;
148 prng->rc4.x = x;
149 prng->rc4.y = y;
154 Terminate the PRNG
155 @param prng The PRNG to terminate
158 int rc4_done(prng_state *prng)
160 LTC_ARGCHK(prng != NULL);
165 Export the PRNG state
168 @param prng The PRNG to export
171 int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng)
175 LTC_ARGCHK(prng != NULL);
182 if (rc4_read(out, 32, prng) != 32) {
191 Import a PRNG state
192 @param in The PRNG state
194 @param prng The PRNG to import
197 int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng)
201 LTC_ARGCHK(prng != NULL);
207 if ((err = rc4_start(prng)) != CRYPT_OK) {
210 return rc4_add_entropy(in, 32, prng);
214 PRNG self-test
231 prng_state prng;
236 if ((err = rc4_start(&prng)) != CRYPT_OK) {
239 if ((err = rc4_add_entropy(tests[x].key, 8, &prng)) != CRYPT_OK) {
242 if ((err = rc4_ready(&prng)) != CRYPT_OK) {
246 if (rc4_read(dst, 8, &prng) != 8) {
249 rc4_done(&prng);