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
commit866437fa873a62c35bc84aad821343cd9fbf377e (patch)
tree5959cfa4a6b09bcf5f4d6af50d2dbebfba1f46f3
parent03e17022ef1117321cd3898e7282f396692d824a (diff)
downloadprosody-866437fa873a62c35bc84aad821343cd9fbf377e.tar.gz
prosody-866437fa873a62c35bc84aad821343cd9fbf377e.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;