X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=test%2Fmodes_internal_test.c;h=dd0a35956fc06372a75d4e1d4cd665f06d0815ae;hb=f995e5bdcd5d4c2143323ff78e4dcc0b95c5e024;hp=e2eb3b65d0a725f3e00617a5cd80ab1738659aea;hpb=fa9ad41476d40185b6fe06fa6564ea01cd527dad;p=oweals%2Fopenssl.git diff --git a/test/modes_internal_test.c b/test/modes_internal_test.c index e2eb3b65d0..dd0a35956f 100644 --- a/test/modes_internal_test.c +++ b/test/modes_internal_test.c @@ -1,7 +1,7 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * - * Licensed under the OpenSSL license (the "License"). You may not use + * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html @@ -9,14 +9,20 @@ /* Internal tests for the modes module */ +/* + * This file uses the low level AES functions (which are deprecated for + * non-internal use) in order to test the modes code + */ +#include "internal/deprecated.h" + #include #include #include #include -#include "../crypto/modes/modes_lcl.h" #include "testutil.h" -#include "e_os.h" +#include "crypto/modes.h" +#include "internal/nelem.h" typedef struct { size_t size; @@ -99,7 +105,7 @@ static const SIZED_DATA aes_cts128_vectors[] = { CTS128_TEST_VECTOR(64), }; -static AES_KEY *cts128_encrypt_key_schedule() +static AES_KEY *cts128_encrypt_key_schedule(void) { static int init_key = 1; static AES_KEY ks; @@ -111,7 +117,7 @@ static AES_KEY *cts128_encrypt_key_schedule() return &ks; } -static AES_KEY *cts128_decrypt_key_schedule() +static AES_KEY *cts128_decrypt_key_schedule(void) { static int init_key = 1; static AES_KEY ks; @@ -883,75 +889,10 @@ static int test_gcm128(int idx) return 1; } -static void benchmark_gcm128(const unsigned char *K, size_t Klen, - const unsigned char *IV, size_t IVlen) -{ -#ifdef OPENSSL_CPUID_OBJ - GCM128_CONTEXT ctx; - AES_KEY key; - size_t start, gcm_t, ctr_t, OPENSSL_rdtsc(); - union { - u64 u; - u8 c[1024]; - } buf; - - AES_set_encrypt_key(K, Klen * 8, &key); - CRYPTO_gcm128_init(&ctx, &key, (block128_f) AES_encrypt); - CRYPTO_gcm128_setiv(&ctx, IV, IVlen); - - CRYPTO_gcm128_encrypt(&ctx, buf.c, buf.c, sizeof(buf)); - start = OPENSSL_rdtsc(); - CRYPTO_gcm128_encrypt(&ctx, buf.c, buf.c, sizeof(buf)); - gcm_t = OPENSSL_rdtsc() - start; - - CRYPTO_ctr128_encrypt(buf.c, buf.c, sizeof(buf), - &key, ctx.Yi.c, ctx.EKi.c, &ctx.mres, - (block128_f) AES_encrypt); - start = OPENSSL_rdtsc(); - CRYPTO_ctr128_encrypt(buf.c, buf.c, sizeof(buf), - &key, ctx.Yi.c, ctx.EKi.c, &ctx.mres, - (block128_f) AES_encrypt); - ctr_t = OPENSSL_rdtsc() - start; - - printf("%.2f-%.2f=%.2f\n", - gcm_t / (double)sizeof(buf), - ctr_t / (double)sizeof(buf), - (gcm_t - ctr_t) / (double)sizeof(buf)); -# ifdef GHASH - { - void (*gcm_ghash_p) (u64 Xi[2], const u128 Htable[16], - const u8 *inp, size_t len) = ctx.ghash; - - GHASH((&ctx), buf.c, sizeof(buf)); - start = OPENSSL_rdtsc(); - for (i = 0; i < 100; ++i) - GHASH((&ctx), buf.c, sizeof(buf)); - gcm_t = OPENSSL_rdtsc() - start; - printf("%.2f\n", gcm_t / (double)sizeof(buf) / (double)i); - } -# endif -#else - fprintf(stderr, - "Benchmarking of modes isn't available on this platform\n"); -#endif -} - int setup_tests(void) { - if (test_has_option("-h")) { - printf("-h\tThis help\n"); - printf("-b\tBenchmark gcm128 in addition to the tests\n"); - return 1; - } - ADD_ALL_TESTS(test_aes_cts128, OSSL_NELEM(aes_cts128_vectors)); ADD_ALL_TESTS(test_aes_cts128_nist, OSSL_NELEM(aes_cts128_vectors)); ADD_ALL_TESTS(test_gcm128, OSSL_NELEM(gcm128_vectors)); return 1; } - -void cleanup_tests(void) -{ - if (test_has_option("-b")) - benchmark_gcm128(K1, sizeof(K1), IV1, sizeof(IV1)); -}