about summary refs log tree commit diff
path: root/shared/nm-utils/nm-hash-utils.h
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2019-01-25 10:49:37 +0100
committerSebastien Bacher <seb128@ubuntu.com>2019-01-25 10:49:37 +0100
commit404ebe62622150e77e311777dff8617eb974e834 (patch)
treecc7f73d3e435d5b3ee85e2bef833e8de1fb133e3 /shared/nm-utils/nm-hash-utils.h
parent227c401a10a930af6fd5f123aef345fcd130d6aa (diff)
parent3626b425d1bc017fdc6f1ea0cfd329d1e1681641 (diff)
Merge remote-tracking branch 'salsa/upstream' into upstream
Diffstat (limited to 'shared/nm-utils/nm-hash-utils.h')
-rw-r--r--shared/nm-utils/nm-hash-utils.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/shared/nm-utils/nm-hash-utils.h b/shared/nm-utils/nm-hash-utils.h
index b7742e0f..b797fb75 100644
--- a/shared/nm-utils/nm-hash-utils.h
+++ b/shared/nm-utils/nm-hash-utils.h
@@ -57,6 +57,11 @@ nm_hash_update (NMHashState *state, const void *ptr, gsize n)
 	nm_assert (ptr);
 	nm_assert (n > 0);
 
+	/* Note: the data passed in here might be sensitive data (secrets),
+	 * that we should nm_explicty_zero() afterwards. However, since
+	 * we are using siphash24 with a random key, that is not really
+	 * necessary. Something to keep in mind, if we ever move away from
+	 * this hash implementation. */
 	c_siphash_append (&state->_state, ptr, n);
 }
 
@@ -168,7 +173,7 @@ nm_hash_update_mem (NMHashState *state, const void *ptr, gsize n)
 	 * instead. */
 	nm_hash_update (state, &n, sizeof (n));
 	if (n > 0)
-		c_siphash_append (&state->_state, ptr, n);
+		nm_hash_update (state, ptr, n);
 }
 
 static inline void
@@ -209,6 +214,15 @@ guint nm_direct_hash (gconstpointer str);
 guint nm_hash_str (const char *str);
 guint nm_str_hash (gconstpointer str);
 
+#define nm_hash_val(static_seed, val) \
+	({ \
+		NMHashState _h; \
+		\
+		nm_hash_init (&_h, static_seed); \
+		nm_hash_update_val (&_h, val); \
+		nm_hash_complete (&_h); \
+	})
+
 /*****************************************************************************/
 
 /* nm_pstr_*() are for hashing keys that are pointers to strings,