| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/proximity_auth/cryptauth/cryptauth_device_manager.h" | 5 #include "components/proximity_auth/cryptauth/cryptauth_device_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/base64url.h" | 10 #include "base/base64url.h" |
| 10 #include "base/prefs/pref_registry_simple.h" | 11 #include "base/prefs/pref_registry_simple.h" |
| 11 #include "base/prefs/pref_service.h" | 12 #include "base/prefs/pref_service.h" |
| 12 #include "base/prefs/scoped_user_pref_update.h" | 13 #include "base/prefs/scoped_user_pref_update.h" |
| 13 #include "components/proximity_auth/cryptauth/cryptauth_client.h" | 14 #include "components/proximity_auth/cryptauth/cryptauth_client.h" |
| 14 #include "components/proximity_auth/cryptauth/pref_names.h" | 15 #include "components/proximity_auth/cryptauth/pref_names.h" |
| 15 #include "components/proximity_auth/cryptauth/sync_scheduler_impl.h" | 16 #include "components/proximity_auth/cryptauth/sync_scheduler_impl.h" |
| 16 #include "components/proximity_auth/logging/logging.h" | 17 #include "components/proximity_auth/logging/logging.h" |
| 17 | 18 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 base::Base64UrlEncodePolicy::INCLUDE_PADDING, | 52 base::Base64UrlEncodePolicy::INCLUDE_PADDING, |
| 52 &device_name_b64); | 53 &device_name_b64); |
| 53 base::Base64UrlEncode(device.bluetooth_address(), | 54 base::Base64UrlEncode(device.bluetooth_address(), |
| 54 base::Base64UrlEncodePolicy::INCLUDE_PADDING, | 55 base::Base64UrlEncodePolicy::INCLUDE_PADDING, |
| 55 &bluetooth_address_b64); | 56 &bluetooth_address_b64); |
| 56 | 57 |
| 57 dictionary->SetString(kExternalDeviceKeyPublicKey, public_key_b64); | 58 dictionary->SetString(kExternalDeviceKeyPublicKey, public_key_b64); |
| 58 dictionary->SetString(kExternalDeviceKeyDeviceName, device_name_b64); | 59 dictionary->SetString(kExternalDeviceKeyDeviceName, device_name_b64); |
| 59 dictionary->SetString(kExternalDeviceKeyBluetoothAddress, | 60 dictionary->SetString(kExternalDeviceKeyBluetoothAddress, |
| 60 bluetooth_address_b64); | 61 bluetooth_address_b64); |
| 61 return dictionary.Pass(); | 62 return dictionary; |
| 62 } | 63 } |
| 63 | 64 |
| 64 // Converts an unlock key dictionary stored in user prefs to an | 65 // Converts an unlock key dictionary stored in user prefs to an |
| 65 // ExternalDeviceInfo proto. Returns true if the dictionary is valid, and the | 66 // ExternalDeviceInfo proto. Returns true if the dictionary is valid, and the |
| 66 // parsed proto is written to |external_device|. | 67 // parsed proto is written to |external_device|. |
| 67 bool DictionaryToUnlockKey(const base::DictionaryValue& dictionary, | 68 bool DictionaryToUnlockKey(const base::DictionaryValue& dictionary, |
| 68 cryptauth::ExternalDeviceInfo* external_device) { | 69 cryptauth::ExternalDeviceInfo* external_device) { |
| 69 std::string public_key_b64, device_name_b64, bluetooth_address_b64; | 70 std::string public_key_b64, device_name_b64, bluetooth_address_b64; |
| 70 if (!dictionary.GetString(kExternalDeviceKeyPublicKey, &public_key_b64) || | 71 if (!dictionary.GetString(kExternalDeviceKeyPublicKey, &public_key_b64) || |
| 71 !dictionary.GetString(kExternalDeviceKeyDeviceName, &device_name_b64) || | 72 !dictionary.GetString(kExternalDeviceKeyDeviceName, &device_name_b64) || |
| (...skipping 25 matching lines...) Expand all Loading... |
| 97 return true; | 98 return true; |
| 98 } | 99 } |
| 99 | 100 |
| 100 } // namespace | 101 } // namespace |
| 101 | 102 |
| 102 CryptAuthDeviceManager::CryptAuthDeviceManager( | 103 CryptAuthDeviceManager::CryptAuthDeviceManager( |
| 103 scoped_ptr<base::Clock> clock, | 104 scoped_ptr<base::Clock> clock, |
| 104 scoped_ptr<CryptAuthClientFactory> client_factory, | 105 scoped_ptr<CryptAuthClientFactory> client_factory, |
| 105 CryptAuthGCMManager* gcm_manager, | 106 CryptAuthGCMManager* gcm_manager, |
| 106 PrefService* pref_service) | 107 PrefService* pref_service) |
| 107 : clock_(clock.Pass()), | 108 : clock_(std::move(clock)), |
| 108 client_factory_(client_factory.Pass()), | 109 client_factory_(std::move(client_factory)), |
| 109 gcm_manager_(gcm_manager), | 110 gcm_manager_(gcm_manager), |
| 110 pref_service_(pref_service), | 111 pref_service_(pref_service), |
| 111 weak_ptr_factory_(this) { | 112 weak_ptr_factory_(this) { |
| 112 UpdateUnlockKeysFromPrefs(); | 113 UpdateUnlockKeysFromPrefs(); |
| 113 } | 114 } |
| 114 | 115 |
| 115 CryptAuthDeviceManager::~CryptAuthDeviceManager() { | 116 CryptAuthDeviceManager::~CryptAuthDeviceManager() { |
| 116 gcm_manager_->RemoveObserver(this); | 117 gcm_manager_->RemoveObserver(this); |
| 117 } | 118 } |
| 118 | 119 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 PA_LOG(ERROR) << "Can not get dictionary in list of unlock keys " | 260 PA_LOG(ERROR) << "Can not get dictionary in list of unlock keys " |
| 260 << "(index=" << i << "):\n" << *unlock_key_list; | 261 << "(index=" << i << "):\n" << *unlock_key_list; |
| 261 } | 262 } |
| 262 } | 263 } |
| 263 } | 264 } |
| 264 | 265 |
| 265 void CryptAuthDeviceManager::OnSyncRequested( | 266 void CryptAuthDeviceManager::OnSyncRequested( |
| 266 scoped_ptr<SyncScheduler::SyncRequest> sync_request) { | 267 scoped_ptr<SyncScheduler::SyncRequest> sync_request) { |
| 267 FOR_EACH_OBSERVER(Observer, observers_, OnSyncStarted()); | 268 FOR_EACH_OBSERVER(Observer, observers_, OnSyncStarted()); |
| 268 | 269 |
| 269 sync_request_ = sync_request.Pass(); | 270 sync_request_ = std::move(sync_request); |
| 270 cryptauth_client_ = client_factory_->CreateInstance(); | 271 cryptauth_client_ = client_factory_->CreateInstance(); |
| 271 | 272 |
| 272 cryptauth::InvocationReason invocation_reason = | 273 cryptauth::InvocationReason invocation_reason = |
| 273 cryptauth::INVOCATION_REASON_UNKNOWN; | 274 cryptauth::INVOCATION_REASON_UNKNOWN; |
| 274 | 275 |
| 275 int reason_stored_in_prefs = | 276 int reason_stored_in_prefs = |
| 276 pref_service_->GetInteger(prefs::kCryptAuthDeviceSyncReason); | 277 pref_service_->GetInteger(prefs::kCryptAuthDeviceSyncReason); |
| 277 | 278 |
| 278 // If the sync attempt is not forced, it is acceptable for CryptAuth to return | 279 // If the sync attempt is not forced, it is acceptable for CryptAuth to return |
| 279 // a cached copy of the user's devices, rather taking a database hit for the | 280 // a cached copy of the user's devices, rather taking a database hit for the |
| (...skipping 17 matching lines...) Expand all Loading... |
| 297 request.set_invocation_reason(invocation_reason); | 298 request.set_invocation_reason(invocation_reason); |
| 298 request.set_allow_stale_read(is_sync_speculative); | 299 request.set_allow_stale_read(is_sync_speculative); |
| 299 cryptauth_client_->GetMyDevices( | 300 cryptauth_client_->GetMyDevices( |
| 300 request, base::Bind(&CryptAuthDeviceManager::OnGetMyDevicesSuccess, | 301 request, base::Bind(&CryptAuthDeviceManager::OnGetMyDevicesSuccess, |
| 301 weak_ptr_factory_.GetWeakPtr()), | 302 weak_ptr_factory_.GetWeakPtr()), |
| 302 base::Bind(&CryptAuthDeviceManager::OnGetMyDevicesFailure, | 303 base::Bind(&CryptAuthDeviceManager::OnGetMyDevicesFailure, |
| 303 weak_ptr_factory_.GetWeakPtr())); | 304 weak_ptr_factory_.GetWeakPtr())); |
| 304 } | 305 } |
| 305 | 306 |
| 306 } // namespace proximity_auth | 307 } // namespace proximity_auth |
| OLD | NEW |