Enable the clear credentials buttons when wifi keys are installed.

This patch updates the ResetCredentialsPreferenceController to check the
WIFI keystore namespace if called by the primary user.

Test: Install a WIFI certificate or key and watch the
      "Clear credentials" button become enabled in the credential
      storage dialog of Settings.
Bug: 189601008
Merged-In: I69828b64a7e3c707c27b4582d64ff0ddb863a4ff
Change-Id: I69828b64a7e3c707c27b4582d64ff0ddb863a4ff
This commit is contained in:
Janis Danisevskis
2021-06-01 11:44:16 -07:00
parent c0245bb982
commit 552992ac12

View File

@@ -18,6 +18,8 @@ package com.android.settings.security;
import android.content.Context;
import android.os.UserManager;
import android.security.keystore.KeyProperties;
import android.security.keystore2.AndroidKeyStoreLoadStoreParameter;
import androidx.preference.PreferenceScreen;
@@ -35,6 +37,7 @@ public class ResetCredentialsPreferenceController extends RestrictedEncryptionPr
private static final String KEY_RESET_CREDENTIALS = "credentials_reset";
private final KeyStore mKeyStore;
private final KeyStore mWifiKeyStore;
private RestrictedPreference mPreference;
@@ -45,8 +48,19 @@ public class ResetCredentialsPreferenceController extends RestrictedEncryptionPr
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
} catch (Exception e) {
keyStore = null;
}
mKeyStore = keyStore;
keyStore = null;
if (context.getUser().isSystem()) {
try {
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(new AndroidKeyStoreLoadStoreParameter(KeyProperties.NAMESPACE_WIFI));
} catch (Exception e) {
keyStore = null;
}
}
mWifiKeyStore = keyStore;
if (lifecycle != null) {
lifecycle.addObserver(this);
}
@@ -68,9 +82,11 @@ public class ResetCredentialsPreferenceController extends RestrictedEncryptionPr
if (mPreference != null && !mPreference.isDisabledByAdmin()) {
boolean isEnabled = false;
try {
if (mKeyStore != null) {
isEnabled = mKeyStore.aliases().hasMoreElements();
}
isEnabled = (mKeyStore != null
&& mKeyStore.aliases().hasMoreElements())
|| (mWifiKeyStore != null
&& mWifiKeyStore.aliases().hasMoreElements());
} catch (KeyStoreException e) {
// If access to keystore fails, treat as disabled.
}