diff options
Diffstat (limited to 'test/default/randombytes.c')
-rw-r--r-- | test/default/randombytes.c | 93 |
1 files changed, 85 insertions, 8 deletions
diff --git a/test/default/randombytes.c b/test/default/randombytes.c index f805c47..f9f337f 100644 --- a/test/default/randombytes.c +++ b/test/default/randombytes.c @@ -1,16 +1,93 @@ -#include "randombytes.h" + +#define TEST_NAME "randombytes" +#include "cmptest.h" unsigned char x[65536]; unsigned long long freq[256]; -int main(void) +static int compat_tests(void) { - unsigned long long i; + size_t i; + + memset(x, 0, sizeof x); + randombytes(x, sizeof x); + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < sizeof x; ++i) { + ++freq[255 & (int)x[i]]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("nacl_tests failed\n"); + } + } + return 0; +} + +static int randombytes_tests(void) +{ + unsigned int i; + + assert(strcmp(randombytes_implementation_name(), "sysrandom") == 0); - randombytes(x,sizeof x); - for (i = 0;i < 256;++i) freq[i] = 0; - for (i = 0;i < sizeof x;++i) ++freq[255 & (int) x[i]]; - for (i = 0;i < 256;++i) if (!freq[i]) return 111; + randombytes(x, 1U); + randombytes_close(); + + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < 65536; ++i) { + ++freq[randombytes_uniform(256)]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("randombytes_uniform() test failed\n"); + } + } + assert(randombytes_uniform(1U) == 0U); + randombytes_close(); + randombytes_set_implementation(&randombytes_salsa20_implementation); + assert(strcmp(randombytes_implementation_name(), "salsa20") == 0); + randombytes_stir(); + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < 65536; ++i) { + ++freq[randombytes_uniform(256)]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("randombytes_uniform() test failed\n"); + } + } + memset(x, 0, sizeof x); + randombytes_buf(x, sizeof x); + for (i = 0; i < 256; ++i) { + freq[i] = 0; + } + for (i = 0; i < sizeof x; ++i) { + ++freq[255 & (int)x[i]]; + } + for (i = 0; i < 256; ++i) { + if (!freq[i]) { + printf("randombytes_buf() test failed\n"); + } + } + assert(randombytes_uniform(1U) == 0U); + randombytes_close(); + + randombytes(x, 1U); + randombytes_close(); + + return 0; +} + +int main(void) +{ + compat_tests(); + randombytes_tests(); + printf("OK\n"); - return 0; + return 0; } |