util.sasl.*: Adjusting authentication provider names. All '-' replaced with '_'
authorTobias Markmann <tm@ayena.de>
Mon, 24 May 2010 16:15:16 +0000 (18:15 +0200)
committerTobias Markmann <tm@ayena.de>
Mon, 24 May 2010 16:15:16 +0000 (18:15 +0200)
util/sasl/digest-md5.lua
util/sasl/scram.lua

index 8986ca4567f3884be857d7c576df1950a96c10df..2837148ec4723270b92d11b30ac551299e230184 100644 (file)
@@ -32,13 +32,13 @@ module "digest-md5"
 --[[
 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
index 48536dff3079ed1ccf39b364ce80aa6b7d9fbc36..41c7a50a2a148a5789e4774573cd7011e8b25da0 100644 (file)
@@ -32,7 +32,8 @@ module "scram"
 --[[
 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 @@ local function validate_username(username)
        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 @@ local function scram_gen(hash_name, H_f, HMAC_f)
                                        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 @@ end
 
 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);