summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2014-01-27 21:17:34 +0100
committerNiels Möller <nisse@lysator.liu.se>2014-01-27 21:22:24 +0100
commit00e21029f2207678f235645025db19b22f17ebb8 (patch)
treeaec48390386f61b1a641487f0cea7c0a2844e34d
parent91376fed5152b586d4af479bc2d3761e2f318edd (diff)
downloadnettle-00e21029f2207678f235645025db19b22f17ebb8.tar.gz
Add benchmarking for eax.
-rw-r--r--ChangeLog3
-rw-r--r--examples/nettle-benchmark.c42
2 files changed, 44 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 7298cf30..cb6a1093 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}