do not accept fast token w/o channel binding for channel bound login

This commit is contained in:
Daniel Gultsch 2023-10-21 14:22:38 +02:00
parent 822f3f4d22
commit c44f4b102a
No known key found for this signature in database
GPG key ID: F43D18AD2A0982C2

View file

@ -65,6 +65,7 @@ import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.XmppDomainVerifier; import eu.siacs.conversations.crypto.XmppDomainVerifier;
import eu.siacs.conversations.crypto.axolotl.AxolotlService; import eu.siacs.conversations.crypto.axolotl.AxolotlService;
import eu.siacs.conversations.crypto.sasl.ChannelBinding; import eu.siacs.conversations.crypto.sasl.ChannelBinding;
import eu.siacs.conversations.crypto.sasl.ChannelBindingMechanism;
import eu.siacs.conversations.crypto.sasl.HashedToken; import eu.siacs.conversations.crypto.sasl.HashedToken;
import eu.siacs.conversations.crypto.sasl.SaslMechanism; import eu.siacs.conversations.crypto.sasl.SaslMechanism;
import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Account;
@ -826,10 +827,15 @@ public class XmppConnection implements Runnable {
tokenMechanism = null; tokenMechanism = null;
} }
if (tokenMechanism != null && !Strings.isNullOrEmpty(token)) { if (tokenMechanism != null && !Strings.isNullOrEmpty(token)) {
if (ChannelBinding.priority(tokenMechanism.channelBinding) >= ChannelBindingMechanism.getPriority(currentSaslMechanism)) {
this.account.setFastToken(tokenMechanism, token); this.account.setFastToken(tokenMechanism, token);
Log.d( Log.d(
Config.LOGTAG, Config.LOGTAG,
account.getJid().asBareJid() + ": storing hashed token " + tokenMechanism); account.getJid().asBareJid() + ": storing hashed token " + tokenMechanism);
} else {
Log.d(Config.LOGTAG,account.getJid().asBareJid()+": not accepting hashed token "+ tokenMechanism.name()+" for log in mechanism "+currentSaslMechanism.getMechanism());
this.account.resetFastToken();
}
} else if (this.hashTokenRequest != null) { } else if (this.hashTokenRequest != null) {
Log.w( Log.w(
Config.LOGTAG, Config.LOGTAG,