aboutsummaryrefslogtreecommitdiff
path: root/src/ext/csiphash.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext/csiphash.c')
-rw-r--r--src/ext/csiphash.c42
1 files changed, 7 insertions, 35 deletions
diff --git a/src/ext/csiphash.c b/src/ext/csiphash.c
index 49a6dc4778..0427c87950 100644
--- a/src/ext/csiphash.c
+++ b/src/ext/csiphash.c
@@ -35,41 +35,7 @@
#include "util.h"
/* for memcpy */
#include <string.h>
-
-#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
- __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-# define _le64toh(x) ((uint64_t)(x))
-#elif defined(_WIN32)
-/* Windows is always little endian, unless you're on xbox360
- http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx */
-# define _le64toh(x) ((uint64_t)(x))
-#elif defined(__APPLE__)
-# include <libkern/OSByteOrder.h>
-# define _le64toh(x) OSSwapLittleToHostInt64(x)
-#elif defined(sun) || defined(__sun)
-# include <sys/byteorder.h>
-# define _le64toh(x) LE_64(x)
-
-#else
-
-/* See: http://sourceforge.net/p/predef/wiki/Endianness/ */
-# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
-# include <sys/endian.h>
-# else
-# include <endian.h>
-# endif
-# if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
- __BYTE_ORDER == __LITTLE_ENDIAN
-# define _le64toh(x) ((uint64_t)(x))
-# else
-# if defined(__OpenBSD__)
-# define _le64toh(x) letoh64(x)
-# else
-# define _le64toh(x) le64toh(x)
-# endif
-# endif
-
-#endif
+#include "byteorder.h"
#define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
@@ -157,3 +123,9 @@ void siphash_set_global_key(const struct sipkey *key)
the_siphash_key.k1 = key->k1;
the_siphash_key_is_set = 1;
}
+
+void siphash_unset_global_key(void)
+{
+ the_siphash_key_is_set = 0;
+ memset(&the_siphash_key, 0, sizeof(the_siphash_key));
+}