Added new define NO_DEV_URANDOM to disable the use of /dev/urandom. Added better named define WC_RNG_BLOCKING to indicate block w/sleep(0) is okay.

This commit is contained in:
David Garske
2018-04-05 09:34:43 -07:00
parent aa660bc9b8
commit bab62cc435

View File

@@ -1725,21 +1725,23 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
/* success, we're done */ /* success, we're done */
return ret; return ret;
} }
#ifdef FORCE_FAILURE_RDSEED #ifdef FORCE_FAILURE_RDSEED
/* don't fallback to /dev/urandom */ /* don't fallback to /dev/urandom */
return ret; return ret;
#else #else
/* fallback to /dev/urandom attempt */ /* reset error and fallback to using /dev/urandom */
ret = 0; ret = 0;
#endif #endif
} }
#endif /* HAVE_INTEL_RDSEED */ #endif /* HAVE_INTEL_RDSEED */
os->fd = open("/dev/urandom",O_RDONLY); #ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
if (os->fd == -1) { os->fd = open("/dev/urandom", O_RDONLY);
if (os->fd == -1)
#endif
{
/* may still have /dev/random */ /* may still have /dev/random */
os->fd = open("/dev/random",O_RDONLY); os->fd = open("/dev/random", O_RDONLY);
if (os->fd == -1) if (os->fd == -1)
return OPEN_RAN_E; return OPEN_RAN_E;
} }
@@ -1755,7 +1757,7 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
output += len; output += len;
if (sz) { if (sz) {
#ifdef BLOCKING #if defined(BLOCKING) || defined(WC_RNG_BLOCKING)
sleep(0); /* context switch */ sleep(0); /* context switch */
#else #else
ret = RAN_BLOCK_E; ret = RAN_BLOCK_E;