Changeset

3093:66046a78e9c8

util.sasl.plain: Adding plain_hashed authentication backend support.
author Tobias Markmann <tm@ayena.de>
date Sun, 28 Feb 2010 22:50:25 +0100
parents 3092:d32935878661
children 3094:5f625411b463
files util/sasl/plain.lua
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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;