summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>2008-07-22 16:16:51 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>2008-07-22 16:16:51 +0000
commitd16863efa66ca857d48eeb1b1918457a7556eadb (patch)
tree20e8fba124c282d593c5d23047e6b446adafb1d5
parentf1cb60307236a5fc32d2b055912c64a5ba2f9a6f (diff)
Notes
-rw-r--r--sys/libkern/arc4random.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/libkern/arc4random.c b/sys/libkern/arc4random.c
index 3a3227cd211f..c0d158392d8a 100644
--- a/sys/libkern/arc4random.c
+++ b/sys/libkern/arc4random.c
@@ -69,18 +69,21 @@ arc4_randomstir (void)
arc4_j = (arc4_j + arc4_sbox[n] + key[n]) % 256;
arc4_swap(&arc4_sbox[n], &arc4_sbox[arc4_j]);
}
+ arc4_i = arc4_j = 0;
/* Reset for next reseed cycle. */
arc4_t_reseed = tv_now.tv_sec + ARC4_RESEED_SECONDS;
arc4_numruns = 0;
/*
- * Throw away the first N words of output, as suggested in the
+ * Throw away the first N bytes of output, as suggested in the
* paper "Weaknesses in the Key Scheduling Algorithm of RC4"
- * by Fluher, Mantin, and Shamir. (N = 256 in our case.)
+ * by Fluher, Mantin, and Shamir. N=768 is based on
+ * suggestions in the paper "(Not So) Random Shuffles of RC4"
+ * by Ilya Mironov.
*/
- for (n = 0; n < 256*4; n++)
- arc4_randbyte();
+ for (n = 0; n < 768; n++)
+ (void)arc4_randbyte();
mtx_unlock(&arc4_mtx);
}