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 ++++--- .../keychain/ui/DecryptTextFragment.java | 2 +- .../src/main/res/layout/decrypt_text_fragment.xml | 135 ++++++++++----------- 3 files changed, 89 insertions(+), 89 deletions(-) (limited to 'OpenKeychain/src/main') 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; } 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(); diff --git a/OpenKeychain/src/main/res/layout/decrypt_text_fragment.xml b/OpenKeychain/src/main/res/layout/decrypt_text_fragment.xml index 1c6097495..3bd144fbf 100644 --- a/OpenKeychain/src/main/res/layout/decrypt_text_fragment.xml +++ b/OpenKeychain/src/main/res/layout/decrypt_text_fragment.xml @@ -1,89 +1,78 @@ - + android:orientation="vertical"> - + - - - + - - - - - - + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="top" + android:hint="" + android:textIsSelectable="true" /> - + - + - + - + - + - + - - + \ No newline at end of file -- cgit v1.2.3