aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-08-17 12:38:46 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-08-17 12:38:46 +0200
commit3c8028fc88af0b6af09d453fddc779e5972a59f9 (patch)
treea4a0299847760c71443285163ea066a2e7b28a4b
parent7004d129a8546977c450bd40931b0b774cd2025e (diff)
downloadopen-keychain-3c8028fc88af0b6af09d453fddc779e5972a59f9.tar.gz
open-keychain-3c8028fc88af0b6af09d453fddc779e5972a59f9.tar.bz2
open-keychain-3c8028fc88af0b6af09d453fddc779e5972a59f9.zip
apply fixPgpMessage to plaintext/armored decrypt input
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java32
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptActivity.java25
2 files changed, 34 insertions, 23 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java
index 32718fb4e..e8d1d3111 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java
@@ -21,6 +21,7 @@ package org.sufficientlysecure.keychain.pgp;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.support.annotation.NonNull;
import android.text.TextUtils;
import org.sufficientlysecure.keychain.Constants;
@@ -116,32 +117,27 @@ public class PgpHelper {
}
}
- public static String getPgpContent(CharSequence input) {
- // only decrypt if clipboard content is available and a pgp message or cleartext signature
- if (!TextUtils.isEmpty(input)) {
- Log.dEscaped(Constants.TAG, "input: " + input);
+ public static String getPgpContent(@NonNull CharSequence input) {
+ Log.dEscaped(Constants.TAG, "input: " + input);
+
+ Matcher matcher = PgpHelper.PGP_MESSAGE.matcher(input);
+ if (matcher.matches()) {
+ String text = matcher.group(1);
+ text = fixPgpMessage(text);
- Matcher matcher = PgpHelper.PGP_MESSAGE.matcher(input);
+ Log.dEscaped(Constants.TAG, "input fixed: " + text);
+ return text;
+ } else {
+ matcher = PgpHelper.PGP_CLEARTEXT_SIGNATURE.matcher(input);
if (matcher.matches()) {
String text = matcher.group(1);
- text = fixPgpMessage(text);
+ text = fixPgpCleartextSignature(text);
Log.dEscaped(Constants.TAG, "input fixed: " + text);
return text;
} else {
- matcher = PgpHelper.PGP_CLEARTEXT_SIGNATURE.matcher(input);
- if (matcher.matches()) {
- String text = matcher.group(1);
- text = fixPgpCleartextSignature(text);
-
- Log.dEscaped(Constants.TAG, "input fixed: " + text);
- return text;
- } else {
- return null;
- }
+ return null;
}
- } else {
- return null;
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptActivity.java
index e581e069b..881190ae2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptActivity.java
@@ -29,13 +29,14 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.support.annotation.Nullable;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
-import android.view.View;
import android.widget.Toast;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.intents.OpenKeychainIntents;
+import org.sufficientlysecure.keychain.pgp.PgpHelper;
import org.sufficientlysecure.keychain.provider.TemporaryStorageProvider;
import org.sufficientlysecure.keychain.ui.base.BaseActivity;
@@ -93,7 +94,9 @@ public class DecryptActivity extends BaseActivity {
} else if (intent.hasExtra(Intent.EXTRA_TEXT)) {
String text = intent.getStringExtra(Intent.EXTRA_TEXT);
Uri uri = readToTempFile(text);
- uris.add(uri);
+ if (uri != null) {
+ uris.add(uri);
+ }
}
break;
@@ -105,7 +108,9 @@ public class DecryptActivity extends BaseActivity {
} else if (intent.hasExtra(Intent.EXTRA_TEXT)) {
for (String text : intent.getStringArrayListExtra(Intent.EXTRA_TEXT)) {
Uri uri = readToTempFile(text);
- uris.add(uri);
+ if (uri != null) {
+ uris.add(uri);
+ }
}
}
@@ -139,7 +144,9 @@ public class DecryptActivity extends BaseActivity {
String text = clip.getItemAt(0).coerceToText(this).toString();
uri = readToTempFile(text);
}
- uris.add(uri);
+ if (uri != null) {
+ uris.add(uri);
+ }
break;
}
@@ -170,9 +177,17 @@ public class DecryptActivity extends BaseActivity {
}
- public Uri readToTempFile(String text) throws IOException {
+ @Nullable public Uri readToTempFile(String text) throws IOException {
Uri tempFile = TemporaryStorageProvider.createFile(this);
OutputStream outStream = getContentResolver().openOutputStream(tempFile);
+
+ // clean up ascii armored message, fixing newlines and stuff
+ String cleanedText = PgpHelper.getPgpContent(text);
+ if (cleanedText == null) {
+ return null;
+ }
+
+ // if cleanup didn't work, just try the raw data
outStream.write(text.getBytes());
outStream.close();
return tempFile;