aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain
diff options
context:
space:
mode:
authorHans-Christoph Steiner <hans@eds.org>2016-01-13 17:40:48 +0100
committerHans-Christoph Steiner <hans@eds.org>2016-01-13 23:19:11 +0100
commitf8b58079ebe533715671e3701a5eb2f56cf00f03 (patch)
tree21d4763189f5fbe81366c860947befa152c3da59 /OpenKeychain
parentc113103b82b672dcc7edd9d4d2d3bce6ad4282a8 (diff)
downloadopen-keychain-f8b58079ebe533715671e3701a5eb2f56cf00f03.tar.gz
open-keychain-f8b58079ebe533715671e3701a5eb2f56cf00f03.tar.bz2
open-keychain-f8b58079ebe533715671e3701a5eb2f56cf00f03.zip
respond to generic panic trigger Intent by clearing passphrases
PanicKit provides a common framework for creating "panic button" apps that can trigger actions in "panic responder" apps. In this case, the response is to clear all the cached passphrases.
Diffstat (limited to 'OpenKeychain')
-rw-r--r--OpenKeychain/src/main/AndroidManifest.xml11
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PanicResponderActivity.java48
2 files changed, 59 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml
index 86836741b..d7207ef9b 100644
--- a/OpenKeychain/src/main/AndroidManifest.xml
+++ b/OpenKeychain/src/main/AndroidManifest.xml
@@ -772,6 +772,17 @@
android:name=".ui.HelpActivity"
android:label="@string/title_help" />
+ <activity
+ android:name=".ui.PanicResponderActivity"
+ android:noHistory="true"
+ android:theme="@android:style/Theme.NoDisplay">
+ <intent-filter>
+ <action android:name="info.guardianproject.panic.action.TRIGGER" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
<!-- Internal services/content providers (not exported) -->
<service
android:name=".service.PassphraseCacheService"
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PanicResponderActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PanicResponderActivity.java
new file mode 100644
index 000000000..1363d6fbf
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PanicResponderActivity.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015-2016 Hans-Christoph Steiner <hans@eds.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.sufficientlysecure.keychain.ui;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+
+import org.sufficientlysecure.keychain.service.PassphraseCacheService;
+
+public class PanicResponderActivity extends Activity {
+
+ public static final String PANIC_TRIGGER_ACTION = "info.guardianproject.panic.action.TRIGGER";
+
+ @SuppressLint("NewApi")
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ if (intent != null && PANIC_TRIGGER_ACTION.equals(intent.getAction())) {
+ PassphraseCacheService.clearCachedPassphrases(this);
+ }
+
+ if (Build.VERSION.SDK_INT >= 21) {
+ finishAndRemoveTask();
+ } else {
+ finish();
+ }
+ }
+}