locksettings: only log profile key removal when actually done

The message "Remove keystore profile key for user" is always being
logged at INFO level when a user's locksettings state is removed.
However, that step is only applicable for profiles, so usually it's
irrelevant and is a no-op.

It could serve as a hint that the user's locksettings state is being
removed.  However, there's already a proper log message for that.

So, let's first check whether the user actually has a profile key,
before attempting to remove it and logging that removal.

Bug: 268526331
Change-Id: I90f46bc4cf5bfe096b0b037c5b88a9a9be2dcdd6
This commit is contained in:
Eric Biggers
2023-02-27 19:20:42 +00:00
parent 0b76af4d82
commit deb0af0095

View File

@@ -2311,13 +2311,18 @@ public class LockSettingsService extends ILockSettings.Stub {
}
private void removeKeystoreProfileKey(int targetUserId) {
Slog.i(TAG, "Remove keystore profile key for user: " + targetUserId);
final String encryptAlias = PROFILE_KEY_NAME_ENCRYPT + targetUserId;
final String decryptAlias = PROFILE_KEY_NAME_DECRYPT + targetUserId;
try {
mJavaKeyStore.deleteEntry(PROFILE_KEY_NAME_ENCRYPT + targetUserId);
mJavaKeyStore.deleteEntry(PROFILE_KEY_NAME_DECRYPT + targetUserId);
if (mJavaKeyStore.containsAlias(encryptAlias) ||
mJavaKeyStore.containsAlias(decryptAlias)) {
Slogf.i(TAG, "Removing keystore profile key for user %d", targetUserId);
mJavaKeyStore.deleteEntry(encryptAlias);
mJavaKeyStore.deleteEntry(decryptAlias);
}
} catch (KeyStoreException e) {
// We have tried our best to remove all keys
Slog.e(TAG, "Unable to remove keystore profile key for user:" + targetUserId, e);
// We have tried our best to remove the key.
Slogf.e(TAG, e, "Error removing keystore profile key for user %d", targetUserId);
}
}