Use AF_ALG for sha224 and sha256 too

Signed-off-by: Matteo Croce <mcr...@redhat.com>
---
 lib/sha256.c          | 26 ++++++++++++++++++++++++--
 modules/crypto/sha256 |  5 ++++-
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/lib/sha256.c b/lib/sha256.c
index 85405b20f..566c24a43 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -36,6 +36,8 @@
 # include "unlocked-io.h"
 #endif
 
+#include "af_alg.h"
+
 #ifdef WORDS_BIGENDIAN
 # define SWAP(n) (n)
 #else
@@ -178,7 +180,17 @@ sha256_stream (FILE *stream, void *resblock)
   struct sha256_ctx ctx;
   size_t sum;
 
-  char *buffer = malloc (BLOCKSIZE + 72);
+  int ret;
+  char *buffer;
+
+  ret = afalg_stream(stream, resblock, "sha256", SHA256_DIGEST_SIZE);
+  if (!ret)
+      return 0;
+
+  if (ret == -EIO)
+      return 1;
+
+  buffer = malloc (BLOCKSIZE + 72);
   if (!buffer)
     return 1;
 
@@ -249,7 +261,17 @@ sha224_stream (FILE *stream, void *resblock)
   struct sha256_ctx ctx;
   size_t sum;
 
-  char *buffer = malloc (BLOCKSIZE + 72);
+  int ret;
+  char *buffer;
+
+  ret = afalg_stream(stream, resblock, "sha224", SHA224_DIGEST_SIZE);
+  if (!ret)
+      return 0;
+
+  if (ret == -EIO)
+      return 1;
+
+  buffer = malloc (BLOCKSIZE + 72);
   if (!buffer)
     return 1;
 
diff --git a/modules/crypto/sha256 b/modules/crypto/sha256
index 37fabfd90..e27f88d79 100644
--- a/modules/crypto/sha256
+++ b/modules/crypto/sha256
@@ -5,6 +5,8 @@ Files:
 lib/gl_openssl.h
 lib/sha256.h
 lib/sha256.c
+lib/af_alg.h
+lib/af_alg.c
 m4/gl-openssl.m4
 m4/sha256.m4
 
@@ -17,10 +19,11 @@ configure.ac:
 gl_SHA256
 
 Makefile.am:
-lib_SOURCES += sha256.c
+lib_SOURCES += sha256.c af_alg.c
 
 Include:
 "sha256.h"
+"af_alg.h"
 
 Link:
 $(LIB_CRYPTO)
-- 
2.14.3


Reply via email to