# HG changeset patch # User Tobias Markmann # Date 1267393825 -3600 # Node ID 66046a78e9c8ce7d1b13200dc9720bae582ff0c8 # Parent d32935878661c7c41e8db43985c5a8e06c5e41cb util.sasl.plain: Adding plain_hashed authentication backend support. diff -r d32935878661 -r 66046a78e9c8 util/sasl/plain.lua --- a/util/sasl/plain.lua Sun Feb 28 22:32:12 2010 +0100 +++ b/util/sasl/plain.lua Sun Feb 28 22:50:25 2010 +0100 @@ -32,6 +32,11 @@ 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 @@ 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 @@ end function init(registerMechanism) - registerMechanism("PLAIN", {"plain", "plain_test"}, plain); + registerMechanism("PLAIN", {"plain", "plain_test", "plain_hashed"}, plain); end return _M;