aboutsummaryrefslogtreecommitdiff
path: root/src/util/crypto_hash.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-01-07 19:04:09 +0000
committerChristian Grothoff <christian@grothoff.org>2014-01-07 19:04:09 +0000
commit8b4df530533b6de991dbdc5431c0ac778f1836ae (patch)
tree8260c93fd58fb6226a8869ec58007d2ecac202c8 /src/util/crypto_hash.c
parent83d0beb52def13c8c5d162ace16a576338efbb15 (diff)
downloadgnunet-8b4df530533b6de991dbdc5431c0ac778f1836ae.tar.gz
gnunet-8b4df530533b6de991dbdc5431c0ac778f1836ae.zip
-eliminate repeated calls to gcry_md_open, use reset instead of close/open
Diffstat (limited to 'src/util/crypto_hash.c')
-rw-r--r--src/util/crypto_hash.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/util/crypto_hash.c b/src/util/crypto_hash.c
index e14e7c898..3244a4371 100644
--- a/src/util/crypto_hash.c
+++ b/src/util/crypto_hash.c
@@ -561,19 +561,27 @@ GNUNET_CRYPTO_hmac_derive_key_v (struct GNUNET_CRYPTO_AuthKey *key,
561void 561void
562GNUNET_CRYPTO_hmac (const struct GNUNET_CRYPTO_AuthKey *key, 562GNUNET_CRYPTO_hmac (const struct GNUNET_CRYPTO_AuthKey *key,
563 const void *plaintext, size_t plaintext_len, 563 const void *plaintext, size_t plaintext_len,
564 struct GNUNET_HashCode * hmac) 564 struct GNUNET_HashCode *hmac)
565{ 565{
566 gcry_md_hd_t md; 566 static int once;
567 static gcry_md_hd_t md;
567 const unsigned char *mc; 568 const unsigned char *mc;
568 569
569 GNUNET_assert (GPG_ERR_NO_ERROR == 570 if (! once)
570 gcry_md_open (&md, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC)); 571 {
572 once = 1;
573 GNUNET_assert (GPG_ERR_NO_ERROR ==
574 gcry_md_open (&md, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC));
575 }
576 else
577 {
578 gcry_md_reset (md);
579 }
571 gcry_md_setkey (md, key->key, sizeof (key->key)); 580 gcry_md_setkey (md, key->key, sizeof (key->key));
572 gcry_md_write (md, plaintext, plaintext_len); 581 gcry_md_write (md, plaintext, plaintext_len);
573 mc = gcry_md_read (md, GCRY_MD_SHA512); 582 mc = gcry_md_read (md, GCRY_MD_SHA512);
574 if (mc != NULL) 583 GNUNET_assert (NULL != mc);
575 memcpy (hmac->bits, mc, sizeof (hmac->bits)); 584 memcpy (hmac->bits, mc, sizeof (hmac->bits));
576 gcry_md_close (md);
577} 585}
578 586
579 587