X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=test%2Fsiphash_internal_test.c;h=dfdce48d1306757fbba1aacd64cf4ba2b012069b;hp=2df7f3920ce089cadbbe93f4fed4c7e8dd49b8ee;hb=d74f23d2dbf2de0f374bff004c135242cfb65174;hpb=edd689efbfa26a657a5d8310f43a4f11d29a460e;ds=sidebyside diff --git a/test/siphash_internal_test.c b/test/siphash_internal_test.c index 2df7f3920c..dfdce48d13 100644 --- a/test/siphash_internal_test.c +++ b/test/siphash_internal_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -14,24 +14,9 @@ #include #include "testutil.h" -#include "test_main_custom.h" - -#ifdef __VMS -# pragma names save -# pragma names as_is,shortened -#endif - #include "internal/siphash.h" - -#ifdef __VMS -# pragma names restore -#endif - #include "../crypto/siphash/siphash_local.h" -#include "e_os.h" - -static BIO* b_stderr = NULL; -static BIO* b_stdout = NULL; +#include "internal/nelem.h" typedef struct { size_t size; @@ -49,47 +34,6 @@ typedef struct { * ***/ -static int benchmark_siphash(void) -{ -# ifdef OPENSSL_CPUID_OBJ - SIPHASH siphash; - unsigned char key[SIPHASH_KEY_SIZE]; - unsigned char buf[8192]; - unsigned long long stopwatch; - unsigned long long OPENSSL_rdtsc(); - unsigned int i; - - memset (buf,0x55,sizeof(buf)); - memset (key,0xAA,sizeof(key)); - - (void)SipHash_Init(&siphash, key, 0, 0, 0); - - for (i=0;i<100000;i++) - SipHash_Update(&siphash, buf, sizeof(buf)); - - stopwatch = OPENSSL_rdtsc(); - for (i=0;i<10000;i++) - SipHash_Update(&siphash, buf, sizeof(buf)); - stopwatch = OPENSSL_rdtsc() - stopwatch; - - BIO_printf(b_stdout, "%g\n",stopwatch/(double)(i*sizeof(buf))); - - stopwatch = OPENSSL_rdtsc(); - for (i=0;i<10000;i++) { - (void)SipHash_Init(&siphash, key, 0, 0, 0); - SipHash_Update(&siphash, buf, 16); - (void)SipHash_Final(&siphash, buf, SIPHASH_MAX_DIGEST_SIZE); - } - stopwatch = OPENSSL_rdtsc() - stopwatch; - - BIO_printf(b_stdout, "%g\n",stopwatch/(double)(i)); -# else - BIO_printf(b_stderr, - "Benchmarking of siphash isn't available on this platform\n"); -# endif - return 1; -} - /* From C reference: https://131002.net/siphash/ */ static TESTDATA tests[] = { @@ -237,7 +181,7 @@ static int test_siphash(int idx) if (expectedlen != SIPHASH_MIN_DIGEST_SIZE && expectedlen != SIPHASH_MAX_DIGEST_SIZE) { - TEST_info("size %" OSSLzu " vs %d and %d", expectedlen, + TEST_info("size %zu vs %d and %d", expectedlen, SIPHASH_MIN_DIGEST_SIZE, SIPHASH_MAX_DIGEST_SIZE); return 0; } @@ -247,12 +191,13 @@ static int test_siphash(int idx) /* key and in data are 00 01 02 ... */ for (i = 0; i < sizeof(key); i++) - key[i] = i; + key[i] = (unsigned char)i; for (i = 0; i < inlen; i++) - in[i] = i; + in[i] = (unsigned char)i; - if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0))) + if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen)) + || !TEST_true(SipHash_Init(&siphash, key, 0, 0))) return 0; SipHash_Update(&siphash, in, inlen); if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)) @@ -260,7 +205,8 @@ static int test_siphash(int idx) return 0; if (inlen > 16) { - if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0))) + if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen)) + || !TEST_true(SipHash_Init(&siphash, key, 0, 0))) return 0; SipHash_Update(&siphash, in, 1); SipHash_Update(&siphash, in+1, inlen-1); @@ -276,7 +222,8 @@ static int test_siphash(int idx) if (inlen > 32) { size_t half = inlen / 2; - if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0))) + if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen)) + || !TEST_true(SipHash_Init(&siphash, key, 0, 0))) return 0; SipHash_Update(&siphash, in, half); SipHash_Update(&siphash, in+half, inlen-half); @@ -289,7 +236,8 @@ static int test_siphash(int idx) } for (half = 16; half < inlen; half += 16) { - if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0))) + if (!TEST_true(SipHash_set_hash_size(&siphash, expectedlen)) + || !TEST_true(SipHash_Init(&siphash, key, 0, 0))) return 0; SipHash_Update(&siphash, in, half); SipHash_Update(&siphash, in+half, inlen-half); @@ -297,7 +245,7 @@ static int test_siphash(int idx) return 0; if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) { - TEST_info("SipHash test #%d/%" OSSLzu "+%" OSSLzu " failed.", + TEST_info("SipHash test #%d/%zu+%zu failed.", idx, half, inlen-half); return 0; } @@ -314,58 +262,29 @@ static int test_siphash_basic(void) unsigned char output[SIPHASH_MAX_DIGEST_SIZE]; /* Use invalid hash size */ - return TEST_int_eq(SipHash_Init(&siphash, key, 4, 0, 0), 0) + return TEST_int_eq(SipHash_set_hash_size(&siphash, 4), 0) /* Use hash size = 8 */ - && TEST_true(SipHash_Init(&siphash, key, 8, 0, 0)) + && TEST_true(SipHash_set_hash_size(&siphash, 8)) + && TEST_true(SipHash_Init(&siphash, key, 0, 0)) && TEST_true(SipHash_Final(&siphash, output, 8)) && TEST_int_eq(SipHash_Final(&siphash, output, 16), 0) /* Use hash size = 16 */ - && TEST_true(SipHash_Init(&siphash, key, 16, 0, 0)) + && TEST_true(SipHash_set_hash_size(&siphash, 16)) + && TEST_true(SipHash_Init(&siphash, key, 0, 0)) && TEST_int_eq(SipHash_Final(&siphash, output, 8), 0) && TEST_true(SipHash_Final(&siphash, output, 16)) /* Use hash size = 0 (default = 16) */ - && TEST_true(SipHash_Init(&siphash, key, 0, 0, 0)) + && TEST_true(SipHash_set_hash_size(&siphash, 0)) + && TEST_true(SipHash_Init(&siphash, key, 0, 0)) && TEST_int_eq(SipHash_Final(&siphash, output, 8), 0) && TEST_true(SipHash_Final(&siphash, output, 16)); } -int test_main(int argc, char **argv) +int setup_tests(void) { - int result = 0; - int iter_argv; - int benchmark = 0; - - b_stderr = BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT); - b_stdout = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT); -#ifdef OPENSSL_SYS_VMS - b_stderr = BIO_push(BIO_new(BIO_f_linebuffer()), b_stderr); - b_stdout = BIO_push(BIO_new(BIO_f_linebuffer()), b_stdout); -#endif - - for (iter_argv = 1; iter_argv < argc; iter_argv++) { - if (strcmp(argv[iter_argv], "-b") == 0) - benchmark = 1; - else if (strcmp(argv[iter_argv], "-h") == 0) - goto help; - } - ADD_TEST(test_siphash_basic); ADD_ALL_TESTS(test_siphash, OSSL_NELEM(tests)); - if (benchmark) - ADD_TEST(benchmark_siphash); - - result = run_tests(argv[0]); - goto out; - - help: - BIO_printf(b_stdout, "-h\tThis help\n"); - BIO_printf(b_stdout, "-b\tBenchmark in addition to the tests\n"); - - out: - BIO_free(b_stdout); - BIO_free(b_stderr); - - return result; + return 1; }