aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/BaseOperation.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyOperation.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DisplayTextActivity.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java44
5 files changed, 52 insertions, 8 deletions
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/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 <T extends Parcelable> 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);
}
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<PgpDecryptVerifyInp
log.add(LogType.MSG_DC_CHARSET, indent, armorHeaders.charset);
}
if (armorHeaders.backupVersion != null) {
- log.add(LogType.MSG_DC_BACKUP_VERSION, indent, armorHeaders.backupVersion);
+ log.add(LogType.MSG_DC_BACKUP_VERSION, indent, Integer.toString(armorHeaders.backupVersion));
}
}
}
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();
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..201465b52 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,38 @@ 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, R.string.toast_wrong_mimetype, 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.<Uri>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, 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);
}
+
}
String textData = extras.getString(EXTRA_TEXT);