diff options
author | Niels Möller <nisse@lysator.liu.se> | 2014-01-27 21:17:34 +0100 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2014-01-27 21:22:24 +0100 |
commit | 00e21029f2207678f235645025db19b22f17ebb8 (patch) | |
tree | aec48390386f61b1a641487f0cea7c0a2844e34d | |
parent | 91376fed5152b586d4af479bc2d3761e2f318edd (diff) | |
download | nettle-00e21029f2207678f235645025db19b22f17ebb8.tar.gz |
Add benchmarking for eax.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | examples/nettle-benchmark.c | 42 |
2 files changed, 44 insertions, 1 deletions
@@ -1,5 +1,8 @@ 2014-01-27 Niels Möller <nisse@lysator.liu.se> + * examples/nettle-benchmark.c (time_eax): New function. + (main): Use it. + * x86_64/chacha-core-internal.asm: Use pshufhw + pshuflw for the 16-bit rotate. diff --git a/examples/nettle-benchmark.c b/examples/nettle-benchmark.c index 9bb19e4a..5ac6d4c4 100644 --- a/examples/nettle-benchmark.c +++ b/examples/nettle-benchmark.c @@ -6,7 +6,7 @@ /* nettle, low-level cryptographics library * - * Copyright (C) 2001, 2010 Niels Möller + * Copyright (C) 2001, 2010, 2014 Niels Möller * * The nettle library is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -450,6 +450,40 @@ time_gcm(void) time_function(bench_cipher, &cinfo)); } +static void +time_eax(void) +{ + static uint8_t data[BENCH_BLOCK]; + struct bench_hash_info hinfo; + struct bench_cipher_info cinfo; + struct eax_aes128_ctx ctx; + + uint8_t key[AES128_KEY_SIZE]; + uint8_t iv[EAX_BLOCK_SIZE]; + + eax_aes128_set_key (&ctx, sizeof(key), key); + eax_aes128_set_nonce(&ctx, sizeof(iv), iv); + + hinfo.ctx = &ctx; + hinfo.update = (nettle_hash_update_func *) eax_aes128_update; + hinfo.data = data; + + display("eax-aes128", "update", GCM_BLOCK_SIZE, + time_function(bench_hash, &hinfo)); + + cinfo.ctx = &ctx; + cinfo.crypt = (nettle_crypt_func *) eax_aes128_encrypt; + cinfo.data = data; + + display("eax-aes128", "encrypt", GCM_BLOCK_SIZE, + time_function(bench_cipher, &cinfo)); + + cinfo.crypt = (nettle_crypt_func *) eax_aes128_decrypt; + + display("eax-aes128", "decrypt", GCM_BLOCK_SIZE, + time_function(bench_cipher, &cinfo)); +} + static int prefix_p(const char *prefix, const char *s) { @@ -749,5 +783,11 @@ main(int argc, char **argv) time_gcm(); } + if (!alg || strstr ("eax", alg)) + { + printf("\n"); + time_eax(); + } + return 0; } |