util.sasl.plain: Adding plain_hashed authentication backend support.

Sun, 28 Feb 2010 22:50:25 +0100

author
Tobias Markmann <tm@ayena.de>
date
Sun, 28 Feb 2010 22:50:25 +0100
changeset 2994
b8448e181487
parent 2993
06d06fdd190b
child 2995
175002d404b8

util.sasl.plain: Adding plain_hashed authentication backend support.

util/sasl/plain.lua file | annotate | diff | comparison | revisions
--- a/util/sasl/plain.lua	Sun Feb 28 22:42:53 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;

mercurial