diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2017-01-26 19:42:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-26 19:42:57 +0100 |
commit | 7651700c2ad11726cf630921c0bcb150b52491a2 (patch) | |
tree | 7c94c13c034546ec5264fd8c49cd88a8e188bd4d /src/main/java/eu | |
parent | e4524e2c7ba2d099a71bb5682a55164534adcaa2 (diff) | |
parent | eea1bc809068fdd091a634b84bdfdcb9b31c7cb8 (diff) |
Merge branch 'master' into patch-1
Diffstat (limited to 'src/main/java/eu')
4 files changed, 31 insertions, 3 deletions
diff --git a/src/main/java/eu/siacs/conversations/crypto/OtrService.java b/src/main/java/eu/siacs/conversations/crypto/OtrService.java index 3663cd3b..55f4ebb5 100644 --- a/src/main/java/eu/siacs/conversations/crypto/OtrService.java +++ b/src/main/java/eu/siacs/conversations/crypto/OtrService.java @@ -194,8 +194,9 @@ public class OtrService extends OtrCryptoEngineImpl implements OtrEngineHost { } catch (final InvalidJidException ignored) { } - packet.setType(MessagePacket.TYPE_CHAT); + packet.addChild("encryption","urn:xmpp:eme:0") + .setAttribute("namespace","urn:xmpp:otr:0"); account.getXmppConnection().sendMessagePacket(packet); } diff --git a/src/main/java/eu/siacs/conversations/generator/IqGenerator.java b/src/main/java/eu/siacs/conversations/generator/IqGenerator.java index cb9ffd96..8393a011 100644 --- a/src/main/java/eu/siacs/conversations/generator/IqGenerator.java +++ b/src/main/java/eu/siacs/conversations/generator/IqGenerator.java @@ -10,12 +10,15 @@ import org.whispersystems.libaxolotl.ecc.ECPublicKey; import org.whispersystems.libaxolotl.state.PreKeyRecord; import org.whispersystems.libaxolotl.state.SignedPreKeyRecord; +import java.math.BigInteger; +import java.nio.ByteBuffer; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.TimeZone; +import java.util.UUID; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; @@ -315,7 +318,7 @@ public class IqGenerator extends AbstractGenerator { IqPacket packet = new IqPacket(IqPacket.TYPE.GET); packet.setTo(host); Element request = packet.addChild("request", Xmlns.HTTP_UPLOAD); - request.addChild("filename").setContent(file.getName()); + request.addChild("filename").setContent(convertFilename(file.getName())); request.addChild("size").setContent(String.valueOf(file.getExpectedSize())); if (mime != null) { request.addChild("content-type").setContent(mime); @@ -323,6 +326,23 @@ public class IqGenerator extends AbstractGenerator { return packet; } + private static String convertFilename(String name) { + int pos = name.indexOf('.'); + if (pos != -1) { + try { + UUID uuid = UUID.fromString(name.substring(0, pos)); + ByteBuffer bb = ByteBuffer.wrap(new byte[16]); + bb.putLong(uuid.getMostSignificantBits()); + bb.putLong(uuid.getLeastSignificantBits()); + return Base64.encodeToString(bb.array(), Base64.URL_SAFE) + name.substring(pos, name.length()); + } catch (Exception e) { + return name; + } + } else { + return name; + } + } + public IqPacket generateCreateAccountWithCaptcha(Account account, String id, Data data) { final IqPacket register = new IqPacket(IqPacket.TYPE.SET); register.setFrom(account.getJid().toBareJid()); diff --git a/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java b/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java index f5c701cc..d0c20ad5 100644 --- a/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java +++ b/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java @@ -79,6 +79,9 @@ public class MessageGenerator extends AbstractGenerator { packet.setBody(OMEMO_FALLBACK_MESSAGE); } packet.addChild("store", "urn:xmpp:hints"); + packet.addChild("encryption","urn:xmpp:eme:0") + .setAttribute("name","OMEMO") + .setAttribute("namespace",AxolotlService.PEP_PREFIX); return packet; } @@ -109,6 +112,8 @@ public class MessageGenerator extends AbstractGenerator { content = message.getBody(); } packet.setBody(otrSession.transformSending(content)[0]); + packet.addChild("encryption","urn:xmpp:eme:0") + .setAttribute("namespace","urn:xmpp:otr:0"); return packet; } catch (OtrException e) { return null; @@ -139,6 +144,8 @@ public class MessageGenerator extends AbstractGenerator { } else if (message.getEncryption() == Message.ENCRYPTION_PGP) { packet.addChild("x", "jabber:x:encrypted").setContent(message.getBody()); } + packet.addChild("encryption","urn:xmpp:eme:0") + .setAttribute("namespace","jabber:x:encrypted"); return packet; } diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index ef5ff854..d80f44f4 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -1255,7 +1255,7 @@ public class XmppConnection implements Runnable { } private String nextRandomId() { - return new BigInteger(50, mXmppConnectionService.getRNG()).toString(32); + return new BigInteger(50, mXmppConnectionService.getRNG()).toString(36); } public String sendIqPacket(final IqPacket packet, final OnIqPacketReceived callback) { |