Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: chrome/browser/signin/easy_unlock_service_regular.cc

Issue 2863533003: [EasyUnlock] Serialize and store BeaconSeeds along as cryptohome key metadata. (Closed)
Patch Set: comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/signin/easy_unlock_service_regular.h" 5 #include "chrome/browser/signin/easy_unlock_service_regular.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/base64url.h" 11 #include "base/base64url.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/json/json_string_value_serializer.h"
14 #include "base/logging.h" 15 #include "base/logging.h"
15 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
16 #include "base/sys_info.h" 17 #include "base/sys_info.h"
17 #include "base/time/default_clock.h" 18 #include "base/time/default_clock.h"
18 #include "base/values.h" 19 #include "base/values.h"
19 #include "build/build_config.h" 20 #include "build/build_config.h"
20 #include "chrome/browser/browser_process.h" 21 #include "chrome/browser/browser_process.h"
21 #include "chrome/browser/cryptauth/chrome_cryptauth_service_factory.h" 22 #include "chrome/browser/cryptauth/chrome_cryptauth_service_factory.h"
22 #include "chrome/browser/gcm/gcm_profile_service_factory.h" 23 #include "chrome/browser/gcm/gcm_profile_service_factory.h"
23 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 &b64_psk); 129 &b64_psk);
129 130
130 dict->SetString("name", device.name); 131 dict->SetString("name", device.name);
131 dict->SetString("psk", b64_psk); 132 dict->SetString("psk", b64_psk);
132 dict->SetString("bluetoothAddress", device.bluetooth_address); 133 dict->SetString("bluetoothAddress", device.bluetooth_address);
133 dict->SetString("permitId", "permit://google.com/easyunlock/v1/" + 134 dict->SetString("permitId", "permit://google.com/easyunlock/v1/" +
134 proximity_auth_client()->GetAccountId()); 135 proximity_auth_client()->GetAccountId());
135 dict->SetString("permitRecord.id", b64_public_key); 136 dict->SetString("permitRecord.id", b64_public_key);
136 dict->SetString("permitRecord.type", "license"); 137 dict->SetString("permitRecord.type", "license");
137 dict->SetString("permitRecord.data", b64_public_key); 138 dict->SetString("permitRecord.data", b64_public_key);
139
140 // TODO(tengs): Retrieve the actual BeaconSeeds from the RemoteDevice.
141 std::vector<cryptauth::BeaconSeed> beacon_seeds;
142 std::unique_ptr<base::ListValue> beacon_seed_list(new base::ListValue());
143 for (const auto& beacon_seed : beacon_seeds) {
144 std::string b64_beacon_seed;
145 base::Base64UrlEncode(beacon_seed.SerializeAsString(),
146 base::Base64UrlEncodePolicy::INCLUDE_PADDING,
147 &b64_beacon_seed);
148 beacon_seed_list->AppendString(b64_beacon_seed);
149 }
150
151 std::string serialized_beacon_seeds;
152 JSONStringValueSerializer serializer(&serialized_beacon_seeds);
153 serializer.Serialize(*beacon_seed_list);
154 dict->SetString("serializedBeaconSeeds", serialized_beacon_seeds);
155
138 device_list->Append(std::move(dict)); 156 device_list->Append(std::move(dict));
139 } 157 }
140 158
141 // TODO(tengs): Rename this function after the easy_unlock app is replaced. 159 // TODO(tengs): Rename this function after the easy_unlock app is replaced.
142 SetRemoteDevices(*device_list); 160 SetRemoteDevices(*device_list);
143 #endif 161 #endif
144 } 162 }
145 163
146 EasyUnlockService::Type EasyUnlockServiceRegular::GetType() const { 164 EasyUnlockService::Type EasyUnlockServiceRegular::GetType() const {
147 return EasyUnlockService::TYPE_REGULAR; 165 return EasyUnlockService::TYPE_REGULAR;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 const base::DictionaryValue* pairing_dict = 266 const base::DictionaryValue* pairing_dict =
249 profile()->GetPrefs()->GetDictionary(prefs::kEasyUnlockPairing); 267 profile()->GetPrefs()->GetDictionary(prefs::kEasyUnlockPairing);
250 const base::ListValue* devices = NULL; 268 const base::ListValue* devices = NULL;
251 if (pairing_dict && pairing_dict->GetList(kKeyDevices, &devices)) 269 if (pairing_dict && pairing_dict->GetList(kKeyDevices, &devices))
252 return devices; 270 return devices;
253 return NULL; 271 return NULL;
254 } 272 }
255 273
256 void EasyUnlockServiceRegular::SetRemoteDevices( 274 void EasyUnlockServiceRegular::SetRemoteDevices(
257 const base::ListValue& devices) { 275 const base::ListValue& devices) {
276 std::string remote_devices_json;
277 JSONStringValueSerializer serializer(&remote_devices_json);
278 serializer.Serialize(devices);
279 PA_LOG(INFO) << "Setting RemoteDevices:\n " << remote_devices_json;
280
258 DictionaryPrefUpdate pairing_update(profile()->GetPrefs(), 281 DictionaryPrefUpdate pairing_update(profile()->GetPrefs(),
259 prefs::kEasyUnlockPairing); 282 prefs::kEasyUnlockPairing);
260 if (devices.empty()) 283 if (devices.empty())
261 pairing_update->RemoveWithoutPathExpansion(kKeyDevices, NULL); 284 pairing_update->RemoveWithoutPathExpansion(kKeyDevices, NULL);
262 else 285 else
263 pairing_update->SetWithoutPathExpansion( 286 pairing_update->SetWithoutPathExpansion(
264 kKeyDevices, base::MakeUnique<base::Value>(devices)); 287 kKeyDevices, base::MakeUnique<base::Value>(devices));
265 288
266 #if defined(OS_CHROMEOS) 289 #if defined(OS_CHROMEOS)
267 // TODO(tengs): Investigate if we can determine if the remote devices were set 290 // TODO(tengs): Investigate if we can determine if the remote devices were set
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 616
594 cryptauth::CryptAuthDeviceManager* 617 cryptauth::CryptAuthDeviceManager*
595 EasyUnlockServiceRegular::GetCryptAuthDeviceManager() { 618 EasyUnlockServiceRegular::GetCryptAuthDeviceManager() {
596 cryptauth::CryptAuthDeviceManager* manager = 619 cryptauth::CryptAuthDeviceManager* manager =
597 ChromeCryptAuthServiceFactory::GetInstance() 620 ChromeCryptAuthServiceFactory::GetInstance()
598 ->GetForBrowserContext(profile()) 621 ->GetForBrowserContext(profile())
599 ->GetCryptAuthDeviceManager(); 622 ->GetCryptAuthDeviceManager();
600 DCHECK(manager); 623 DCHECK(manager);
601 return manager; 624 return manager;
602 } 625 }
OLDNEW
« no previous file with comments | « chrome/browser/signin/chrome_proximity_auth_client.cc ('k') | chrome/browser/signin/easy_unlock_service_signin_chromeos.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698