auto-provide OS_IPK paths in [paths] of config
[oweals/gnunet.git] / src / util / perf_crypto_hash.c
index affd4a2d5f561d9109dbca331fcaacfd780c365f..3bd4836392c9f8aa983b30af8f602c33cecaf9d2 100644 (file)
@@ -1,22 +1,22 @@
 /*
      This file is part of GNUnet.
-     (C) 2002, 2003, 2004, 2006 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2002, 2003, 2004, 2006 GNUnet e.V.
 
-     GNUnet is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
+     Affero General Public License for more details.
 
-     You should have received a copy of the GNU General Public License
-     along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
-*/
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
+ */
 
 /**
  * @author Christian Grothoff
@@ -24,9 +24,9 @@
  * @brief measure performance of hash function
  */
 #include "platform.h"
-#include "gnunet_common.h"
 #include "gnunet_util_lib.h"
 #include <gauger.h>
+#include <gcrypt.h>
 
 
 static void
@@ -36,9 +36,42 @@ perfHash ()
   unsigned int i;
   char buf[64 * 1024];
 
-  memset (buf, 1, sizeof (buf));
+  memset (buf, 1, sizeof(buf));
+  for (i = 0; i < 1024; i++)
+    GNUNET_CRYPTO_hash (buf, sizeof(buf), &hc);
+}
+
+
+static void
+perfHashSmall ()
+{
+  struct GNUNET_HashCode hc;
+  unsigned int i;
+  char buf[64];
+
+  memset (buf, 1, sizeof(buf));
   for (i = 0; i < 1024; i++)
-    GNUNET_CRYPTO_hash (buf, sizeof (buf), &hc);
+    GNUNET_CRYPTO_hash (buf, sizeof(buf), &hc);
+}
+
+
+static void
+perfHKDF ()
+{
+  unsigned int i;
+  char res[128];
+  char buf[128];
+  char skm[64];
+
+  memset (buf, 1, sizeof(buf));
+  memset (skm, 2, sizeof(skm));
+  for (i = 0; i < 1024; i++)
+    GNUNET_CRYPTO_hkdf (res, sizeof(res),
+                        GCRY_MD_SHA512, GCRY_MD_SHA256,
+                        buf, sizeof(buf),
+                        skm, sizeof(skm),
+                        "test", (size_t) 4,
+                        NULL, 0);
 }
 
 
@@ -47,16 +80,35 @@ main (int argc, char *argv[])
 {
   struct GNUNET_TIME_Absolute start;
 
+  start = GNUNET_TIME_absolute_get ();
+  perfHashSmall ();
+  printf ("1024x 64-byte Hash perf took %s\n",
+          GNUNET_STRINGS_relative_time_to_string (
+            GNUNET_TIME_absolute_get_duration (start),
+            GNUNET_YES));
+
   start = GNUNET_TIME_absolute_get ();
   perfHash ();
-  printf ("Hash perf took %s\n",
-          GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (start),
-                                                 GNUNET_YES));
+  printf ("1024x 64k Hash perf took %s\n",
+          GNUNET_STRINGS_relative_time_to_string (
+            GNUNET_TIME_absolute_get_duration (start),
+            GNUNET_YES));
   GAUGER ("UTIL", "Cryptographic hashing",
-          64 * 1024 / (1 +
-                      GNUNET_TIME_absolute_get_duration
-                      (start).rel_value_us / 1000LL), "kb/ms");
+          64 * 1024 / (1
+                       + GNUNET_TIME_absolute_get_duration
+                         (start).rel_value_us / 1000LL), "kb/ms");
+  start = GNUNET_TIME_absolute_get ();
+  perfHKDF ();
+  printf ("HKDF perf took %s\n",
+          GNUNET_STRINGS_relative_time_to_string (
+            GNUNET_TIME_absolute_get_duration (start),
+            GNUNET_YES));
+  GAUGER ("UTIL", "Cryptographic HKDF",
+          64 * 1024 / (1
+                       + GNUNET_TIME_absolute_get_duration
+                         (start).rel_value_us / 1000LL), "kb/ms");
   return 0;
 }
 
+
 /* end of perf_crypto_hash.c */