Index: chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.cc |
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.cc |
index ee898ce61255cf565ddc1fd67123b91386470c0c..2ede1fde0949d57ea9dfcb3eb5fc0c99823908f8 100644 |
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.cc |
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_create_keys_operation.cc |
@@ -344,11 +344,13 @@ void EasyUnlockCreateKeysOperation::OnGetSystemSalt( |
true, // clobber |
base::Bind(&EasyUnlockCreateKeysOperation::OnKeyCreated, |
weak_ptr_factory_.GetWeakPtr(), |
- index)); |
+ index, |
+ user_key)); |
} |
void EasyUnlockCreateKeysOperation::OnKeyCreated( |
size_t index, |
+ const Key& user_key, |
bool success, |
cryptohome::MountError return_code) { |
DCHECK_EQ(key_creation_index_, index); |
@@ -359,6 +361,13 @@ void EasyUnlockCreateKeysOperation::OnKeyCreated( |
return; |
} |
+ // Update user context when the key used for signing in is changed. |
+ if (user_context_.GetAuthFlow() == UserContext::AUTH_FLOW_EASY_UNLOCK && |
+ user_context_.GetKey()->GetLabel() == |
+ EasyUnlockKeyManager::GetKeyLabel(key_creation_index_)) { |
+ user_context_.SetKey(user_key); |
+ } |
+ |
++key_creation_index_; |
CreateKeyForDeviceAtIndex(key_creation_index_); |
} |