changeset 39314:63b59e9dcbd7

sha256sum: use kernel crypto API Use AF_ALG for sha224 and sha256 too Signed-off-by: Matteo Croce <mcroce@redhat.com>
author Matteo Croce <mcroce@redhat.com>
date Sat, 28 Apr 2018 15:32:56 +0200
parents 6b0fda728c9b
children a54943015491
files ChangeLog lib/sha256.c modules/crypto/sha256
diffstat 3 files changed, 44 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Apr 28 15:32:55 2018 +0200
+++ b/ChangeLog	Sat Apr 28 15:32:56 2018 +0200
@@ -1,3 +1,12 @@
+2018-04-28  Matteo Croce  <mcroce@redhat.com>
+
+	sha256sum: Use AF_ALG when available.
+	* lib/sha256.c: Include af_alg.h.
+	(sha256_stream, sha224_stream): Use afalg_stream when available.
+	* modules/crypto/sha256 (Files): Add the af_alg files.
+	(configure.ac): Invoke gl_LINUX_IF_ALG_H.
+	(Makefile.am): Add af_alg.c.
+
 2018-04-28  Matteo Croce  <mcroce@redhat.com>
 
 	sha1sum: Use AF_ALG when available.
--- a/lib/sha256.c	Sat Apr 28 15:32:55 2018 +0200
+++ b/lib/sha256.c	Sat Apr 28 15:32:56 2018 +0200
@@ -32,6 +32,10 @@
 #include <stdlib.h>
 #include <string.h>
 
+#ifdef HAVE_LINUX_IF_ALG_H
+# include "af_alg.h"
+#endif
+
 #if USE_UNLOCKED_IO
 # include "unlocked-io.h"
 #endif
@@ -177,8 +181,20 @@
 {
   struct sha256_ctx ctx;
   size_t sum;
+  char *buffer;
 
-  char *buffer = malloc (BLOCKSIZE + 72);
+#ifdef HAVE_LINUX_IF_ALG_H
+  int ret;
+
+  ret = afalg_stream(stream, resblock, "sha256", SHA256_DIGEST_SIZE);
+  if (!ret)
+      return 0;
+
+  if (ret == -EIO)
+      return 1;
+#endif
+
+  buffer = malloc (BLOCKSIZE + 72);
   if (!buffer)
     return 1;
 
@@ -248,8 +264,20 @@
 {
   struct sha256_ctx ctx;
   size_t sum;
+  char *buffer;
 
-  char *buffer = malloc (BLOCKSIZE + 72);
+#ifdef HAVE_LINUX_IF_ALG_H
+  int ret;
+
+  ret = afalg_stream(stream, resblock, "sha224", SHA224_DIGEST_SIZE);
+  if (!ret)
+      return 0;
+
+  if (ret == -EIO)
+      return 1;
+#endif
+
+  buffer = malloc (BLOCKSIZE + 72);
   if (!buffer)
     return 1;
 
--- a/modules/crypto/sha256	Sat Apr 28 15:32:55 2018 +0200
+++ b/modules/crypto/sha256	Sat Apr 28 15:32:56 2018 +0200
@@ -5,8 +5,11 @@
 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
+m4/linux-if-alg.m4
 
 Depends-on:
 extern-inline
@@ -15,9 +18,10 @@
 
 configure.ac:
 gl_SHA256
+gl_LINUX_IF_ALG_H
 
 Makefile.am:
-lib_SOURCES += sha256.c
+lib_SOURCES += sha256.c af_alg.c
 
 Include:
 "sha256.h"