mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Siphash-2-4 is now our hash in nearly all cases.
I've made an exception for cases where I'm sure that users can't influence the inputs. This is likely to cause a slowdown somewhere, but it's safer to siphash everything and *then* look for cases to optimize. This patch doesn't actually get us any _benefit_ from siphash yet, since we don't really randomize the key at any point.
This commit is contained in:
@@ -1004,7 +1004,7 @@ strmap_entries_eq(const strmap_entry_t *a, const strmap_entry_t *b)
|
||||
static INLINE unsigned int
|
||||
strmap_entry_hash(const strmap_entry_t *a)
|
||||
{
|
||||
return ht_string_hash(a->key);
|
||||
return (unsigned) siphash24g(a->key, strlen(a->key));
|
||||
}
|
||||
|
||||
/** Helper: compare digestmap_entry_t objects by key value. */
|
||||
@@ -1018,13 +1018,7 @@ digestmap_entries_eq(const digestmap_entry_t *a, const digestmap_entry_t *b)
|
||||
static INLINE unsigned int
|
||||
digestmap_entry_hash(const digestmap_entry_t *a)
|
||||
{
|
||||
#if SIZEOF_INT != 8
|
||||
const uint32_t *p = (const uint32_t*)a->key;
|
||||
return p[0] ^ p[1] ^ p[2] ^ p[3] ^ p[4];
|
||||
#else
|
||||
const uint64_t *p = (const uint64_t*)a->key;
|
||||
return p[0] ^ p[1];
|
||||
#endif
|
||||
return (unsigned) siphash24g(a->key, DIGEST_LEN);
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(strmap_impl, strmap_entry_t, node, strmap_entry_hash,
|
||||
|
||||
Reference in New Issue
Block a user