util.sasl.plain: Adding plain_hashed authentication backend support.
authorTobias Markmann <tm@ayena.de>
Sun, 28 Feb 2010 21:50:25 +0000 (22:50 +0100)
committerTobias Markmann <tm@ayena.de>
Sun, 28 Feb 2010 21:50:25 +0000 (22:50 +0100)
util/sasl/plain.lua

index 43bb239f4900dd5aaa3b1c5eeaca450696c8c4b3..6369face2713cf53f1aca9cd0b2726e51aed7a94 100644 (file)
@@ -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;