From 805717673c1277e7f6783b4f6e6827741c650619 Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Sun, 7 Aug 2016 09:46:01 -0500 Subject: [PATCH 1/2] Support ANONYMOUS SASL --- .../conversations/crypto/sasl/Anonymous.java | 28 +++++++++++++++++++ .../conversations/xmpp/XmppConnection.java | 3 ++ 2 files changed, 31 insertions(+) create mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Anonymous.java diff --git a/src/main/java/eu/siacs/conversations/crypto/sasl/Anonymous.java b/src/main/java/eu/siacs/conversations/crypto/sasl/Anonymous.java new file mode 100644 index 000000000..4672bc1ff --- /dev/null +++ b/src/main/java/eu/siacs/conversations/crypto/sasl/Anonymous.java @@ -0,0 +1,28 @@ +package eu.siacs.conversations.crypto.sasl; + +import java.security.SecureRandom; + +import eu.siacs.conversations.entities.Account; +import eu.siacs.conversations.xml.TagWriter; + +public class Anonymous extends SaslMechanism { + + public Anonymous(TagWriter tagWriter, Account account, SecureRandom rng) { + super(tagWriter, account, rng); + } + + @Override + public int getPriority() { + return 0; + } + + @Override + public String getMechanism() { + return "ANONYMOUS"; + } + + @Override + public String getClientFirstMessage() { + return ""; + } +} diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 964444af6..8ff02e464 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -55,6 +55,7 @@ import javax.net.ssl.X509TrustManager; import de.duenndns.ssl.MemorizingTrustManager; import eu.siacs.conversations.Config; import eu.siacs.conversations.crypto.XmppDomainVerifier; +import eu.siacs.conversations.crypto.sasl.Anonymous; import eu.siacs.conversations.crypto.sasl.DigestMd5; import eu.siacs.conversations.crypto.sasl.External; import eu.siacs.conversations.crypto.sasl.Plain; @@ -841,6 +842,8 @@ public class XmppConnection implements Runnable { saslMechanism = new Plain(tagWriter, account); } else if (mechanisms.contains("DIGEST-MD5")) { saslMechanism = new DigestMd5(tagWriter, account, mXmppConnectionService.getRNG()); + } else if (mechanisms.contains("ANONYMOUS")) { + saslMechanism = new Anonymous(tagWriter, account, mXmppConnectionService.getRNG()); } if (saslMechanism != null) { final JSONObject keys = account.getKeys(); From 1a0b538166134963fcb3a250caa78a7b625d6266 Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Mon, 12 Sep 2016 11:33:36 -0500 Subject: [PATCH 2/2] Use JID returned by the server during bind Not just the resourcepart --- src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 8ff02e464..fca5c5667 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -981,7 +981,7 @@ public class XmppConnection implements Runnable { final Element jid = bind.findChild("jid"); if (jid != null && jid.getContent() != null) { try { - account.setResource(Jid.fromString(jid.getContent()).getResourcepart()); + account.setJid(Jid.fromString(jid.getContent())); if (streamFeatures.hasChild("session") && !streamFeatures.findChild("session").hasChild("optional")) { sendStartSession();