From 42ce3bb0d39ca2551ff37ed698bc12eb526b8638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 1 Oct 2014 15:03:53 +0200 Subject: Fix decrypt/verify from gmail/aosp mail with sharing intent, fix scrolling in decryt screen --- .../keychain/ui/DecryptTextActivity.java | 41 ++++++++++++++-------- 1 file changed, 26 insertions(+), 15 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java index 982bed784..8d489b3d4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java @@ -32,9 +32,7 @@ import org.sufficientlysecure.keychain.service.results.SingletonResult; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.ui.util.Notify; -import java.io.StreamTokenizer; import java.util.regex.Matcher; -import java.util.regex.Pattern; public class DecryptTextActivity extends ActionBarActivity { @@ -58,38 +56,51 @@ public class DecryptTextActivity extends ActionBarActivity { } /** - * Fix the message a bit, trailing spaces and newlines break stuff, - * because GMail sends as HTML and such things break ASCII Armor - * TODO: things like "<" and ">" also make problems - *

- * NOTE: Do not use on cleartext signatures, only on ASCII-armored ciphertext, - * it would change the signed message + * Fixing broken PGP MESSAGE Strings coming from GMail/AOSP Mail */ - private String fixAsciiArmoredCiphertext(String message) { + private String fixPgpMessage(String message) { + // windows newline -> unix newline + message = message.replaceAll("\r\n", "\n"); + // Mac OS before X newline -> unix newline + message = message.replaceAll("\r", "\n"); + + // remove whitespaces before newline message = message.replaceAll(" +\n", "\n"); + // only two consecutive newlines are allowed message = message.replaceAll("\n\n+", "\n\n"); - message = message.replaceFirst("^\n+", ""); - // make sure there'll be exactly one newline at the end - message = message.replaceFirst("\n*$", "\n"); + // replace non breakable spaces message = message.replaceAll("\\xa0", " "); return message; } + /** + * Fixing broken PGP SIGNED MESSAGE Strings coming from GMail/AOSP Mail + */ + private String fixPgpCleartextSignature(String message) { + // windows newline -> unix newline + message = message.replaceAll("\r\n", "\n"); + // Mac OS before X newline -> unix newline + message = message.replaceAll("\r", "\n"); + + return message; + } + private String getPgpContent(String input) { // only decrypt if clipboard content is available and a pgp message or cleartext signature if (input != null) { Matcher matcher = PgpHelper.PGP_MESSAGE.matcher(input); if (matcher.matches()) { String message = matcher.group(1); - message = fixAsciiArmoredCiphertext(message); + message = fixPgpMessage(message); return message; } else { matcher = PgpHelper.PGP_CLEARTEXT_SIGNATURE.matcher(input); if (matcher.matches()) { - // return cleartext signature - return matcher.group(1); + String message = matcher.group(1); + message = fixPgpCleartextSignature(message); + return message; } else { return null; } -- cgit v1.2.3