util.sasl.*: Adjusting authentication provider names. All '-' replaced with '_'

Mon, 24 May 2010 18:15:16 +0200

author
Tobias Markmann <tm@ayena.de>
date
Mon, 24 May 2010 18:15:16 +0200
changeset 3122
579f17b9f948
parent 3118
95ddd75ed3c5
child 3123
0f21abc745ef

util.sasl.*: Adjusting authentication provider names. All '-' replaced with '_'

util/sasl/digest-md5.lua file | annotate | diff | comparison | revisions
util/sasl/scram.lua file | annotate | diff | comparison | revisions
--- a/util/sasl/digest-md5.lua	Mon May 24 17:44:13 2010 +0200
+++ b/util/sasl/digest-md5.lua	Mon May 24 18:15:16 2010 +0200
@@ -32,13 +32,13 @@
 --[[
 Supported Authentication Backends
 
-digest-md5:
+digest_md5:
 	function(username, domain, realm, encoding) -- domain and realm are usually the same; for some broken
 												-- implementations it's not
 		return digesthash, state;
 	end
 
-digest-md5-test:
+digest_md5_test:
 	function(username, domain, realm, encoding, digesthash)
 		return true or false, state;
 	end
--- a/util/sasl/scram.lua	Mon May 24 17:44:13 2010 +0200
+++ b/util/sasl/scram.lua	Mon May 24 18:15:16 2010 +0200
@@ -32,7 +32,8 @@
 --[[
 Supported Authentication Backends
 
-scram-{MECH}:
+scram_{MECH}:
+	-- MECH being a standard hash name (like those at IANA's hash registry) with '-' replaced with '_'
 	function(username, realm)
 		return salted_password, iteration_count, salt, state;
 	end
@@ -92,6 +93,12 @@
 	return username;
 end
 
+local function hashprep( hashname ) 
+	local hash = hashname:lower()
+	hash = hash:gsub("-", "_")
+	return hash
+end
+
 function saltedPasswordSHA1(password, salt, iteration_count)
 	local salted_password
 	if type(password) ~= "string" or type(salt) ~= "string" or type(iteration_count) ~= "number" then
@@ -156,7 +163,7 @@
 					log("error", "Generating salted password failed. Reason: %s", self.state.salted_password);
 					return "failure", "temporary-auth-failure";
 				end
-			elseif self.profile["scram_"..hash_name] then
+			elseif self.profile["scram_"..hashprep(hash_name)] then
 				local salted_password, iteration_count, salt, state = self.profile["scram-"..hash_name](self.state.name, self.realm);
 				if state == nil then return "failure", "not-authorized"
 				elseif state == false then return "failure", "account-disabled" end
@@ -206,7 +213,7 @@
 
 function init(registerMechanism)
 	local function registerSCRAMMechanism(hash_name, hash, hmac_hash)
-		registerMechanism("SCRAM-"..hash_name, {"plain", "scram_"..(hash_name:lower())}, scram_gen(hash_name:lower(), hash, hmac_hash));
+		registerMechanism("SCRAM-"..hash_name, {"plain", "scram_"..(hashprep(hash_name))}, scram_gen(hash_name:lower(), hash, hmac_hash));
 	end
 
 	registerSCRAMMechanism("SHA-1", sha1, hmac_sha1);

mercurial