diff options
| author | 2021-01-13 23:40:18 -0800 | |
|---|---|---|
| committer | 2021-01-13 23:40:18 -0800 | |
| commit | 4ec033ca8a0ccc4deceb7d2bc9124ad2929fdf0a (patch) | |
| tree | e713ce77589b22df8d46e2b99e2aa2576ff2a677 | |
| parent | 3b26172c84c8783c05b16556754e2d8c3c97ac2f (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.java | 7 |
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(); } } |