changeset 6349:c195d0c75e25

2005-10-08 Simon Josefsson <jas@extundo.com> * gc.h: Add gc_hash and gc_hash_buffer. * gc-gnulib.c (gc_hash_buffer): Add. Reorder #include's. * gc-libgcrypt.c (gc_hash_buffer): Add.
author Simon Josefsson <simon@josefsson.org>
date Sat, 08 Oct 2005 09:26:59 +0000
parents 55961a93440c
children 2ad6a124d96e
files lib/gc-gnulib.c lib/gc-libgcrypt.c lib/gc.h
diffstat 3 files changed, 58 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lib/gc-gnulib.c	Sat Oct 08 08:33:07 2005 +0000
+++ b/lib/gc-gnulib.c	Sat Oct 08 09:26:59 2005 +0000
@@ -24,11 +24,12 @@
 # include <config.h>
 #endif
 
-#include <stdlib.h>
-
 /* Get prototype. */
 #include <gc.h>
 
+#include <stdlib.h>
+#include <string.h>
+
 /* For randomize. */
 #include <unistd.h>
 #include <sys/types.h>
@@ -36,7 +37,8 @@
 #include <fcntl.h>
 #include <errno.h>
 
-#include <string.h>
+#include "md5.h"
+#include "hmac.h"
 
 int
 gc_init (void)
@@ -133,7 +135,23 @@
   return;
 }
 
-#include "md5.h"
+/* Hashes. */
+
+int
+gc_hash_buffer (int hash, const void *in, size_t inlen, char *resbuf)
+{
+  switch (hash)
+    {
+    case GC_MD5:
+      md5_buffer (in, inlen, resbuf);
+      break;
+
+    default:
+      return GC_INVALID_HASH;
+    }
+
+  return GC_OK;
+}
 
 int
 gc_md5 (const void *in, size_t inlen, void *resbuf)
@@ -142,8 +160,6 @@
   return 0;
 }
 
-#include "hmac.h"
-
 int
 gc_hmac_md5 (const void *key, size_t keylen,
 	     const void *in, size_t inlen, char *resbuf)
--- a/lib/gc-libgcrypt.c	Sat Oct 08 08:33:07 2005 +0000
+++ b/lib/gc-libgcrypt.c	Sat Oct 08 09:26:59 2005 +0000
@@ -94,6 +94,28 @@
 			       func_realloc, func_free);
 }
 
+/* Hashes. */
+
+int
+gc_hash_buffer (int hash, const void *in, size_t inlen, char *resbuf)
+{
+  int gcryalg;
+
+  switch (hash)
+    {
+    case GC_MD5:
+      gcryalg = GCRY_MD_MD5;
+      break;
+
+    default:
+      return GC_INVALID_HASH;
+    }
+
+  gcry_md_hash_buffer (gcryalg, resbuf, in, inlen);
+
+  return GC_OK;
+}
+
 /* One-call interface. */
 
 int
--- a/lib/gc.h	Sat Oct 08 08:33:07 2005 +0000
+++ b/lib/gc.h	Sat Oct 08 09:26:59 2005 +0000
@@ -24,8 +24,6 @@
 /* Get size_t. */
 # include <stddef.h>
 
-#define GC_MD5_DIGEST_SIZE 16
-
 enum Gc_rc
   {
     GC_OK = 0,
@@ -40,6 +38,16 @@
   };
 typedef enum Gc_rc Gc_rc;
 
+/* Hash types. */
+enum Gc_hash
+  {
+    GC_MD5
+  };
+typedef enum Gc_hash Gc_hash;
+
+#define GC_MD5_DIGEST_SIZE 16
+
+/* Call before respectively after any other functions. */
 extern int gc_init (void);
 extern void gc_done (void);
 
@@ -54,6 +62,10 @@
 			       gc_realloc_t func_realloc,
 			       gc_free_t func_free);
 
+/* Hashes. */
+extern int
+gc_hash_buffer (int hash, const void *in, size_t inlen, char *out);
+
 /* One-call interface. */
 extern int gc_md5 (const void *in, size_t inlen, void *resbuf);
 extern int gc_hmac_md5 (const void *key, size_t keylen,