From 0ec5a25c8857e98f05a3de846ccf15e42d674442 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 14 Sep 2014 12:43:53 -0700 Subject: [PATCH] More tests for randombytes --- test/default/Makefile.am | 4 ++- test/default/randombytes.c | 65 +++++++++++++++++++++++++++++++++--- test/default/randombytes.exp | 1 + 3 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 test/default/randombytes.exp diff --git a/test/default/Makefile.am b/test/default/Makefile.am index cdd44039..04f20585 100644 --- a/test/default/Makefile.am +++ b/test/default/Makefile.am @@ -35,6 +35,7 @@ EXTRA_DIST = \ onetimeauth7.exp \ pwhash.exp \ pwhash_scrypt_ll.exp \ + randombytes.exp \ scalarmult.exp \ scalarmult2.exp \ scalarmult5.exp \ @@ -92,6 +93,7 @@ DISTCLEANFILES = \ onetimeauth7.res \ pwhash.res \ pwhash_scrypt_ll.res \ + randombytes.res \ scalarmult.res \ scalarmult2.res \ scalarmult5.res \ @@ -283,7 +285,7 @@ pwhash_LDADD = $(TESTS_LDADD) pwhash_scrypt_ll_SOURCE = cmptest.h pwhash_scrypt_ll.c pwhash_scrypt_ll_LDADD = $(TESTS_LDADD) -randombytes_SOURCE = randombytes.c +randombytes_SOURCE = cmptest.h randombytes.c randombytes_LDADD = $(TESTS_LDADD) scalarmult_SOURCE = cmptest.h scalarmult.c diff --git a/test/default/randombytes.c b/test/default/randombytes.c index e8f665e1..ca4181ae 100644 --- a/test/default/randombytes.c +++ b/test/default/randombytes.c @@ -1,12 +1,15 @@ -#include "randombytes.h" + +#define TEST_NAME "randombytes" +#include "cmptest.h" unsigned char x[65536]; unsigned long long freq[256]; -static int nacl_tests(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; @@ -16,14 +19,66 @@ static int nacl_tests(void) } for (i = 0; i < 256; ++i) { if (!freq[i]) { - return 111; + printf("nacl_tests failed\n"); } } + return 0; +} + +static int randombytes_tests(void) +{ + unsigned int i; + + assert(strcmp(randombytes_implementation_name(), "sysrandom") == 0); + 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"); + } + } + 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"); + } + } + randombytes_close(); + + return 0; } int main(void) { - nacl_tests(); + compat_tests(); + randombytes_tests(); + printf("OK\n"); return 0; } diff --git a/test/default/randombytes.exp b/test/default/randombytes.exp new file mode 100644 index 00000000..d86bac9d --- /dev/null +++ b/test/default/randombytes.exp @@ -0,0 +1 @@ +OK