From 401329caaa5d3152ad59453ec6050a4810af0164 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 5 Apr 2017 18:46:56 +0200 Subject: [PATCH] use aesgcm:// uri scheme for omemo encrypted http upload --- .../conversations/http/HttpUploadConnection.java | 2 +- .../eu/siacs/conversations/utils/CryptoHelper.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java b/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java index a32392153..e68d7b097 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java +++ b/src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java @@ -191,7 +191,7 @@ public class HttpUploadConnection implements Transferable { if (code == 200 || code == 201) { Log.d(Config.LOGTAG, "finished uploading file"); if (key != null) { - mGetUrl = new URL(mGetUrl.toString() + "#" + CryptoHelper.bytesToHex(key)); + mGetUrl = CryptoHelper.toAesGcmUrl(new URL(mGetUrl.toString() + "#" + CryptoHelper.bytesToHex(key))); } mXmppConnectionService.getFileBackend().updateFileParams(message, mGetUrl); mXmppConnectionService.getFileBackend().updateMediaScanner(file); diff --git a/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java b/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java index f1a9d8c41..5f5f576af 100644 --- a/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java @@ -8,6 +8,8 @@ import org.bouncycastle.asn1.x500.style.BCStyle; import org.bouncycastle.asn1.x500.style.IETFUtils; import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder; +import java.net.MalformedURLException; +import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateEncodingException; @@ -230,4 +232,15 @@ public final class CryptoHelper { return R.string.encryption_choice_pgp; } } + + public static URL toAesGcmUrl(URL url) { + if (!url.getProtocol().equalsIgnoreCase("https")) { + return url; + } + try { + return new URL("aesgcm"+url.toString().substring(url.getProtocol().length())); + } catch (MalformedURLException e) { + return url; + } + } }