From 6527e433b6856995a356e0fc0dfa5ef7816bb60f Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 13 Feb 2015 17:59:28 +0100 Subject: Switch rng seed to /dev/urandom --- random.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'random.c') diff --git a/random.c b/random.c index f0a06c2..1a0c964 100644 --- a/random.c +++ b/random.c @@ -4,6 +4,12 @@ * generators, scrambled”, Sebastiano Vigna */ +#include +#include +#include +#include +#include + #include "random.h" uint64_t rand_u64 (randctx * const st) { @@ -33,21 +39,15 @@ int rand_bool (randctx * const st) { return rand_u64 (st) & 1; } -/* Generate random uint64_t with Intel’s rdrand instruction - */ -static uint64_t rand64 () { - unsigned long long rand; - while (!__builtin_ia32_rdrand64_step (&rand)); - return rand; -} - /* Seed rng with rdrand */ void rand_seed (randctx * const st) { - /* seed with high-quality randomness */ - for (unsigned char i = 0; i < XORSHIFT_S; i++) { - st->s[i] = rand64 (); - } + int fd = open ("/dev/urandom", O_RDONLY); + assert (fd != -1); + int ret = read (fd, &st->s, sizeof (st->s)); + assert (ret != -1); + close (fd); + st->p = 0; } #if 0 -- cgit v1.2.3