aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-10-01 15:03:53 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-10-01 15:03:53 +0200
commit42ce3bb0d39ca2551ff37ed698bc12eb526b8638 (patch)
tree50dfb4131bb4c39c193cb16f3264a5cd115b01b2 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java
parente7cbf975acf180dd1811fb1f323d604e928e215e (diff)
downloadopen-keychain-42ce3bb0d39ca2551ff37ed698bc12eb526b8638.tar.gz
open-keychain-42ce3bb0d39ca2551ff37ed698bc12eb526b8638.tar.bz2
open-keychain-42ce3bb0d39ca2551ff37ed698bc12eb526b8638.zip
Fix decrypt/verify from gmail/aosp mail with sharing intent, fix scrolling in decryt screen
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java41
1 files changed, 26 insertions, 15 deletions
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
- * <p/>
- * 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;
}