Add KeyStore storage type to Settings UI
Give the user an idea of what kind of credential storage is in use on
this device for keystore daemon.
(cherry picked from commit 39b56008be0ad0b50fd65ec8fc1c6f9d81d60959)
Change-Id: Id89a1e210b3627914f080b0925bd0d0585872dd2
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7b028db..7c9ccd3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3522,6 +3522,12 @@
<string name="trusted_credentials">Trusted credentials</string>
<!-- Summary of preference to display trusted credentials (aka CA certificates) [CHAR LIMIT=NONE] -->
<string name="trusted_credentials_summary">Display trusted CA certificates</string>
+ <!-- Title of preference of what type of credential storage this device has: hardware or software [CHAR LIMIT=30] -->
+ <string name="credential_storage_type">Storage type</string>
+ <!-- Summary text for preference showing what type of credential storage this device has when it is stored in a hardware-backed storage (as opposed to "software only") [CHAR LIMIT=NONE] -->
+ <string name="credential_storage_type_hardware">Hardware-backed</string>
+ <!-- Summary text for preference showing what type of credential storage this device has when it is stored in software only (as opposed to "hardware-backed") [CHAR LIMIT=NONE] -->
+ <string name="credential_storage_type_software">Software only</string>
<!-- Message to draw an unlock pattern when installing credentials -->
<string name="credentials_install_gesture_prompt">Draw your unlock pattern</string>
diff --git a/res/xml/security_settings_misc.xml b/res/xml/security_settings_misc.xml
index ee87e51..10fc98f 100644
--- a/res/xml/security_settings_misc.xml
+++ b/res/xml/security_settings_misc.xml
@@ -63,6 +63,11 @@
<PreferenceCategory android:key="credentials_management"
android:title="@string/credentials_title"
android:persistent="false">
+ <Preference android:key="credential_storage_type"
+ android:title="@string/credential_storage_type"
+ style="?android:attr/preferenceInformationStyle"
+ android:persistent="false" />
+
<Preference android:title="@string/trusted_credentials"
android:summary="@string/trusted_credentials_summary"
android:persistent="false"
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 00a0e09..971a196 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -73,6 +73,7 @@
// Misc Settings
private static final String KEY_SIM_LOCK = "sim_lock";
private static final String KEY_SHOW_PASSWORD = "show_password";
+ private static final String KEY_CREDENTIAL_STORAGE_TYPE = "credential_storage_type";
private static final String KEY_RESET_CREDENTIALS = "reset_credentials";
private static final String KEY_TOGGLE_INSTALL_APPLICATIONS = "toggle_install_applications";
private static final String KEY_TOGGLE_VERIFY_APPLICATIONS = "toggle_verify_applications";
@@ -91,6 +92,7 @@
private CheckBoxPreference mShowPassword;
+ private KeyStore mKeyStore;
private Preference mResetCredentials;
private CheckBoxPreference mToggleAppInstallation;
@@ -231,6 +233,14 @@
// Credential storage, only for primary user
if (mIsPrimary) {
+ mKeyStore = KeyStore.getInstance();
+ Preference credentialStorageType = root.findPreference(KEY_CREDENTIAL_STORAGE_TYPE);
+
+ final int storageSummaryRes =
+ mKeyStore.isHardwareBacked() ? R.string.credential_storage_type_hardware
+ : R.string.credential_storage_type_software;
+ credentialStorageType.setSummary(storageSummaryRes);
+
mResetCredentials = root.findPreference(KEY_RESET_CREDENTIALS);
} else {
removePreference(KEY_CREDENTIALS_MANAGER);
@@ -427,8 +437,7 @@
}
if (mResetCredentials != null) {
- KeyStore keyStore = KeyStore.getInstance();
- mResetCredentials.setEnabled(!keyStore.isUnlocked());
+ mResetCredentials.setEnabled(!mKeyStore.isUnlocked());
}
}