# HG changeset patch # User Kim Alvefur # Date 1440054855 -7200 # Node ID 509b70437035464a1b923670e1e06ce872c100e5 # Parent ef22c17cc24d75fb7cb71daac3e2028544b6e57b ejabberd2prosody: Support password stored as SCRAM hashes diff -r ef22c17cc24d -r 509b70437035 tools/ejabberd2prosody.lua --- a/tools/ejabberd2prosody.lua Mon Aug 10 22:13:02 2015 +0200 +++ b/tools/ejabberd2prosody.lua Thu Aug 20 09:14:15 2015 +0200 @@ -72,7 +72,22 @@ print("["..(err or "success").."] vCard: "..node.."@"..host); end function password(node, host, password) - local ret, err = dm.store(node, host, "accounts", {password = password}); + local data = {}; + if type(password) == "string" then + data.password = password; + elseif type(password) == "table" and password[1] == "scram" then + local unb64 = require"mime".unb64; + local function hex(s) + return s:gsub(".", function (c) + return ("%02x"):format(c:byte()); + end); + end + data.stored_key = hex(unb64(password[2])); + data.server_key = hex(unb64(password[3])); + data.salt = unb64(password[4]); + data.iteration_count = password[5]; + end + local ret, err = dm.store(node, host, "accounts", data); print("["..(err or "success").."] accounts: "..node.."@"..host); end function roster(node, host, jid, item)