aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--util/sasl/plain.lua11
1 files changed, 10 insertions, 1 deletions
diff --git a/util/sasl/plain.lua b/util/sasl/plain.lua
index 43bb239f..6369face 100644
--- a/util/sasl/plain.lua
+++ b/util/sasl/plain.lua
@@ -32,6 +32,11 @@ plain-test:
function(username, realm, password)
return true or false, state;
end
+
+plain-hashed:
+ function(username, realm)
+ return hashed_password, hash_function, state;
+ end
]]
local function plain(self, message)
@@ -61,6 +66,10 @@ local function plain(self, message)
if correct_password == password then correct = true; else correct = false; end
elseif self.profile.plain_test then
correct, state = self.profile.plain_test(authentication, self.realm, password);
+ elseif self.profile.plain_hashed then
+ local hashed_password, hash_f;
+ hashed_password, hash_f, state = self.profile.plain_hashed(authentication, self.realm);
+ if hashed_password == hash_f(password) then correct = true; else correct = false; end
end
self.username = authentication
@@ -76,7 +85,7 @@ local function plain(self, message)
end
function init(registerMechanism)
- registerMechanism("PLAIN", {"plain", "plain_test"}, plain);
+ registerMechanism("PLAIN", {"plain", "plain_test", "plain_hashed"}, plain);
end
return _M;