From 85c12a62ee167946cecbc065f78d4bb674de16ca Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Wed, 27 Dec 2017 23:19:32 +0200 Subject: [PATCH] GnuTLS: Implement sha{256,384,512}_vector() using libgcrypt Replace the internal SHA256 implementation with the one from libgcrypt and also add the SHA384 and SHA512 versions. Signed-off-by: Jouni Malinen --- hostapd/Android.mk | 1 - hostapd/Makefile | 1 - src/crypto/crypto_gnutls.c | 20 +++++++++++++++++++- wpa_supplicant/Android.mk | 1 - wpa_supplicant/Makefile | 1 - 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/hostapd/Android.mk b/hostapd/Android.mk index 6a62d3928..c185aed28 100644 --- a/hostapd/Android.mk +++ b/hostapd/Android.mk @@ -651,7 +651,6 @@ OBJS += src/crypto/sha1-internal.c endif LIBS += -lgcrypt LIBS_h += -lgcrypt -CONFIG_INTERNAL_SHA256=y CONFIG_INTERNAL_RC4=y CONFIG_INTERNAL_DH_GROUP5=y endif diff --git a/hostapd/Makefile b/hostapd/Makefile index cb146dabd..456c9b438 100644 --- a/hostapd/Makefile +++ b/hostapd/Makefile @@ -689,7 +689,6 @@ SHA1OBJS += ../src/crypto/sha1-internal.o endif LIBS += -lgcrypt LIBS_h += -lgcrypt -CONFIG_INTERNAL_SHA256=y CONFIG_INTERNAL_RC4=y CONFIG_INTERNAL_DH_GROUP5=y endif diff --git a/src/crypto/crypto_gnutls.c b/src/crypto/crypto_gnutls.c index aca7792d1..3fe774c5c 100644 --- a/src/crypto/crypto_gnutls.c +++ b/src/crypto/crypto_gnutls.c @@ -1,6 +1,6 @@ /* * WPA Supplicant / wrapper functions for libgcrypt - * Copyright (c) 2004-2009, Jouni Malinen + * Copyright (c) 2004-2017, Jouni Malinen * * This software may be distributed under the terms of the BSD license. * See README for more details. @@ -72,6 +72,24 @@ int sha1_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) } +int sha256_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) +{ + return gnutls_digest_vector(GCRY_MD_SHA256, num_elem, addr, len, mac); +} + + +int sha384_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) +{ + return gnutls_digest_vector(GCRY_MD_SHA384, num_elem, addr, len, mac); +} + + +int sha512_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) +{ + return gnutls_digest_vector(GCRY_MD_SHA512, num_elem, addr, len, mac); +} + + void * aes_encrypt_init(const u8 *key, size_t len) { gcry_cipher_hd_t hd; diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk index 12e0bb94c..ed3dd734e 100644 --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk @@ -1051,7 +1051,6 @@ OBJS += src/crypto/sha1-internal.c endif LIBS += -lgcrypt LIBS_p += -lgcrypt -CONFIG_INTERNAL_SHA256=y CONFIG_INTERNAL_RC4=y CONFIG_INTERNAL_DH_GROUP5=y endif diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile index 2ec011fc5..e60a05c95 100644 --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile @@ -1095,7 +1095,6 @@ SHA1OBJS += ../src/crypto/sha1-internal.o endif LIBS += -lgcrypt LIBS_p += -lgcrypt -CONFIG_INTERNAL_SHA256=y CONFIG_INTERNAL_RC4=y CONFIG_INTERNAL_DH_GROUP5=y endif