aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2010-02-28 22:50:25 +0100
committerTobias Markmann <tm@ayena.de>2010-02-28 22:50:25 +0100
commit965aa9476a77678ed1a7c2ea58954eebd6c6bb9b (patch)
treee9b1cd6380d404bde63921b69cae8cd5de11c755
parentceb748bd96b32e76092518c302cb62452508cbdb (diff)
downloadprosody-965aa9476a77678ed1a7c2ea58954eebd6c6bb9b.tar.gz
prosody-965aa9476a77678ed1a7c2ea58954eebd6c6bb9b.zip
util.sasl.plain: Adding plain_hashed authentication backend support.
-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;