From 4172715064584ef873bcf9c319c08889af3408d3 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 21 Oct 2015 15:44:52 +0200 Subject: re-add accidentally deleted string --- .../java/org/sufficientlysecure/keychain/operations/BaseOperation.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'OpenKeychain/src/main/java/org') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java index e4026eaaf..99d1768b1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java @@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.operations; import android.content.Context; import android.os.Parcelable; import android.support.annotation.NonNull; +import android.support.annotation.StringRes; import org.sufficientlysecure.keychain.Constants.key; import org.sufficientlysecure.keychain.operations.results.OperationResult; @@ -81,7 +82,7 @@ public abstract class BaseOperation implements Passphrase @NonNull public abstract OperationResult execute(T input, CryptoInputParcel cryptoInput); - public void updateProgress(int message, int current, int total) { + public void updateProgress(@StringRes int message, int current, int total) { if (mProgressable != null) { mProgressable.setProgress(message, current, total); } -- cgit v1.2.3 From f7bfe932ec146ae26be347fbbdade9188b15af80 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 21 Oct 2015 17:11:02 +0200 Subject: fix crash due to malformed log entry --- .../org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyOperation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenKeychain/src/main/java/org') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyOperation.java index 7fe89b6f2..d85652a51 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyOperation.java @@ -245,7 +245,7 @@ public class PgpDecryptVerifyOperation extends BaseOperation Date: Wed, 21 Oct 2015 21:54:39 +0200 Subject: displaytextactivity: truncate displayed text if too long --- .../src/main/java/org/sufficientlysecure/keychain/Constants.java | 3 +++ .../org/sufficientlysecure/keychain/ui/DisplayTextActivity.java | 8 ++++++++ 2 files changed, 11 insertions(+) (limited to 'OpenKeychain/src/main/java/org') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index 9623eaeda..79175e9ad 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -79,6 +79,9 @@ public final class Constants { public static final int TEMPFILE_TTL = 24 * 60 * 60 * 1000; // 1 day + // the maximal length of plaintext to read in encrypt/decrypt text activities + public static final int TEXT_LENGTH_LIMIT = 1024 * 50; + public static final String SAFESLINGER_SERVER = "safeslinger-openpgp.appspot.com"; public static final class Path { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DisplayTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DisplayTextActivity.java index 4bcca09f1..2fa1aa1c2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DisplayTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DisplayTextActivity.java @@ -28,9 +28,12 @@ import android.support.v4.app.Fragment; import android.widget.Toast; import org.openintents.openpgp.OpenPgpMetadata; +import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult; import org.sufficientlysecure.keychain.ui.base.BaseActivity; +import org.sufficientlysecure.keychain.ui.util.Notify; +import org.sufficientlysecure.keychain.ui.util.Notify.Style; import org.sufficientlysecure.keychain.util.FileHelper; public class DisplayTextActivity extends BaseActivity { @@ -73,6 +76,11 @@ public class DisplayTextActivity extends BaseActivity { } if (plaintext != null) { + if (plaintext.length() > Constants.TEXT_LENGTH_LIMIT) { + plaintext = plaintext.substring(0, Constants.TEXT_LENGTH_LIMIT); + Notify.create(this, R.string.snack_text_too_long, Style.WARN).show(); + } + loadFragment(plaintext, result); } else { Toast.makeText(this, R.string.error_invalid_data, Toast.LENGTH_LONG).show(); -- cgit v1.2.3 From a4b99ae3506545a675918bb3f182b9b142e6654b Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 21 Oct 2015 21:55:15 +0200 Subject: encrypttext: handle input via Intent.EXTRA_STREAM in addition to Intent.EXTRA_TEXT --- .../keychain/ui/EncryptTextActivity.java | 40 ++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'OpenKeychain/src/main/java/org') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java index a849cdf12..6a7955fc5 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java @@ -18,14 +18,22 @@ package org.sufficientlysecure.keychain.ui; + +import java.io.IOException; + import android.app.Activity; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; -import android.view.View; +import android.widget.Toast; +import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.intents.OpenKeychainIntents; +import org.sufficientlysecure.keychain.ui.util.Notify; +import org.sufficientlysecure.keychain.ui.util.Notify.Style; +import org.sufficientlysecure.keychain.util.FileHelper; import org.sufficientlysecure.keychain.util.Log; public class EncryptTextActivity extends EncryptActivity { @@ -57,14 +65,34 @@ public class EncryptTextActivity extends EncryptActivity { // When sending to OpenKeychain Encrypt via share menu if ("text/plain".equals(type)) { - String sharedText = extras.getString(Intent.EXTRA_TEXT); - if (sharedText != null) { - // handle like normal text encryption, override action and extras to later - // executeServiceMethod ACTION_ENCRYPT_TEXT in main actions - extras.putString(EXTRA_TEXT, sharedText); + Toast.makeText(this, "Wrong data type, expected text!", Toast.LENGTH_LONG).show(); + finish(); + return; + } + + String sharedText; + if (extras.containsKey(Intent.EXTRA_TEXT)) { + sharedText = extras.getString(Intent.EXTRA_TEXT); + } else if (extras.containsKey(Intent.EXTRA_STREAM)) { + try { + sharedText = FileHelper.readTextFromUri(this, extras.getParcelable(Intent.EXTRA_STREAM), null); + } catch (IOException e) { + Toast.makeText(this, R.string.error_preparing_data, Toast.LENGTH_LONG).show(); + finish(); + return; } + } else { + Toast.makeText(this, "No text in shared data!", Toast.LENGTH_LONG).show(); + finish(); + return; + } + if (sharedText != null) { + // handle like normal text encryption, override action and extras to later + // executeServiceMethod ACTION_ENCRYPT_TEXT in main actions + extras.putString(EXTRA_TEXT, sharedText); } + } String textData = extras.getString(EXTRA_TEXT); -- cgit v1.2.3 From 1b98c07237660af0184879425e741b2b06f18132 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 21 Oct 2015 21:58:24 +0200 Subject: encrypttext: localization, and truncate overlong input --- .../org/sufficientlysecure/keychain/ui/EncryptTextActivity.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'OpenKeychain/src/main/java/org') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java index 6a7955fc5..201465b52 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java @@ -65,7 +65,7 @@ public class EncryptTextActivity extends EncryptActivity { // When sending to OpenKeychain Encrypt via share menu if ("text/plain".equals(type)) { - Toast.makeText(this, "Wrong data type, expected text!", Toast.LENGTH_LONG).show(); + Toast.makeText(this, R.string.toast_wrong_mimetype, Toast.LENGTH_LONG).show(); finish(); return; } @@ -82,12 +82,16 @@ public class EncryptTextActivity extends EncryptActivity { return; } } else { - Toast.makeText(this, "No text in shared data!", Toast.LENGTH_LONG).show(); + Toast.makeText(this, R.string.toast_no_text, Toast.LENGTH_LONG).show(); finish(); return; } if (sharedText != null) { + if (sharedText.length() > Constants.TEXT_LENGTH_LIMIT) { + sharedText = sharedText.substring(0, Constants.TEXT_LENGTH_LIMIT); + Notify.create(this, R.string.snack_shared_text_too_long, Style.WARN).show(); + } // handle like normal text encryption, override action and extras to later // executeServiceMethod ACTION_ENCRYPT_TEXT in main actions extras.putString(EXTRA_TEXT, sharedText); -- cgit v1.2.3 From 7eb9f5d5cfb3e735076ea019013f89ca60ed5804 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 21 Oct 2015 22:30:21 +0200 Subject: decrypt: special case single encrypted text -> directly display text, if not too large --- .../keychain/ui/DecryptListFragment.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'OpenKeychain/src/main/java/org') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java index a5f9dc885..c7ad4bd65 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java @@ -322,6 +322,29 @@ public class DecryptListFragment Uri uri = mCurrentInputUri; mCurrentInputUri = null; + Activity activity = getActivity(); + + boolean isSingleInput = mInputDataResults.isEmpty() && mPendingInputUris.isEmpty(); + if (isSingleInput) { + + // there is always at least one mMetadata object, so we know this is >= 1 already + boolean isSingleMetadata = result.mMetadata.size() == 1; + OpenPgpMetadata metadata = result.mMetadata.get(0); + boolean isText = "text/plain".equals(metadata.getMimeType()); + boolean isOverSized = metadata.getOriginalSize() > Constants.TEXT_LENGTH_LIMIT; + + if (isSingleMetadata && isText && !isOverSized) { + Intent displayTextIntent = new Intent(activity, DisplayTextActivity.class) + .setDataAndType(result.mOutputUris.get(0), "text/plain") + .putExtra(DisplayTextActivity.EXTRA_RESULT, result.mDecryptVerifyResult) + .putExtra(DisplayTextActivity.EXTRA_METADATA, metadata); + activity.startActivity(displayTextIntent); + activity.finish(); + return; + } + + } + mInputDataResults.put(uri, result); processResult(uri); -- cgit v1.2.3