Use AF_ALG for sha384 and sha512 too Signed-off-by: Matteo Croce <mcr...@redhat.com> --- lib/sha512.c | 34 ++++++++++++++++++++++++++++++++-- modules/crypto/sha512 | 4 +++- 2 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/lib/sha512.c b/lib/sha512.c index 8a6dd4e83..1d3471f20 100644 --- a/lib/sha512.c +++ b/lib/sha512.c @@ -32,6 +32,12 @@ #include <stdlib.h> #include <string.h> +#include <sys/socket.h> + +#ifdef AF_ALG +# include "af_alg.h" +#endif + #if USE_UNLOCKED_IO # include "unlocked-io.h" #endif @@ -185,8 +191,20 @@ sha512_stream (FILE *stream, void *resblock) { struct sha512_ctx ctx; size_t sum; + char *buffer; - char *buffer = malloc (BLOCKSIZE + 72); +#ifdef AF_ALG + int ret; + + ret = afalg_stream(stream, resblock, "sha512", SHA512_DIGEST_SIZE); + if (!ret) + return 0; + + if (ret == -EIO) + return 1; +#endif + + buffer = malloc (BLOCKSIZE + 72); if (!buffer) return 1; @@ -256,8 +274,20 @@ sha384_stream (FILE *stream, void *resblock) { struct sha512_ctx ctx; size_t sum; + char *buffer; + +#ifdef AF_ALG + int ret; + + ret = afalg_stream(stream, resblock, "sha384", SHA384_DIGEST_SIZE); + if (!ret) + return 0; + + if (ret == -EIO) + return 1; +#endif - char *buffer = malloc (BLOCKSIZE + 72); + buffer = malloc (BLOCKSIZE + 72); if (!buffer) return 1; diff --git a/modules/crypto/sha512 b/modules/crypto/sha512 index 4c97604cd..feefbf8f8 100644 --- a/modules/crypto/sha512 +++ b/modules/crypto/sha512 @@ -5,6 +5,8 @@ Files: lib/gl_openssl.h lib/sha512.h lib/sha512.c +lib/af_alg.h +lib/af_alg.c m4/gl-openssl.m4 m4/sha512.m4 @@ -18,7 +20,7 @@ configure.ac: gl_SHA512 Makefile.am: -lib_SOURCES += sha512.c +lib_SOURCES += sha512.c af_alg.c Include: "sha512.h" -- 2.14.3