Files
briar/briar-android/AndroidManifest.xml
Torsten Grote 63d87ae085 Support for Destructive Panic Actions
PanicKit does distinguish between two kinds of panic responses:

* default responses such as logging out which are non-destructive and
  do not require user interaction, so that the basics work without
  configuration
* destructive responses such as deleting user data. These require
  some sort of authentication to make sure they are not triggered
  by malicious apps

The second type of responses is implemented with this commit.

Authentication is done by comparing the package name
which is very weak. It requires the user to opt-in to
destructive responses and to configure from which app
to receive those (since there might be many different panic
trigger apps).

While possible to uninstall an app and install one with the same
package name afterwards, this always triggers notifications to
the user (if the attacker does not have root access).

Still that is no sufficient security for Briar's requirements,
so that TrustedIntents are used as well to make sure that the
app sending the destructive trigger is signed by a signing key
that we specified before. Currently, that is the one from the
GuardianProject and from IilabEngineering who does the Amnesty
International Panic App.

The responsibility of checking that the panic TRIGGER is
legitimate lies with the app responding to the trigger, so Briar
in this case. This commit checks whether the TRIGGER comes from
a trusted app before performing destructive actions,
but does perform the default action even when triggered from
untrusted apps.

Closes #210
2016-01-12 11:05:14 -02:00

218 lines
7.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.briarproject"
android:versionCode="11"
android:versionName="0.11" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="22"
xmlns:tools="http://schemas.android.com/tools"
tools:overrideLibrary="android.support.v14.preference"
/>
<uses-feature android:name="android.hardware.bluetooth" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- FIXME: Only needed for alpha and beta builds -->
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".android.BriarApplication"
android:theme="@style/BriarTheme"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:logo="@drawable/logo"
android:allowBackup="false" >
<service
android:name=".android.BriarService"
android:exported="false" >
<intent-filter>
<action android:name="org.briarproject.android.BriarService" />
</intent-filter>
</service>
<activity
android:name=".android.CrashReportActivity"
android:label="@string/crash_report_title"
android:taskAffinity="org.briarproject.android.CrashHandler"
android:excludeFromRecents="true"
android:launchMode="singleInstance"
android:process=":briar_error_handler"
android:exported="false" >
<intent-filter>
<action android:name="org.briarproject.REPORT_CRASH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".android.DashboardActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".android.ExpiredActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".android.PasswordActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateVisible" >
</activity>
<activity
android:name=".android.SettingsActivity"
android:label="@string/settings_title"
android:parentActivityName=".android.DashboardActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.DashboardActivity"
/>
</activity>
<activity
android:name=".android.SetupActivity"
android:label="@string/setup_title" >
</activity>
<activity
android:name=".android.SplashScreenActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".android.TestingActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".android.contact.ContactListActivity"
android:label="@string/contact_list_title"
android:parentActivityName=".android.DashboardActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.DashboardActivity"
/>
</activity>
<activity
android:name=".android.contact.ConversationActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
android:parentActivityName=".android.contact.ContactListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.contact.ContactListActivity"
/>
</activity>
<activity
android:name=".android.forum.AvailableForumsActivity"
android:label="@string/available_forums_title"
android:parentActivityName=".android.forum.ForumListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.forum.ForumListActivity"
/>
</activity>
<activity
android:name=".android.forum.CreateForumActivity"
android:label="@string/create_forum_title"
android:windowSoftInputMode="stateVisible"
android:parentActivityName=".android.forum.ForumListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.forum.ForumListActivity"
/>
</activity>
<activity
android:name=".android.forum.ForumActivity"
android:label="@string/app_name"
android:parentActivityName=".android.forum.ForumListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.forum.ForumListActivity"
/>
</activity>
<activity
android:name=".android.forum.ForumListActivity"
android:label="@string/forums_title"
android:parentActivityName=".android.DashboardActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.DashboardActivity"
/>
</activity>
<activity
android:name=".android.forum.ReadForumPostActivity"
android:label="@string/app_name"
android:parentActivityName=".android.forum.ForumListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.forum.ForumListActivity"
/>
</activity>
<activity
android:name=".android.forum.ShareForumActivity"
android:label="@string/app_name"
android:parentActivityName=".android.forum.ForumListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.forum.ForumListActivity"
/>
</activity>
<activity
android:name=".android.forum.WriteForumPostActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateVisible"
android:parentActivityName=".android.forum.ForumListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.forum.ForumListActivity"
/>
</activity>
<activity
android:name=".android.identity.CreateIdentityActivity"
android:label="@string/new_identity_title"
android:windowSoftInputMode="stateVisible" >
</activity>
<activity
android:name=".android.invitation.AddContactActivity"
android:label="@string/add_contact_title"
android:parentActivityName=".android.contact.ContactListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".android.contact.ContactListActivity"
/>
</activity>
<activity
android:name=".android.StartupFailureActivity"
android:label="@string/startup_failed_activity_title" >
</activity>
<activity
android:name=".android.panic.PanicPreferencesActivity"
android:label="@string/panic_setting" >
<intent-filter>
<action android:name="info.guardianproject.panic.action.CONNECT" />
<action android:name="info.guardianproject.panic.action.DISCONNECT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".android.panic.PanicResponderActivity"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay">
<!-- this can never have launchMode singleTask or singleInstance! -->
<intent-filter>
<action android:name="info.guardianproject.panic.action.TRIGGER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".android.panic.ExitActivity"
android:theme="@android:style/Theme.NoDisplay" />
</application>
</manifest>