aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2013-12-30 20:57:49 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2013-12-30 20:57:49 +0100
commit19082b62a985c1a73d838419e9576cdc153ed45d (patch)
tree85a117944bf18ab1857d514f81eada41b7de9263 /OpenPGP-Keychain
parenta8cafd59e49861fdc70e10644d308f427e5fdd7a (diff)
downloadopen-keychain-19082b62a985c1a73d838419e9576cdc153ed45d.tar.gz
open-keychain-19082b62a985c1a73d838419e9576cdc153ed45d.tar.bz2
open-keychain-19082b62a985c1a73d838419e9576cdc153ed45d.zip
Inform user if signature check fails
Diffstat (limited to 'OpenPGP-Keychain')
-rw-r--r--OpenPGP-Keychain/res/layout/api_app_error_message.xml17
-rw-r--r--OpenPGP-Keychain/res/values/strings.xml1
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/helper/ActionBarHelper.java3
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteService.java18
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/service/remote/RemoteServiceActivity.java25
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();