diff --git a/testsuite/yarrow-test.c b/testsuite/yarrow-test.c index 536aa3ae1ae057f139b76f9bba5e5c7deda46aa7..78fb9cc03327c23020948e6745cf2db3ca45ad70 100644 --- a/testsuite/yarrow-test.c +++ b/testsuite/yarrow-test.c @@ -9,6 +9,8 @@ #include <stdlib.h> #include <string.h> +static int verbose = 0; + /* Lagged fibonacci sequence as described in Knuth 3.6 */ #define KK 100 @@ -191,6 +193,11 @@ main(int argc, char **argv) unsigned i; static const char zeroes[100]; + + if ((argc == 2) + && (argv[1][0] == '-') + && (argv[1][1] == 'v')) + verbose = 1; yarrow256_init(&yarrow, 2, sources); yarrow_key_event_init(&estimator); @@ -204,9 +211,10 @@ main(int argc, char **argv) /* Fake input to source 0 */ yarrow256_update(&yarrow, 0, 200, sizeof(zeroes), zeroes); - fprintf(stderr, "source 0 entropy: %d\n", - sources[0].estimate[YARROW_SLOW]); - + if (verbose) + fprintf(stderr, "source 0 entropy: %d\n", + sources[0].estimate[YARROW_SLOW]); + assert(!yarrow.seeded); input = open_file("rfc1750.txt"); @@ -237,52 +245,65 @@ main(int argc, char **argv) uint8_t buf[500]; - if (!output) + if (verbose && !output) fprintf(stderr, "Generator was seeded after %d events\n", processed); yarrow256_random(&yarrow, size, buf); sha1_update(&output_hash, size, buf); - - fprintf(stderr, "%02x ", buf[0]); - if (! (processed % 16)) - fprintf(stderr, "\n"); + if (verbose) + { + fprintf(stderr, "%02x ", buf[0]); + if (! (processed % 16)) + fprintf(stderr, "\n"); + } output += size; } } - for (i = 0; i<2; i++) - fprintf(stderr, "source %d, (fast, slow) entropy: (%d, %d)\n", - i, - sources[i].estimate[YARROW_FAST], - sources[i].estimate[YARROW_SLOW]); - - fprintf(stderr, "Processed input: %d octets\n", processed); - fprintf(stderr, " sha1:"); - + if (verbose) + { + for (i = 0; i<2; i++) + fprintf(stderr, "source %d, (fast, slow) entropy: (%d, %d)\n", + i, + sources[i].estimate[YARROW_FAST], + sources[i].estimate[YARROW_SLOW]); + + fprintf(stderr, "Processed input: %d octets\n", processed); + fprintf(stderr, " sha1:"); + } sha1_final(&input_hash); sha1_digest(&input_hash, sizeof(digest), digest); - print_digest(digest); - fprintf(stderr, "\n"); - + if (verbose) + { + print_digest(digest); + fprintf(stderr, "\n"); + } + if (memcmp(digest, expected_input, sizeof(digest))) { fprintf(stderr, "Failed.\n"); return EXIT_FAILURE; } - - fprintf(stderr, "Generated output: %d octets\n", output); - fprintf(stderr, " sha1:"); + + if (verbose) + { + fprintf(stderr, "Generated output: %d octets\n", output); + fprintf(stderr, " sha1:"); + } sha1_final(&output_hash); sha1_digest(&output_hash, sizeof(digest), digest); - print_digest(digest); - fprintf(stderr, "\n"); - + if (verbose) + { + print_digest(digest); + fprintf(stderr, "\n"); + } + if (memcmp(digest, expected_output, sizeof(digest))) { fprintf(stderr, "Failed.\n");