Merge branch 'master' of github.com:open-keychain/open-keychain
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
android:drawableLeft="@drawable/ic_repeat_black_24dp"
|
||||
android:drawableStart="@drawable/ic_repeat_black_24dp"
|
||||
android:drawablePadding="12dp"
|
||||
android:text="@string/linked_button_retry"
|
||||
android:text="@string/linked_button_retry_step"
|
||||
android:id="@+id/button_retry"
|
||||
/>
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:orientation="horizontal"
|
||||
android:singleLine="true"
|
||||
android:background="#ffffff"
|
||||
tools:showIn="@layout/linked_id_view_fragment">
|
||||
|
||||
<ImageView
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
android:transitionName="card_linked_ids"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
card_view:cardBackgroundColor="@android:color/white"
|
||||
card_view:cardBackgroundColor="?attr/colorCardViewBackground"
|
||||
card_view:cardElevation="2dp"
|
||||
card_view:cardUseCompatPadding="true"
|
||||
card_view:cardCornerRadius="4dp">
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
card_view:cardBackgroundColor="@android:color/white"
|
||||
card_view:cardBackgroundColor="?attr/colorCardViewBackground"
|
||||
card_view:cardElevation="2dp"
|
||||
card_view:cardUseCompatPadding="true"
|
||||
card_view:cardCornerRadius="4dp">
|
||||
|
||||
@@ -435,6 +435,7 @@
|
||||
<string name="progress_encrypting">"encrypting data…"</string>
|
||||
<string name="progress_decrypting">"decrypting data…"</string>
|
||||
<string name="progress_preparing_signature">"preparing signature…"</string>
|
||||
<string name="progress_processing_signature">processing signature…</string>
|
||||
<string name="progress_generating_signature">"generating signature…"</string>
|
||||
<string name="progress_verifying_signature">"verifying signature…"</string>
|
||||
<string name="progress_signing">"signing…"</string>
|
||||
@@ -1629,7 +1630,8 @@
|
||||
<string name="linked_title_twitter">"Twitter"</string>
|
||||
<string name="card_linked_identity">"Linked Identity"</string>
|
||||
<string name="linked_button_verify">"Verify"</string>
|
||||
<string name="linked_button_retry">"Retry last step"</string>
|
||||
<string name="linked_button_retry">"Retry"</string>
|
||||
<string name="linked_button_retry_step">"Retry last step"</string>
|
||||
<string name="linked_button_confirm">"Confirm"</string>
|
||||
<string name="linked_button_view">"View"</string>
|
||||
<string name="linked_text_verifying">"Verifying…"</string>
|
||||
@@ -1661,10 +1663,14 @@
|
||||
<string name="snack_backup_exists">"Backup already exists!"</string>
|
||||
<string name="snack_backup_saved_dir">"Saved to OpenKeychain directory"</string>
|
||||
<string name="btn_backup_back">Go back to check</string>
|
||||
<string name="snack_text_too_long">"Text is too long to show in full!"</string>
|
||||
<string name="snack_shared_text_too_long">"Shared text was cut because it was too long!"</string>
|
||||
|
||||
<string name="share_log_dialog_title">"Share log?"</string>
|
||||
<string name="share_log_dialog_message">"While logs can be super helpful for developers to find bugs in OpenKeychain, they can contain potential sensitive information such as data about the updated keys. Please make sure you are okay with sharing this information."</string>
|
||||
<string name="share_log_dialog_share_button">"Share"</string>
|
||||
<string name="share_log_dialog_cancel_button">"Cancel"</string>
|
||||
<string name="toast_wrong_mimetype">"Wrong data type, expected text!"</string>
|
||||
<string name="toast_no_text">"No text in shared data!"</string>
|
||||
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user