summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tianjie <xunchang@google.com> 2021-01-13 23:40:18 -0800
committer Tianjie <xunchang@google.com> 2021-01-13 23:40:18 -0800
commit4ec033ca8a0ccc4deceb7d2bc9124ad2929fdf0a (patch)
treee713ce77589b22df8d46e2b99e2aa2576ff2a677
parent3b26172c84c8783c05b16556754e2d8c3c97ac2f (diff)
Do not remove the k_k until all users are unlocked
The key in keystore is used to encrypt the escrow data. We need to iterate over all users before deleting it from key store. Otherwise, the RoR for the 2nd user will fail. Bug: 172780686 Test: atest CtsAppSecurityHostTestCases:ResumeOnRebootHostTest#resumeOnReboot_TwoUsers_BothUserUnlock_Success Change-Id: I82d94195fe5716d42e363604be5ead3eb3e300fd
-rw-r--r--services/core/java/com/android/server/locksettings/RebootEscrowManager.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
index 289290bab4dc..fbec91576ca1 100644
--- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
@@ -224,6 +224,10 @@ class RebootEscrowManager {
for (UserInfo user : rebootEscrowUsers) {
allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey, kk);
}
+
+ // Clear the old key in keystore. A new key will be generated by new RoR requests.
+ mKeyStoreManager.clearKeyStoreEncryptionKey();
+
onEscrowRestoreComplete(allUsersUnlocked);
}
@@ -273,9 +277,6 @@ class RebootEscrowManager {
} catch (IOException e) {
Slog.w(TAG, "Could not load reboot escrow data for user " + userId, e);
return false;
- } finally {
- // Clear the old key in keystore. A new key will be generated by new RoR requests.
- mKeyStoreManager.clearKeyStoreEncryptionKey();
}
}