Merge branch 'master' of github.com:open-keychain/open-keychain

This commit is contained in:
Dominik Schürmann
2015-10-21 22:33:46 +02:00
11 changed files with 87 additions and 15 deletions

View File

@@ -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 {

View File

@@ -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);
}

View File

@@ -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));
}
}
}

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);

View File

@@ -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"
/>

View File

@@ -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

View File

@@ -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">

View File

@@ -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">

View File

@@ -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>