diff --git a/briar-android/src/main/java/org/briarproject/briar/android/panic/FDroidSignaturePin.java b/briar-android/src/main/java/org/briarproject/briar/android/panic/FDroidSignaturePin.java
new file mode 100644
index 000000000..ecbc01212
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/panic/FDroidSignaturePin.java
@@ -0,0 +1,84 @@
+package org.briarproject.briar.android.panic;
+
+import info.guardianproject.trustedintents.ApkSignaturePin;
+
+// needs to be public, because TrustedIntents will instantiate
+public final class FDroidSignaturePin extends ApkSignaturePin {
+
+ public FDroidSignaturePin() {
+ this.fingerprints = new String[] {
+ "927f7e38b6acbecd84e02dace33efa9a7a2f0979750f28f585688ee38b3a4e28"};
+ this.certificates = new byte[][] {
+ {48, -126, 3, 95, 48, -126, 2, 71, -96, 3, 2, 1, 2, 2, 4, 28,
+ -30, 107, -102, 48, 13, 6, 9, 42, -122, 72, -122, -9,
+ 13, 1, 1, 11, 5, 0, 48, 96, 49, 11, 48, 9, 6, 3, 85, 4,
+ 6, 19, 2, 85, 75, 49, 12, 48, 10, 6, 3, 85, 4, 8, 19, 3,
+ 79, 82, 71, 49, 12, 48, 10, 6, 3, 85, 4, 7, 19, 3, 79,
+ 82, 71, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 102,
+ 100, 114, 111, 105, 100, 46, 111, 114, 103, 49, 15, 48,
+ 13, 6, 3, 85, 4, 11, 19, 6, 70, 68, 114, 111, 105, 100,
+ 49, 15, 48, 13, 6, 3, 85, 4, 3, 19, 6, 70, 68, 114, 111,
+ 105, 100, 48, 30, 23, 13, 49, 55, 49, 50, 48, 55, 49,
+ 55, 51, 48, 52, 50, 90, 23, 13, 52, 53, 48, 52, 50, 52,
+ 49, 55, 51, 48, 52, 50, 90, 48, 96, 49, 11, 48, 9, 6, 3,
+ 85, 4, 6, 19, 2, 85, 75, 49, 12, 48, 10, 6, 3, 85, 4, 8,
+ 19, 3, 79, 82, 71, 49, 12, 48, 10, 6, 3, 85, 4, 7, 19,
+ 3, 79, 82, 71, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
+ 102, 100, 114, 111, 105, 100, 46, 111, 114, 103, 49, 15,
+ 48, 13, 6, 3, 85, 4, 11, 19, 6, 70, 68, 114, 111, 105,
+ 100, 49, 15, 48, 13, 6, 3, 85, 4, 3, 19, 6, 70, 68, 114,
+ 111, 105, 100, 48, -126, 1, 34, 48, 13, 6, 9, 42, -122,
+ 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, 48,
+ -126, 1, 10, 2, -126, 1, 1, 0, -107, -115, -106, 1, -26,
+ 72, -105, -99, 62, 3, -55, 34, 99, -112, -68, -20, -115,
+ 31, 34, 118, -50, 12, -32, -59, 74, -58, -37, -87, 21,
+ 105, 36, -82, 13, -51, 66, 4, 55, -111, 13, -46, -7,
+ -69, -15, 36, 118, -7, 101, -86, 123, -83, -103, 110,
+ 116, -54, 112, 46, 12, 96, -76, -48, -70, -33, -81, 52,
+ 59, 73, 107, -126, -72, -25, 32, 93, 29, -20, 5, -41,
+ -27, 123, -9, 104, -31, -59, -1, -83, -93, 99, 85, -116,
+ -62, -55, 18, -63, 6, -51, -110, 33, 9, 7, -49, 102,
+ -20, -122, -124, -68, 93, -102, 31, 48, 86, 96, -99,
+ 105, -52, 95, 12, 57, 99, 12, -24, 70, 40, -99, -20,
+ -21, -85, -70, -105, 95, 117, -31, 126, -126, -39, 46,
+ -62, 59, -23, -74, 108, -12, -56, -40, -96, 79, -37,
+ -82, 1, 99, -104, 48, -60, 92, 14, 109, 127, -22, 31,
+ 115, -27, 108, 9, 92, 118, -45, 103, 117, 57, -50, -82,
+ 114, -113, 68, -82, 87, 96, 111, 72, 65, -63, 12, 31,
+ -34, -31, -55, -101, 101, 101, 59, 73, -119, -122, 82,
+ 28, 47, -108, -85, 59, 46, 89, -93, -1, 9, -11, -51, 63,
+ -44, 109, -76, -103, -26, -49, -80, 6, 52, -27, 73,
+ -104, 40, 2, -101, -124, 60, -52, -105, -70, -24, -62,
+ 88, 38, 53, -99, -92, 31, 119, 26, 79, 60, -124, 25,
+ -115, -89, -115, -109, 0, 6, 122, -78, 116, 82, 3, 39,
+ -67, 45, -43, 17, -39, 2, 3, 1, 0, 1, -93, 33, 48, 31,
+ 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 63, 109, -42,
+ -109, 25, 22, 7, -37, -22, -41, -38, 58, -56, 2, -68,
+ -38, -22, 65, -28, -60, 48, 13, 6, 9, 42, -122, 72,
+ -122, -9, 13, 1, 1, 11, 5, 0, 3, -126, 1, 1, 0, 94, 17,
+ 31, 36, 85, -11, 85, 44, 19, -80, -20, -92, -118, 93,
+ 40, 45, 96, 31, -3, -37, -110, -96, 102, 81, 61, -74,
+ -125, -117, -112, 58, -47, 17, 78, -18, 111, -116, 26,
+ -91, 73, 100, 84, -99, 21, 87, 73, -106, 108, -51, -125,
+ -21, 119, -88, -78, 2, 82, -109, -64, -9, -86, -112,
+ -115, 66, -86, 46, 71, 107, -65, 96, -102, 47, 35, -45,
+ -126, 33, 34, 121, -25, -85, -121, -56, -42, 22, -1,
+ -95, -86, 81, 100, -70, 113, 104, -73, 22, -19, 79, -19,
+ 52, 62, 42, 76, -112, 94, -34, 42, -57, -75, -90, -58,
+ 118, 127, -106, -39, 108, -56, -79, 103, -33, 22, 3, 47,
+ 103, -76, -81, 53, -22, -44, -26, -102, 63, -99, 39, 38,
+ -108, 75, 33, 10, 25, -110, -125, -115, 114, -69, 73,
+ -112, 36, 74, 77, -82, -44, 29, -123, -8, -117, 71,
+ -105, 15, -109, 51, 22, 4, 80, 1, 43, 118, 121, -113,
+ -70, 83, -56, 82, -110, 4, -63, 16, -57, 126, -70, 81,
+ 73, 61, 2, -61, 24, -14, -10, 4, -21, 90, 24, 66, 41,
+ -57, -60, -113, -18, -54, -1, 103, -75, 32, -64, 67,
+ 103, 109, -79, -12, -113, -27, 114, 89, 116, 115, -13,
+ -123, -70, 61, -41, -46, -118, 29, -105, -97, -75, 39,
+ -51, 60, 88, 125, 55, -46, -95, 52, 57, 52, -115, 80,
+ 44, 109, 119, -116, -62, -77, -74, -88, 41, 57, -65,
+ -71, -115, -67, 23, 66, -21, 56, 51, -91, 109}};
+ }
+
+
+}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java
index a40a4e716..a086ae51f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicPreferencesFragment.java
@@ -31,13 +31,12 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
public static final String KEY_LOCK = "pref_key_lock";
public static final String KEY_PANIC_APP = "pref_key_panic_app";
public static final String KEY_PURGE = "pref_key_purge";
- public static final String KEY_UNINSTALL = "pref_key_uninstall";
private static final Logger LOG =
Logger.getLogger(PanicPreferencesFragment.class.getName());
private PackageManager pm;
- private SwitchPreference lockPref, purgePref, uninstallPref;
+ private SwitchPreference lockPref, purgePref;
private ListPreference panicAppPref;
@Override
@@ -49,7 +48,6 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
lockPref = (SwitchPreference) findPreference(KEY_LOCK);
panicAppPref = (ListPreference) findPreference(KEY_PANIC_APP);
purgePref = (SwitchPreference) findPreference(KEY_PURGE);
- uninstallPref = (SwitchPreference) findPreference(KEY_UNINSTALL);
// check for connect/disconnect intents from panic trigger apps
if (PanicResponder.checkForDisconnectIntent(getActivity())) {
@@ -97,16 +95,11 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
showPanicApp(packageName);
if (packageName.equals(Panic.PACKAGE_NAME_NONE)) {
- lockPref.setEnabled(false);
purgePref.setChecked(false);
purgePref.setEnabled(false);
- uninstallPref.setChecked(false);
- uninstallPref.setEnabled(false);
getActivity().setResult(Activity.RESULT_CANCELED);
} else {
- lockPref.setEnabled(true);
purgePref.setEnabled(true);
- uninstallPref.setEnabled(true);
}
return true;
@@ -145,27 +138,15 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
- if (key.equals(KEY_PURGE)) {
- // enable locking if purging gets enabled
- if (sharedPreferences.getBoolean(KEY_PURGE, false)) {
- lockPref.setChecked(true);
- }
- // disable uninstall if purging gets disabled
- else {
- uninstallPref.setChecked(false);
- }
- }
- // enable purging and locking if uninstall gets enabled
- if (key.equals(KEY_UNINSTALL) &&
- sharedPreferences.getBoolean(KEY_UNINSTALL, false)) {
+ // enable locking if purging gets enabled
+ if (key.equals(KEY_PURGE) &&
+ sharedPreferences.getBoolean(KEY_PURGE, false)) {
lockPref.setChecked(true);
- purgePref.setChecked(true);
}
- // disable purging and uninstalling if locking gets disabled
+ // disable purging if locking gets disabled
if (key.equals(KEY_LOCK) &&
!sharedPreferences.getBoolean(KEY_LOCK, true)) {
purgePref.setChecked(false);
- uninstallPref.setChecked(false);
}
}
@@ -179,10 +160,8 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
panicAppPref.setIcon(
android.R.drawable.ic_menu_close_clear_cancel);
- // disable panic actions
- lockPref.setEnabled(false);
+ // disable destructive panic actions
purgePref.setEnabled(false);
- uninstallPref.setEnabled(false);
} else {
// display connected panic app
try {
@@ -192,10 +171,8 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
panicAppPref.setIcon(
pm.getApplicationIcon(triggerPackageName));
- // enable panic actions
- lockPref.setEnabled(true);
+ // enable destructive panic actions
purgePref.setEnabled(true);
- uninstallPref.setEnabled(true);
} catch (PackageManager.NameNotFoundException e) {
// revert back to no app, just to be safe
PanicResponder.setTriggerPackageName(getActivity(),
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java
index 9d64d1500..2e7319575 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java
@@ -2,7 +2,6 @@ package org.briarproject.briar.android.panic;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.preference.PreferenceManager;
@@ -11,7 +10,6 @@ import org.briarproject.bramble.api.account.AccountManager;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BriarActivity;
-import org.iilab.IilabEngineeringRSA2048Pin;
import java.util.logging.Logger;
@@ -22,10 +20,8 @@ import info.guardianproject.panic.Panic;
import info.guardianproject.panic.PanicResponder;
import info.guardianproject.trustedintents.TrustedIntents;
-import static android.content.Intent.ACTION_DELETE;
import static org.briarproject.briar.android.panic.PanicPreferencesFragment.KEY_LOCK;
import static org.briarproject.briar.android.panic.PanicPreferencesFragment.KEY_PURGE;
-import static org.briarproject.briar.android.panic.PanicPreferencesFragment.KEY_UNINSTALL;
public class PanicResponderActivity extends BriarActivity {
@@ -44,8 +40,8 @@ public class PanicResponderActivity extends BriarActivity {
TrustedIntents trustedIntents = TrustedIntents.get(this);
// Guardian Project Ripple
trustedIntents.addTrustedSigner(GuardianProjectRSA4096.class);
- // Amnesty International's Panic Button, made by iilab.org
- trustedIntents.addTrustedSigner(IilabEngineeringRSA2048Pin.class);
+ // F-Droid
+ trustedIntents.addTrustedSigner(FDroidSignaturePin.class);
Intent intent = trustedIntents.getIntentFromTrustedSender(this);
if (intent != null) {
@@ -60,23 +56,16 @@ public class PanicResponderActivity extends BriarActivity {
LOG.info("Panic Trigger came from connected app");
// Performing panic responses
- if (sharedPref.getBoolean(KEY_UNINSTALL, false)) {
+ if (sharedPref.getBoolean(KEY_PURGE, false)) {
LOG.info("Purging all data...");
deleteAllData();
-
- LOG.info("Uninstalling...");
- Intent uninstall = new Intent(ACTION_DELETE);
- uninstall.setData(
- Uri.parse("package:" + getPackageName()));
- startActivity(uninstall);
- } else if (sharedPref.getBoolean(KEY_PURGE, false)) {
- LOG.info("Purging all data...");
- deleteAllData();
- } else if (sharedPref.getBoolean(KEY_LOCK, true)) {
- LOG.info("Signing out...");
- signOut(true);
}
}
+ // non-destructive actions are allowed by non-connected trusted apps
+ if (sharedPref.getBoolean(KEY_LOCK, true)) {
+ LOG.info("Signing out...");
+ signOut(true);
+ }
}
}
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 0bf72a38e..2a63f683f 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -398,6 +398,7 @@
None
Confirm Panic App
Are you sure that you want to allow %1$s to trigger destructive panic button actions?
+ Destructive Actions
Sign Out
Sign out of Briar if a panic button is pressed
Delete Account
diff --git a/briar-android/src/main/res/xml/panic_preferences.xml b/briar-android/src/main/res/xml/panic_preferences.xml
index d823e6f0f..b19d36545 100644
--- a/briar-android/src/main/res/xml/panic_preferences.xml
+++ b/briar-android/src/main/res/xml/panic_preferences.xml
@@ -2,31 +2,29 @@
-
-
-
+
-
+
+
+
+
+