diff options
5 files changed, 58 insertions, 6 deletions
diff --git a/OpenPGP-Keychain/res/layout/api_app_error_message.xml b/OpenPGP-Keychain/res/layout/api_app_error_message.xml new file mode 100644 index 000000000..5927dbf43 --- /dev/null +++ b/OpenPGP-Keychain/res/layout/api_app_error_message.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:orientation="vertical" > + + <org.sufficientlysecure.htmltextview.HtmlTextView + android:id="@+id/api_app_error_message_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="8dp" + android:paddingBottom="0dip" + android:text="Set in-code!" + android:textAppearance="?android:attr/textAppearanceLarge" /> + +</LinearLayout>
\ No newline at end of file diff --git a/OpenPGP-Keychain/res/values/strings.xml b/OpenPGP-Keychain/res/values/strings.xml index da82e7553..807daaeb4 100644 --- a/OpenPGP-Keychain/res/values/strings.xml +++ b/OpenPGP-Keychain/res/values/strings.xml @@ -338,6 +338,7 @@ <string name="api_select_pub_keys_missing_text">No public keys were found for these user ids:</string> <string name="api_select_pub_keys_dublicates_text">More than one public key exist for these user ids:</string> <string name="api_select_pub_keys_text">Please review the list of recipients!</string> + <string name="api_error_wrong_signature">Signature check failed! Have you installed this app from a different source? If you are sure that this is not an attack, revoke this app\'s registration in OpenPGP Keychain and then register the app again.</string> <!-- Share --> <string name="share_qr_code_dialog_start">Go through all QR Codes using \'Next\', and scan them one by one.</string> diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/ActionBarHelper.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/ActionBarHelper.java index c0fc4df86..dcac2df08 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/ActionBarHelper.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/ActionBarHelper.java @@ -102,8 +102,7 @@ public class ActionBarHelper { final View customActionBarView = inflater .inflate(R.layout.actionbar_custom_view_done, null); - ((TextView) customActionBarView.findViewById(R.id.actionbar_done_text)) - .setText(R.string.api_settings_save); + ((TextView) customActionBarView.findViewById(R.id.actionbar_done_text)).setText(doneText); customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener( doneOnClickListener); diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteService.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteService.java index 0f28d96f6..bc513d532 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteService.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteService.java @@ -23,6 +23,7 @@ import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.TimeUnit; import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.provider.KeychainContract; import org.sufficientlysecure.keychain.provider.ProviderHelper; import org.sufficientlysecure.keychain.service.exception.WrongPackageSignatureException; @@ -140,8 +141,12 @@ public abstract class RemoteService extends Service { } } } catch (WrongPackageSignatureException e) { - // TODO: Inform user about wrong signature! - Log.e(Constants.TAG, "RemoteService", e); + Log.e(Constants.TAG, e.getMessage()); + + Bundle extras = new Bundle(); + extras.putString(RemoteServiceActivity.EXTRA_ERROR_MESSAGE, + getString(R.string.api_error_wrong_signature)); + pauseAndStartUserInteraction(RemoteServiceActivity.ACTION_ERROR_MESSAGE, null, extras); } } @@ -243,8 +248,13 @@ public abstract class RemoteService extends Service { mThreadPool.shutdownNow(); } } catch (WrongPackageSignatureException e) { - // TODO: Inform user about wrong signature! - Log.e(Constants.TAG, "RemoteService", e); + Log.e(Constants.TAG, e.getMessage()); + + Bundle extras = new Bundle(); + extras.putString(RemoteServiceActivity.EXTRA_ERROR_MESSAGE, + getString(R.string.api_error_wrong_signature)); + pauseAndStartUserInteraction(RemoteServiceActivity.ACTION_ERROR_MESSAGE, null, + extras); } } else { allowed = false; diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteServiceActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteServiceActivity.java index bba8176b1..de07989d8 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteServiceActivity.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteServiceActivity.java @@ -48,6 +48,8 @@ public class RemoteServiceActivity extends SherlockFragmentActivity { + "API_ACTIVITY_CACHE_PASSPHRASE"; public static final String ACTION_SELECT_PUB_KEYS = Constants.INTENT_PREFIX + "API_ACTIVITY_SELECT_PUB_KEYS"; + public static final String ACTION_ERROR_MESSAGE = Constants.INTENT_PREFIX + + "API_ACTIVITY_ERROR_MESSAGE"; public static final String EXTRA_MESSENGER = "messenger"; @@ -60,6 +62,8 @@ public class RemoteServiceActivity extends SherlockFragmentActivity { public static final String EXTRA_SELECTED_MASTER_KEY_IDS = "master_key_ids"; public static final String EXTRA_MISSING_USER_IDS = "missing_user_ids"; public static final String EXTRA_DUBLICATE_USER_IDS = "dublicate_user_ids"; + // error message + public static final String EXTRA_ERROR_MESSAGE = "error_message"; private Messenger mMessenger; @@ -271,6 +275,27 @@ public class RemoteServiceActivity extends SherlockFragmentActivity { getSupportFragmentManager().beginTransaction() .add(R.id.api_select_pub_keys_fragment_container, mSelectFragment).commit(); } + } else if (ACTION_ERROR_MESSAGE.equals(action)) { + String errorMessage = intent.getStringExtra(EXTRA_ERROR_MESSAGE); + + String text = new String(); + text += "<font color=\"red\">" + errorMessage + "</font>"; + + // Inflate a "Done" custom action bar view + ActionBarHelper.setDoneView(getSupportActionBar(), R.string.btn_okay, + new View.OnClickListener() { + + @Override + public void onClick(View v) { + finish(); + } + }); + + setContentView(R.layout.api_app_error_message); + + // set text on view + HtmlTextView textView = (HtmlTextView) findViewById(R.id.api_app_error_message_text); + textView.setHtmlFromString(text); } else { Log.e(Constants.TAG, "Wrong action!"); finish(); |