summaryrefslogtreecommitdiffstats
path: root/aconf/model/aaa.lua
diff options
context:
space:
mode:
Diffstat (limited to 'aconf/model/aaa.lua')
-rw-r--r--aconf/model/aaa.lua12
1 files changed, 9 insertions, 3 deletions
diff --git a/aconf/model/aaa.lua b/aconf/model/aaa.lua
index 982e5b3..e65b678 100644
--- a/aconf/model/aaa.lua
+++ b/aconf/model/aaa.lua
@@ -1,13 +1,14 @@
--[[
-Copyright (c) 2012-2016 Kaarle Ritvanen
+Copyright (c) 2012-2018 Kaarle Ritvanen
See LICENSE file for license details
--]]
local M = require('aconf.model')
local node = require('aconf.model.node')
local object = require('aconf.object')
+local map = require('aconf.util').map
-local digest = require('crypto').digest
+local digest = require('openssl.digest')
local conf_addr = '/json'..require('posix').getcwd()..'/config'
@@ -18,7 +19,12 @@ Role.permissions = M.Set{type=M.Reference{scope='../../../permissions'}}
local function hash_password(algorithm, salt, password)
- return algorithm..'$'..salt..'$'..digest(algorithm, salt..password)
+ return algorithm..'$'..salt..'$'..table.concat(
+ map(
+ function(b) return ('%02x'):format(b) end,
+ {string.byte(digest.new(algorithm):final(salt..password), 1, -1)}
+ )
+ )
end
local hash_pattern = '^(%w+)%$(%w+)%$%x+$'