]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Lua_util: Add table_digest function
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 5 Jul 2019 12:55:12 +0000 (13:55 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 5 Jul 2019 12:55:12 +0000 (13:55 +0100)
lualib/lua_util.lua

index 7092aa3de90c0152d5fb4300712cc6875e136a46..432f55c6aae0be38c7022f478bd33439f11a3348 100644 (file)
@@ -1090,4 +1090,26 @@ exports.distance_sorted = function(t1, t2)
   return ndiff
 end
 
+---[[[
+-- @function lua_util.table_digest(t)
+-- Returns hash of all values if t[1] is string or all keys otherwise
+-- @param {table} t input array or map
+-- @return {string} base32 representation of blake2b hash of all strings
+--]]]
+exports.table_digest = function(t)
+  local cr = require "rspamd_cryptobox_hash"
+  local h = cr.create()
+
+  if t[1] then
+    for _,e in ipairs(t) do
+      h:update(tostring(e))
+    end
+  else
+    for k,_ in pairs(t) do
+      h:update(k)
+    end
+  end
+ return h:base32()
+end
+
 return exports