From c5f0bedd07467c089b0eca567828508abfcc9b6d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 25 Mar 2016 13:33:41 +0100 Subject: zrand: add DEFAULT_RANDOM and FASTEST_RANDOM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- man/zrand.3 | 23 +++++++++++++++++++++++ src/zrand.c | 2 ++ test.c | 14 +++++++------- zahl.h | 4 +++- 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/man/zrand.3 b/man/zrand.3 index 97100bc..6092c5e 100644 --- a/man/zrand.3 +++ b/man/zrand.3 @@ -18,6 +18,29 @@ selects the device uses to generate random bits. This value may be either of: .TP +.B DEFAULT_RANDOM +This is a version-dependent alias for the +default random number generator. That is, +using this option will cause +.B zrand +to select the default random number generator. +Which random number generator is actually +selected may change between versions of +.B zrand. + +The selection will be a balance between randomness +and performance. +.TP +.B FASTEST_RANDOM +This is a version-dependent alias for the +fastest random number generator. That is, +using this option will cause +.B zrand +to select the fastest random number generator. +Which random number generator is actually +selected may change between versions of +.B zrand. +.TP .B FAST_RANDOM The fast, non-blocking random number generator. This is /dev/urandom on Linux. diff --git a/src/zrand.c b/src/zrand.c index 17968af..5945ad8 100644 --- a/src/zrand.c +++ b/src/zrand.c @@ -55,6 +55,8 @@ zrand(z_t r, enum zranddev dev, enum zranddist dist, z_t n) int fd; switch (dev) { + case DEFAULT_RANDOM: + case FASTEST_RANDOM: case FAST_RANDOM: pathname = FAST_RANDOM_PATHNAME; break; diff --git a/test.c b/test.c index de92ccb..bcb6815 100644 --- a/test.c +++ b/test.c @@ -731,7 +731,7 @@ main(void) zrand(b, SECURE_RANDOM, UNIFORM, d); assert(zcmp(b, _0), >= 0); assert(zcmp(b, d), <= 0); - zrand(c, FAST_RANDOM, UNIFORM, d); + zrand(c, FASTEST_RANDOM, UNIFORM, d); assert(zcmp(c, _0), >= 0); assert(zcmp(c, d), <= 0); assert(zcmp(a, b), != 0); @@ -739,13 +739,13 @@ main(void) assert(zcmp(b, c), != 0); zsetu(d, 100000UL); - zrand(a, FAST_RANDOM, QUASIUNIFORM, d); + zrand(a, DEFAULT_RANDOM, QUASIUNIFORM, d); assert(zcmp(a, _0), >= 0); assert(zcmp(a, d), <= 0); - zrand(b, FAST_RANDOM, QUASIUNIFORM, d); + zrand(b, DEFAULT_RANDOM, QUASIUNIFORM, d); assert(zcmp(b, _0), >= 0); assert(zcmp(b, d), <= 0); - zrand(c, FAST_RANDOM, QUASIUNIFORM, d); + zrand(c, DEFAULT_RANDOM, QUASIUNIFORM, d); assert(zcmp(c, _0), >= 0); assert(zcmp(c, d), <= 0); assert(zcmp(a, b), != 0); @@ -753,13 +753,13 @@ main(void) assert(zcmp(b, c), != 0); zsetu(d, 100000UL); - zrand(a, FAST_RANDOM, MODUNIFORM, d); + zrand(a, DEFAULT_RANDOM, MODUNIFORM, d); assert(zcmp(a, _0), >= 0); assert(zcmp(a, d), <= 0); - zrand(b, FAST_RANDOM, MODUNIFORM, d); + zrand(b, DEFAULT_RANDOM, MODUNIFORM, d); assert(zcmp(b, _0), >= 0); assert(zcmp(b, d), <= 0); - zrand(c, FAST_RANDOM, MODUNIFORM, d); + zrand(c, DEFAULT_RANDOM, MODUNIFORM, d); assert(zcmp(c, _0), >= 0); assert(zcmp(c, d), <= 0); assert(zcmp(a, b), != 0); diff --git a/zahl.h b/zahl.h index 1ac6237..e49a6a0 100644 --- a/zahl.h +++ b/zahl.h @@ -48,7 +48,9 @@ enum zprimality { enum zranddev { FAST_RANDOM = 0, /* Random numbers are generated directly from /dev/urandom. */ - SECURE_RANDOM /* Random numbers are generated directly from /dev/random. */ + SECURE_RANDOM, /* Random numbers are generated directly from /dev/random. */ + DEFAULT_RANDOM, /* Select the default random number generator. */ + FASTEST_RANDOM /* Select the fastest random number generator. */ }; enum zranddist { -- cgit v1.2.3-70-g09d2