Commit 1f4acc27 authored by Yusuf Sengul's avatar Yusuf Sengul Committed by Commit Bot

Increase timeout to retrieve encryption key

Bug: 1001036
Change-Id: I44338b1fae6cdb85631b8178d3cfd2a5eb465193
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1787737Reviewed-by: default avatarTien Mai <tienmai@chromium.org>
Commit-Queue: Yusuf Sengul <yusufsn@google.com>
Cr-Commit-Position: refs/heads/master@{#693741}
parent 7bd22b5c
...@@ -40,7 +40,11 @@ ...@@ -40,7 +40,11 @@
namespace credential_provider { namespace credential_provider {
const base::TimeDelta const base::TimeDelta
PasswordRecoveryManager::kDefaultEscrowServiceRequestTimeout = PasswordRecoveryManager::kDefaultEscrowServiceEncryptionKeyRequestTimeout =
base::TimeDelta::FromMilliseconds(12000);
const base::TimeDelta
PasswordRecoveryManager::kDefaultEscrowServiceDecryptionKeyRequestTimeout =
base::TimeDelta::FromMilliseconds(3000); base::TimeDelta::FromMilliseconds(3000);
namespace { namespace {
...@@ -629,15 +633,19 @@ PasswordRecoveryManager* PasswordRecoveryManager::Get() { ...@@ -629,15 +633,19 @@ PasswordRecoveryManager* PasswordRecoveryManager::Get() {
// static // static
PasswordRecoveryManager** PasswordRecoveryManager::GetInstanceStorage() { PasswordRecoveryManager** PasswordRecoveryManager::GetInstanceStorage() {
static PasswordRecoveryManager instance(kDefaultEscrowServiceRequestTimeout); static PasswordRecoveryManager instance(
kDefaultEscrowServiceEncryptionKeyRequestTimeout,
kDefaultEscrowServiceDecryptionKeyRequestTimeout);
static PasswordRecoveryManager* instance_storage = &instance; static PasswordRecoveryManager* instance_storage = &instance;
return &instance_storage; return &instance_storage;
} }
PasswordRecoveryManager::PasswordRecoveryManager( PasswordRecoveryManager::PasswordRecoveryManager(
base::TimeDelta request_timeout) base::TimeDelta encryption_key_timeout,
: request_timeout_(request_timeout) {} base::TimeDelta decryption_key_timeout)
: encryption_key_request_timeout_(encryption_key_timeout),
decryption_key_request_timeout_(decryption_key_timeout) {}
PasswordRecoveryManager::~PasswordRecoveryManager() = default; PasswordRecoveryManager::~PasswordRecoveryManager() = default;
...@@ -688,7 +696,8 @@ HRESULT PasswordRecoveryManager::StoreWindowsPasswordIfNeeded( ...@@ -688,7 +696,8 @@ HRESULT PasswordRecoveryManager::StoreWindowsPasswordIfNeeded(
base::Optional<base::Value> encrypted_dict; base::Optional<base::Value> encrypted_dict;
hr = EncryptUserPasswordUsingEscrowService(access_token, device_id, password, hr = EncryptUserPasswordUsingEscrowService(access_token, device_id, password,
request_timeout_, &encrypted_dict); encryption_key_request_timeout_,
&encrypted_dict);
if (SUCCEEDED(hr)) { if (SUCCEEDED(hr)) {
std::string lsa_value; std::string lsa_value;
if (base::JSONWriter::Write(encrypted_dict.value(), &lsa_value)) { if (base::JSONWriter::Write(encrypted_dict.value(), &lsa_value)) {
...@@ -748,8 +757,9 @@ HRESULT PasswordRecoveryManager::RecoverWindowsPasswordIfPossible( ...@@ -748,8 +757,9 @@ HRESULT PasswordRecoveryManager::RecoverWindowsPasswordIfPossible(
SecurelyClearBuffer(password_lsa_data, sizeof(password_lsa_data)); SecurelyClearBuffer(password_lsa_data, sizeof(password_lsa_data));
base::string16 decrypted_password; base::string16 decrypted_password;
hr = DecryptUserPasswordUsingEscrowService( hr = DecryptUserPasswordUsingEscrowService(access_token, encrypted_dict,
access_token, encrypted_dict, request_timeout_, &decrypted_password); decryption_key_request_timeout_,
&decrypted_password);
if (encrypted_dict) { if (encrypted_dict) {
SecurelyClearDictionaryValueWithKey( SecurelyClearDictionaryValueWithKey(
......
...@@ -18,8 +18,13 @@ namespace credential_provider { ...@@ -18,8 +18,13 @@ namespace credential_provider {
// a given user and to retrieve this encrypted password. // a given user and to retrieve this encrypted password.
class PasswordRecoveryManager { class PasswordRecoveryManager {
public: public:
// Default timeout when trying to make requests to the EMM escrow service. // Default timeout when trying to make requests to the EMM escrow service to
static const base::TimeDelta kDefaultEscrowServiceRequestTimeout; // retrieve encryption key.
static const base::TimeDelta kDefaultEscrowServiceEncryptionKeyRequestTimeout;
// Default timeout when trying to make requests to the EMM escrow service to
// retrieve decryption key.
static const base::TimeDelta kDefaultEscrowServiceDecryptionKeyRequestTimeout;
static PasswordRecoveryManager* Get(); static PasswordRecoveryManager* Get();
...@@ -47,11 +52,14 @@ class PasswordRecoveryManager { ...@@ -47,11 +52,14 @@ class PasswordRecoveryManager {
// Returns the storage used for the instance pointer. // Returns the storage used for the instance pointer.
static PasswordRecoveryManager** GetInstanceStorage(); static PasswordRecoveryManager** GetInstanceStorage();
explicit PasswordRecoveryManager(base::TimeDelta request_timeout); explicit PasswordRecoveryManager(
base::TimeDelta encryption_key_request_timeout,
base::TimeDelta decryption_key_request_timeout);
virtual ~PasswordRecoveryManager(); virtual ~PasswordRecoveryManager();
void SetRequestTimeoutForTesting(base::TimeDelta request_timeout) { void SetRequestTimeoutForTesting(base::TimeDelta request_timeout) {
request_timeout_ = request_timeout; encryption_key_request_timeout_ = request_timeout;
decryption_key_request_timeout_ = request_timeout;
} }
std::string MakeGenerateKeyPairResponseForTesting( std::string MakeGenerateKeyPairResponseForTesting(
const std::string& public_key, const std::string& public_key,
...@@ -60,8 +68,8 @@ class PasswordRecoveryManager { ...@@ -60,8 +68,8 @@ class PasswordRecoveryManager {
const std::string& private_key); const std::string& private_key);
private: private:
base::TimeDelta encryption_key_request_timeout_;
base::TimeDelta request_timeout_; base::TimeDelta decryption_key_request_timeout_;
}; };
} // namespace credential_provider } // namespace credential_provider
......
...@@ -694,11 +694,16 @@ void FakeInternetAvailabilityChecker::SetHasInternetConnection( ...@@ -694,11 +694,16 @@ void FakeInternetAvailabilityChecker::SetHasInternetConnection(
FakePasswordRecoveryManager::FakePasswordRecoveryManager() FakePasswordRecoveryManager::FakePasswordRecoveryManager()
: FakePasswordRecoveryManager( : FakePasswordRecoveryManager(
PasswordRecoveryManager::kDefaultEscrowServiceRequestTimeout) {} PasswordRecoveryManager::
kDefaultEscrowServiceEncryptionKeyRequestTimeout,
PasswordRecoveryManager::
kDefaultEscrowServiceDecryptionKeyRequestTimeout) {}
FakePasswordRecoveryManager::FakePasswordRecoveryManager( FakePasswordRecoveryManager::FakePasswordRecoveryManager(
base::TimeDelta request_timeout) base::TimeDelta encryption_key_request_timeout,
: PasswordRecoveryManager(request_timeout), base::TimeDelta decryption_key_request_timeout)
: PasswordRecoveryManager(encryption_key_request_timeout,
decryption_key_request_timeout),
original_validator_(*GetInstanceStorage()) { original_validator_(*GetInstanceStorage()) {
*GetInstanceStorage() = this; *GetInstanceStorage() = this;
} }
......
...@@ -376,7 +376,9 @@ class FakeInternetAvailabilityChecker : public InternetAvailabilityChecker { ...@@ -376,7 +376,9 @@ class FakeInternetAvailabilityChecker : public InternetAvailabilityChecker {
class FakePasswordRecoveryManager : public PasswordRecoveryManager { class FakePasswordRecoveryManager : public PasswordRecoveryManager {
public: public:
FakePasswordRecoveryManager(); FakePasswordRecoveryManager();
explicit FakePasswordRecoveryManager(base::TimeDelta request_timeout); explicit FakePasswordRecoveryManager(
base::TimeDelta encryption_key_request_timeout,
base::TimeDelta decryption_key_request_timeout);
~FakePasswordRecoveryManager() override; ~FakePasswordRecoveryManager() override;
using PasswordRecoveryManager::MakeGenerateKeyPairResponseForTesting; using PasswordRecoveryManager::MakeGenerateKeyPairResponseForTesting;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment