libzahl

big integer library
git clone git://git.suckless.org/libzahl
Log | Files | Refs | README | LICENSE

commit c5f0bedd07467c089b0eca567828508abfcc9b6d
parent 8dc182ff87cafe3337490bc8db90a67449b9c837
Author: Mattias Andrée <maandree@kth.se>
Date:   Fri, 25 Mar 2016 13:33:41 +0100

zrand: add DEFAULT_RANDOM and FASTEST_RANDOM

Signed-off-by: Mattias Andrée <maandree@kth.se>

Diffstat:
Mman/zrand.3 | 23+++++++++++++++++++++++
Msrc/zrand.c | 2++
Mtest.c | 14+++++++-------
Mzahl.h | 4+++-
4 files changed, 35 insertions(+), 8 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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 {