]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Selectors: Fix digests and add compatibility with blake2b used in C
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 30 Apr 2020 11:37:37 +0000 (12:37 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 30 Apr 2020 11:37:37 +0000 (12:37 +0100)
lualib/lua_selectors/common.lua
lualib/lua_selectors/extractors.lua

index e55bab84e68652b91133ce6251d4b110a6630212..cb2ffc37fdddd99e42efd7eb3038be21613c7857 100644 (file)
@@ -16,6 +16,9 @@ limitations under the License.
 
 local ts = require("tableshape").types
 local exports = {}
+local cr_hash = require 'rspamd_cryptobox_hash'
+
+local blake2b_key = cr_hash.create_specific('blake2'):update('rspamd'):bin()
 
 local function digest_schema()
   return {ts.one_of{'hex', 'base32', 'bleach32', 'rbase32', 'base64'}:is_optional(),
@@ -25,11 +28,18 @@ end
 exports.digest_schema = digest_schema
 
 local function create_digest(data, args)
-  local hash = require 'rspamd_cryptobox_hash'
+
   local encoding = args[1] or 'hex'
   local ht = args[2] or 'blake2'
-  local h = hash:create_specific(ht):update(data)
-  local s
+
+  local h, s
+
+  if ht == 'blake2' then
+    -- Hack to be compatible with various 'get_digest' methods
+    h = cr_hash.create_keyed(blake2b_key):update(data)
+  else
+    h = cr_hash.create_specific(ht):update(data)
+  end
 
   if encoding == 'hex' then
     s = h:hex()
index 11728c268c0b6d25938ff1bd06064a63c4761231..e0d6921352bc4ef48addd5903e1d8b624c7174c0 100644 (file)
@@ -134,12 +134,9 @@ uses any type by default)]],
     ['get_value'] = function(task, args)
       local parts = task:get_parts() or E
       local digests = {}
-
-      if #args > 0 then
-        for _,p in ipairs(parts) do
-          if p:get_filename() then
-            table.insert(digests, common.create_digest(p:get_content('raw_parsed'), args))
-          end
+      for _,p in ipairs(parts) do
+        if p:get_filename() then
+          table.insert(digests, common.create_digest(p:get_content('raw_parsed'), args))
         end
       end