31 lines
881 B
Lua
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
|
|
}
|