diff options
Diffstat (limited to 'aconf/model/aaa.lua')
-rw-r--r-- | aconf/model/aaa.lua | 12 |
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+$' |