commit f7b9b38: [Minor] Add common selectors functions

Vsevolod Stakhov vsevolod at highsecure.ru
Thu Apr 30 11:14:17 UTC 2020


Author: Vsevolod Stakhov
Date: 2020-04-30 12:11:57 +0100
URL: https://github.com/rspamd/rspamd/commit/f7b9b38901fe7623006f0c8dd525d3ec5b07f56b (HEAD -> master)

[Minor] Add common selectors functions

---
 lualib/lua_selectors/common.lua | 51 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/lualib/lua_selectors/common.lua b/lualib/lua_selectors/common.lua
new file mode 100644
index 000000000..e55bab84e
--- /dev/null
+++ b/lualib/lua_selectors/common.lua
@@ -0,0 +1,51 @@
+--[[
+Copyright (c) 2020, Vsevolod Stakhov <vsevolod at highsecure.ru>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+]]--
+
+local ts = require("tableshape").types
+local exports = {}
+
+local function digest_schema()
+  return {ts.one_of{'hex', 'base32', 'bleach32', 'rbase32', 'base64'}:is_optional(),
+          ts.one_of{'blake2', 'sha256', 'sha1', 'sha512', 'md5'}:is_optional()}
+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
+
+  if encoding == 'hex' then
+    s = h:hex()
+  elseif encoding == 'base32' then
+    s = h:base32()
+  elseif encoding == 'bleach32' then
+    s = h:base32('bleach')
+  elseif encoding == 'rbase32' then
+    s = h:base32('rfc')
+  elseif encoding == 'base64' then
+    s = h:base64()
+  end
+
+  return s
+end
+
+exports.create_digest = create_digest
+
+return exports
\ No newline at end of file


More information about the Commits mailing list