summaryrefslogtreecommitdiff
path: root/lib/md5.c
diff options
context:
space:
mode:
authorMatteo Croce <mcroce@redhat.com>2018-04-28 15:32:58 +0200
committerBruno Haible <bruno@clisp.org>2018-05-05 14:38:36 +0200
commita720fab2ad613883a2b877b3c81c38e0ae6aca24 (patch)
tree9d6fc13895a75f53adbe9dec058a51ccdb1e2577 /lib/md5.c
parent833bb2f5a5acc8d0958051acfe102f771ba89fc9 (diff)
downloadgnulib-a720fab2ad613883a2b877b3c81c38e0ae6aca24.tar.gz
md5sum: use kernel crypto API
Use AF_ALG for md5 too Signed-off-by: Matteo Croce <mcroce@redhat.com>
Diffstat (limited to 'lib/md5.c')
-rw-r--r--lib/md5.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/md5.c b/lib/md5.c
index 68d00a6c7e..307abbbe7a 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -32,6 +32,10 @@
#include <string.h>
#include <sys/types.h>
+#ifdef HAVE_LINUX_IF_ALG_H
+# include "af_alg.h"
+#endif
+
#if USE_UNLOCKED_IO
# include "unlocked-io.h"
#endif
@@ -142,8 +146,20 @@ md5_stream (FILE *stream, void *resblock)
{
struct md5_ctx ctx;
size_t sum;
+ char *buffer;
+
+#ifdef HAVE_LINUX_IF_ALG_H
+ int ret;
+
+ ret = afalg_stream(stream, resblock, "md5", MD5_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;