summaryrefslogtreecommitdiff
path: root/hv_func.h
diff options
context:
space:
mode:
Diffstat (limited to 'hv_func.h')
-rw-r--r--hv_func.h26
1 files changed, 16 insertions, 10 deletions
diff --git a/hv_func.h b/hv_func.h
index 7739638f23..ac130c7fbd 100644
--- a/hv_func.h
+++ b/hv_func.h
@@ -36,27 +36,31 @@
#if defined(PERL_HASH_FUNC_SIPHASH)
# define __PERL_HASH_FUNC "SIPHASH_2_4"
-# define __PERL_HASH_SEED_BYTES 16
-# define __PERL_HASH_STATE_BYTES 32
+# define __PERL_HASH_WORD_SIZE sizeof(U64)
+# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2)
+# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4)
# define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
# define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len))
#elif defined(PERL_HASH_FUNC_SIPHASH13)
# define __PERL_HASH_FUNC "SIPHASH_1_3"
-# define __PERL_HASH_SEED_BYTES 16
-# define __PERL_HASH_STATE_BYTES 32
+# define __PERL_HASH_WORD_SIZE sizeof(U64)
+# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2)
+# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4)
# define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
# define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(U8*)(str),(len))
#elif defined(PERL_HASH_FUNC_STADTX)
# define __PERL_HASH_FUNC "STADTX"
-# define __PERL_HASH_SEED_BYTES 16
-# define __PERL_HASH_STATE_BYTES 32
+# define __PERL_HASH_WORD_SIZE sizeof(U64)
+# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2)
+# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4)
# define __PERL_HASH_SEED_STATE(seed,state) stadtx_seed_state(seed,state)
# define __PERL_HASH_WITH_STATE(state,str,len) (U32)stadtx_hash_with_state((state),(U8*)(str),(len))
# include "stadtx_hash.h"
#elif defined(PERL_HASH_FUNC_ZAPHOD32)
# define __PERL_HASH_FUNC "ZAPHOD32"
-# define __PERL_HASH_SEED_BYTES 12
-# define __PERL_HASH_STATE_BYTES 12
+# define __PERL_HASH_WORD_SIZE sizeof(U32)
+# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 3)
+# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 3)
# define __PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state)
# define __PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len))
# include "zaphod32_hash.h"
@@ -87,8 +91,10 @@
#else
#define _PERL_HASH_FUNC "SBOX32_WITH_" __PERL_HASH_FUNC
-
-#define _PERL_HASH_SEED_BYTES ( __PERL_HASH_SEED_BYTES + (int)( 3 * sizeof(U32) ) )
+#define __PERL_HASH_SEED_roundup(x, y) ((((x)+((y)-1))/(y))*(y))
+#define _PERL_HASH_SEED_roundup(x) __PERL_HASH_SEED_roundup(x,__PERL_HASH_WORD_SIZE)
+/* note the 3 in the below code comes from the fact the seed to initialize the SBOX is 96 bits */
+#define _PERL_HASH_SEED_BYTES ( _PERL_HASH_SEED_roundup(__PERL_HASH_SEED_BYTES + (int)( 3 * sizeof(U32)) ) )
#define _PERL_HASH_STATE_BYTES \
( __PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) )