Files
app_Settings/res/xml/install_certificate_from_storage.xml
Victor Hsieh c8a1960cf4 Support installation of the new app source certificate
The new certificate can be installed from Settings ("Install a
certificate > App Source certificate").  The installation flow includes
a warning with user authorization to proceed, then a prompt for reboot
(now or later).

Installed certificate can be managed in "User credentials".  The name is
currently a hash of hex numbers.

Upon deletion, there will also be a promot for reboot (now or later).

Test: Only see the new setting entry if feature is enabled
Test: Install from Settings, see the expected file name in
      /data/misc/keysetore/user_0.  Reboot also works.
Test: Able to see the certificate in Settings after installed
Test: Able to delete the certificate, which triggers confirmation dialog
      to reboot.  Reboot works.
Test: add certificate, see dialog, "not now" / tapping elsewhere does
      nothing
Test: atest RestrictedEncryptionPreferenceControllerTest
Bug: 112038744

Change-Id: I7a4494ea0f243730df2212076588074d8774ae23
2019-11-27 07:59:22 -08:00

79 lines
2.9 KiB
XML

<!--
~ Copyright (C) 2019 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/credentials_install"
android:key="install_certificate_from_storage">
<PreferenceCategory
android:key="certificate_types">
<Preference
android:key="install_ca_certificate"
android:title="@string/ca_certificate">
<intent
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.security.InstallCaCertificateWarning">
</intent>
</Preference>
<Preference
android:key="install_user_certificate"
android:title="@string/user_certificate">
<intent
android:action="android.credentials.INSTALL"
android:targetPackage="com.android.certinstaller"
android:targetClass="com.android.certinstaller.CertInstallerMain">
<!-- Same value as CERTIFICATE_USAGE_USER in keystore/java/android/security/Credentials.java -->
<extra android:name="certificate_install_usage" android:value="user"/>
</intent>
</Preference>
<Preference
android:key="install_wifi_certificate"
android:title="@string/wifi_certificate">
<intent
android:action="android.credentials.INSTALL"
android:targetPackage="com.android.certinstaller"
android:targetClass="com.android.certinstaller.CertInstallerMain">
<!-- Same value as CERTIFICATE_USAGE_WIFI in keystore/java/android/security/Credentials.java -->
<extra android:name="certificate_install_usage" android:value="wifi"/>
</intent>
</Preference>
<Preference
android:key="install_app_src_certificate"
android:title="@string/app_src_certificate"
settings:controller="com.android.settings.security.InstallAppSourceCertificatePreferenceController">
<intent
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.security.InstallAppSourceCertificateWarning">
</intent>
</Preference>
</PreferenceCategory>
</PreferenceScreen>