X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=rng.c;h=72960c9b30f32bf69b9c1ed0cb344d3637ac381a;hb=a8f154642148eb2117d8a399b641a8282fc536ea;hp=89eed8964ef7d5a322da81c2faede52c93d0bb57;hpb=c7e13d717c38e528ae241bf5facb51bca63f323c;p=uuid diff --git a/rng.c b/rng.c index 89eed89..72960c9 100644 --- a/rng.c +++ b/rng.c @@ -6,41 +6,37 @@ #include -#define LTC_ARGCHK(x) -#define TRY_URANDOM_FIRST 1 - #ifndef WIN32 -#define LTC_DEVRANDOM 1 +#define USE_DEVRANDOM 1 #endif -#ifdef LTC_DEVRANDOM +#ifdef USE_DEVRANDOM +#include /* on *NIX read /dev/random */ static unsigned long rng_nix(unsigned char *buf, unsigned long len) { -#ifdef LTC_NO_FILE - return 0; -#else FILE *f; - unsigned long x; -#ifdef TRY_URANDOM_FIRST + size_t x; + f = fopen("/dev/urandom", "rb"); - if (f == NULL) -#endif + if (f == NULL) { f = fopen("/dev/random", "rb"); + } if (f == NULL) { return 0; } + /* disable buffering */ if (setvbuf(f, NULL, _IONBF, 0) != 0) { fclose(f); return 0; } - x = (unsigned long) fread(buf, 1, (size_t) len, f); + + x = fread(buf, 1, (size_t) len, f); fclose(f); + return x; -#endif } - #endif /* TODO remove this. It's too slow really (I think) */ @@ -112,24 +108,24 @@ static unsigned long rng_win32(unsigned char *buf, unsigned long len) { #endif +unsigned long pd_uuid_rng_get_bytes(unsigned char *out, unsigned long outlen); + unsigned long pd_uuid_rng_get_bytes(unsigned char *out, unsigned long outlen) { unsigned long x; - LTC_ARGCHK(out != NULL); + if (!out) return 0; -#if defined(LTC_DEVRANDOM) +#if defined(USE_DEVRANDOM) x = rng_nix(out, outlen); if (x != 0) { return x; } -#endif -#ifdef WIN32 +#elif defined(WIN32) x = rng_win32(out, outlen); if (x != 0) { return x; } -#endif -#ifdef ANSI_RNG +#elif defined(ANSI_RNG) x = rng_ansic(out, outlen); if (x != 0) { return x;