]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Add benchmarking for eax.
authorNiels Möller <nisse@lysator.liu.se>
Mon, 27 Jan 2014 20:17:34 +0000 (21:17 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Mon, 27 Jan 2014 20:22:24 +0000 (21:22 +0100)
ChangeLog
examples/nettle-benchmark.c

index 7298cf3053be5b92ca35f973f978812463d428bf..cb6a1093ec75ff2367fdf8a6c2dffaa4e338b8c8 100644 (file)
--- 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.
 
index 9bb19e4af430fcdd648c96e414943ac3cb3c8629..5ac6d4c4545ac5d798c9ccd3ec4eefa41c7891ef 100644 (file)
@@ -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;
 }