Software /
code /
prosody
Comparison
plugins/mod_auth_internal_hashed.lua @ 3207:b350d9753804
mod_auth_internal_hashed: Store stored_key and server_key when setting a password.
author | Tobias Markmann <tm@ayena.de> |
---|---|
date | Tue, 08 Jun 2010 14:54:47 +0200 |
parent | 3205:2dcd826bbbc6 |
child | 3208:4b660bf61048 |
comparison
equal
deleted
inserted
replaced
3206:ff1d3f751da1 | 3207:b350d9753804 |
---|---|
51 | 51 |
52 if credentials.iteration_count == nil or credentials.salt == nil or string.len(credentials.salt) == 0 then | 52 if credentials.iteration_count == nil or credentials.salt == nil or string.len(credentials.salt) == 0 then |
53 return nil, "Auth failed. Stored salt and iteration count information is not complete."; | 53 return nil, "Auth failed. Stored salt and iteration count information is not complete."; |
54 end | 54 end |
55 | 55 |
56 if credentials.saltedPasswordSHA1 | |
57 | |
56 local valid, stored_key, server_key = getAuthenticationDatabaseSHA1(password, credentials.salt, credentials.iteration_count); | 58 local valid, stored_key, server_key = getAuthenticationDatabaseSHA1(password, credentials.salt, credentials.iteration_count); |
57 local stored_key_hex = stored_key:gsub(".", function (c) return ("%02x"):format(c:byte()); end); | 59 local stored_key_hex = stored_key:gsub(".", function (c) return ("%02x"):format(c:byte()); end); |
58 local server_key_hex = server_key:gsub(".", function (c) return ("%02x"):format(c:byte()); end); | 60 local server_key_hex = server_key:gsub(".", function (c) return ("%02x"):format(c:byte()); end); |
59 | 61 |
60 if valid and stored_key_hex == credentials.stored_key and server_key_hex == credentials.server_key_hex then | 62 if valid and stored_key_hex == credentials.stored_key and server_key_hex == credentials.server_key_hex then |
73 end | 75 end |
74 | 76 |
75 if account.salt == nil then | 77 if account.salt == nil then |
76 account.salt = generate_uuid(); | 78 account.salt = generate_uuid(); |
77 end | 79 end |
78 | 80 |
79 local valid, binpass = saltedPasswordSHA1(password, account.salt, account.iteration_count); | 81 local valid, stored_key, server_key = getAuthenticationDatabaseSHA1(password, credentials.salt, credentials.iteration_count); |
80 local hexpass = binpass:gsub(".", function (c) return ("%02x"):format(c:byte()); end); | 82 local stored_key_hex = stored_key:gsub(".", function (c) return ("%02x"):format(c:byte()); end); |
81 account.hashpass = hexpass; | 83 local server_key_hex = server_key:gsub(".", function (c) return ("%02x"):format(c:byte()); end); |
84 | |
85 account.stored_key = stored_key_hex | |
86 account.server_key = server_key_hex | |
82 | 87 |
83 account.password = nil; | 88 account.password = nil; |
84 return datamanager.store(username, host, "accounts", account); | 89 return datamanager.store(username, host, "accounts", account); |
85 end | 90 end |
86 return nil, "Account not available."; | 91 return nil, "Account not available."; |