From d205e6ff1ff32c075afea8b3189edc5f3c0c1ab0 Mon Sep 17 00:00:00 2001 From: Badlop Date: Mon, 27 Sep 2021 17:05:42 +0200 Subject: Support old scram records before xmpp's 651050f9 and ejabberd's e5cad9be6 (#3680) --- src/ejabberd_auth_sql.erl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/ejabberd_auth_sql.erl') diff --git a/src/ejabberd_auth_sql.erl b/src/ejabberd_auth_sql.erl index 1f7106c59..e51bf276c 100644 --- a/src/ejabberd_auth_sql.erl +++ b/src/ejabberd_auth_sql.erl @@ -299,6 +299,20 @@ export(_Server) -> ["username=%(LUser)s", "server_host=%(LServer)s", "password=%(Password)s"])]; + (Host, #passwd{us = {LUser, LServer}, + password = {scram, StoredKey1, ServerKey, Salt, IterationCount}}) + when LServer == Host -> + Hash = sha, + StoredKey = scram_hash_encode(Hash, StoredKey1), + [?SQL("delete from users where username=%(LUser)s and %(LServer)H;"), + ?SQL_INSERT( + "users", + ["username=%(LUser)s", + "server_host=%(LServer)s", + "password=%(StoredKey)s", + "serverkey=%(ServerKey)s", + "salt=%(Salt)s", + "iterationcount=%(IterationCount)d"])]; (Host, #passwd{us = {LUser, LServer}, password = #scram{} = Scram}) when LServer == Host -> StoredKey = scram_hash_encode(Scram#scram.hash, Scram#scram.storedkey), -- cgit v1.2.3 From 15d3ebb8425cc545810e882e0fe8cbf8cc276fc3 Mon Sep 17 00:00:00 2001 From: Badlop Date: Wed, 17 Nov 2021 16:50:14 +0100 Subject: Fix Dialyzer warning, old passwd tuple don't match current tuple definition --- src/ejabberd_auth_sql.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/ejabberd_auth_sql.erl') diff --git a/src/ejabberd_auth_sql.erl b/src/ejabberd_auth_sql.erl index e51bf276c..50cc1902e 100644 --- a/src/ejabberd_auth_sql.erl +++ b/src/ejabberd_auth_sql.erl @@ -299,8 +299,8 @@ export(_Server) -> ["username=%(LUser)s", "server_host=%(LServer)s", "password=%(Password)s"])]; - (Host, #passwd{us = {LUser, LServer}, - password = {scram, StoredKey1, ServerKey, Salt, IterationCount}}) + (Host, {passwd, {LUser, LServer}, + {scram, StoredKey1, ServerKey, Salt, IterationCount}}) when LServer == Host -> Hash = sha, StoredKey = scram_hash_encode(Hash, StoredKey1), -- cgit v1.2.3