diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-10-01 15:03:53 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-10-01 15:03:53 +0200 |
commit | 42ce3bb0d39ca2551ff37ed698bc12eb526b8638 (patch) | |
tree | 50dfb4131bb4c39c193cb16f3264a5cd115b01b2 /OpenKeychain/src/main/java | |
parent | e7cbf975acf180dd1811fb1f323d604e928e215e (diff) | |
download | open-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')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java | 41 | ||||
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java | 2 |
2 files changed, 27 insertions, 16 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; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java index 134d26c8c..4f25126ee 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.os.Messenger; +import android.text.method.ScrollingMovementMethod; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -181,7 +182,6 @@ public class DecryptTextFragment extends DecryptFragment { byte[] decryptedMessage = returnData .getByteArray(KeychainIntentService.RESULT_DECRYPTED_BYTES); mText.setText(new String(decryptedMessage)); - mText.setHorizontallyScrolling(false); pgpResult.createNotify(getActivity()).show(); |