]> git.tuebingen.mpg.de Git - osl.git/blobdiff - hash.h
Version 3 tables.
[osl.git] / hash.h
diff --git a/hash.h b/hash.h
index 03b45e04db71965dd70dfce56eafce6ad83f163e..585ef4e318c6963c2d071602636c272bad9e02d7 100644 (file)
--- a/hash.h
+++ b/hash.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2008 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2009 Andre Noll <maan@tuebingen.mpg.de>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
 /** hash arrays are always unsigned char. */
 #define HASH_TYPE unsigned char
 
-#include "sha1.h"
-/** We use openssl's sha1 implementation. */
-#define hash_function sha1_hash
+/** Size of the hash value in bytes. */
+#define HASH_SIZE 20
+
+void sha1_hash(const char *data, unsigned long len, unsigned char *result);
+void sha3_hash(const char *data, unsigned long len, unsigned char *result);
+void sha256_hash(const char *data, unsigned long len, unsigned char *result);
+
+static inline void hash_function(uint8_t table_version, const char *data,
+               unsigned long len, unsigned char *result)
+{
+       switch (table_version) {
+       case 1: return sha1_hash(data, len, result);
+       case 2: return sha3_hash(data, len, result);
+       case 3: return sha256_hash(data, len, result);
+       }
+       assert(0);
+}
 
 /**
  * Compare two hashes.