Merge "Keystore2: Integrate getState method of IKeystoreMaintenance AIDL." am: 11e324829e

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1630059

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ie9e2b82448ca1c0deb1339acee034933039cd711
This commit is contained in:
Hasini Gunasinghe
2021-03-12 17:16:30 +00:00
committed by Automerger Merge Worker
2 changed files with 32 additions and 0 deletions

View File

@@ -121,4 +121,22 @@ public class AndroidKeyStoreMaintenance {
return SYSTEM_ERROR; return SYSTEM_ERROR;
} }
} }
/**
* Queries user state from Keystore 2.0.
*
* @param userId - Android user id of the user.
* @return UserState enum variant as integer if successful or an error
*/
public static int getState(int userId) {
try {
return getService().getState(userId);
} catch (ServiceSpecificException e) {
Log.e(TAG, "getState failed", e);
return e.errorCode;
} catch (Exception e) {
Log.e(TAG, "Can not connect to keystore", e);
return SYSTEM_ERROR;
}
}
} }

View File

@@ -43,6 +43,7 @@ import android.security.keystore.KeyPermanentlyInvalidatedException;
import android.security.keystore.KeyProperties; import android.security.keystore.KeyProperties;
import android.security.keystore.KeystoreResponse; import android.security.keystore.KeystoreResponse;
import android.security.keystore.UserNotAuthenticatedException; import android.security.keystore.UserNotAuthenticatedException;
import android.security.maintenance.UserState;
import android.system.keystore2.Domain; import android.system.keystore2.Domain;
import android.util.Log; import android.util.Log;
@@ -196,6 +197,19 @@ public class KeyStore {
public State state(int userId) { public State state(int userId) {
final int ret; final int ret;
try { try {
if (android.security.keystore2.AndroidKeyStoreProvider.isInstalled()) {
int userState = AndroidKeyStoreMaintenance.getState(userId);
switch (userState) {
case UserState.UNINITIALIZED:
return KeyStore.State.UNINITIALIZED;
case UserState.LSKF_UNLOCKED:
return KeyStore.State.UNLOCKED;
case UserState.LSKF_LOCKED:
return KeyStore.State.LOCKED;
default:
throw new AssertionError(KeyStore.VALUE_CORRUPTED);
}
}
ret = mBinder.getState(userId); ret = mBinder.getState(userId);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(TAG, "Cannot connect to keystore", e); Log.w(TAG, "Cannot connect to keystore", e);