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.
This commit is contained in:
Hans-Christoph Steiner
2016-01-13 17:40:48 +01:00
parent c113103b82
commit f8b58079eb
2 changed files with 59 additions and 0 deletions

View File

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

View File

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