use aesgcm:// uri scheme for omemo encrypted http upload

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java |  2 
src/main/java/eu/siacs/conversations/utils/CryptoHelper.java        | 13 
2 files changed, 14 insertions(+), 1 deletion(-)

Detailed changes

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);

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;
+		}
+	}
 }