Files
2026-07-13 12:32:21 +08:00

31 lines
881 B
Lua

-- Module to hash the basic-auth credentials password field
local sha1 = require "resty.sha1"
local to_hex = require "resty.string".to_hex
local assert = assert
local ngx_null = ngx.null
--- Salt the password
-- Password is salted with the credential's consumer_id (long enough, unique)
-- @param credential The basic auth credential table
local function salt_password(consumer_id, password)
if password == nil or password == ngx_null then
return consumer_id
end
return password .. consumer_id
end
return {
--- Hash the password field credential table
-- @param credential The basic auth credential table
-- @return hash of the salted credential's password
hash = function(consumer_id, password)
local salted = salt_password(consumer_id, password)
local digest = sha1:new()
assert(digest:update(salted))
return to_hex(digest:final())
end
}