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

Side by Side Diff: components/cryptauth/foreground_eid_generator.cc

Issue 2847233003: [EasyUnlock] Move DataWithTimestamp out of ForegroundEidGenerator so it can be shared. (Closed)
Patch Set: fixes 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/cryptauth/foreground_eid_generator.h" 5 #include "components/cryptauth/foreground_eid_generator.h"
6 6
7 #include <cstring> 7 #include <cstring>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 std::string ForegroundEidGenerator::EidData::DataInHex() const { 52 std::string ForegroundEidGenerator::EidData::DataInHex() const {
53 std::string str = "[" + current_data.DataInHex(); 53 std::string str = "[" + current_data.DataInHex();
54 54
55 if (adjacent_data) { 55 if (adjacent_data) {
56 return str + ", " + adjacent_data->DataInHex() + "]"; 56 return str + ", " + adjacent_data->DataInHex() + "]";
57 } 57 }
58 58
59 return str + "]"; 59 return str + "]";
60 } 60 }
61 61
62 ForegroundEidGenerator::DataWithTimestamp::DataWithTimestamp(
63 const std::string& data,
64 const int64_t start_timestamp_ms,
65 const int64_t end_timestamp_ms)
66 : data(data),
67 start_timestamp_ms(start_timestamp_ms),
68 end_timestamp_ms(end_timestamp_ms) {
69 DCHECK(start_timestamp_ms < end_timestamp_ms);
70 DCHECK(data.size());
71 }
72
73 ForegroundEidGenerator::DataWithTimestamp::DataWithTimestamp(
74 const DataWithTimestamp& other)
75 : data(other.data),
76 start_timestamp_ms(other.start_timestamp_ms),
77 end_timestamp_ms(other.end_timestamp_ms) {
78 DCHECK(start_timestamp_ms < end_timestamp_ms);
79 DCHECK(data.size());
80 }
81
82 bool ForegroundEidGenerator::DataWithTimestamp::ContainsTime(
83 const int64_t timestamp_ms) const {
84 return start_timestamp_ms <= timestamp_ms && timestamp_ms < end_timestamp_ms;
85 }
86
87 std::string ForegroundEidGenerator::DataWithTimestamp::DataInHex() const {
88 std::stringstream ss;
89 ss << "0x" << std::hex;
90
91 for (size_t i = 0; i < data.size(); i++) {
92 ss << static_cast<int>(data.data()[i]);
93 }
94
95 return ss.str();
96 }
97
98 ForegroundEidGenerator::ForegroundEidGenerator() 62 ForegroundEidGenerator::ForegroundEidGenerator()
99 : ForegroundEidGenerator(base::MakeUnique<RawEidGeneratorImpl>(), 63 : ForegroundEidGenerator(base::MakeUnique<RawEidGeneratorImpl>(),
100 base::MakeUnique<base::DefaultClock>()) {} 64 base::MakeUnique<base::DefaultClock>()) {}
101 65
102 ForegroundEidGenerator::ForegroundEidGenerator( 66 ForegroundEidGenerator::ForegroundEidGenerator(
103 std::unique_ptr<RawEidGenerator> raw_eid_generator, 67 std::unique_ptr<RawEidGenerator> raw_eid_generator,
104 std::unique_ptr<base::Clock> clock) 68 std::unique_ptr<base::Clock> clock)
105 : clock_(std::move(clock)), 69 : clock_(std::move(clock)),
106 raw_eid_generator_(std::move(raw_eid_generator)) {} 70 raw_eid_generator_(std::move(raw_eid_generator)) {}
107 71
(...skipping 20 matching lines...) Expand all
128 } 92 }
129 93
130 std::unique_ptr<DataWithTimestamp> adjacent_eid = 94 std::unique_ptr<DataWithTimestamp> adjacent_eid =
131 GenerateEidDataWithTimestamp( 95 GenerateEidDataWithTimestamp(
132 scanning_device_beacon_seeds, 96 scanning_device_beacon_seeds,
133 timestamps->adjacent_period_start_timestamp_ms, 97 timestamps->adjacent_period_start_timestamp_ms,
134 timestamps->adjacent_period_end_timestamp_ms); 98 timestamps->adjacent_period_end_timestamp_ms);
135 return base::WrapUnique(new EidData(*current_eid, std::move(adjacent_eid))); 99 return base::WrapUnique(new EidData(*current_eid, std::move(adjacent_eid)));
136 } 100 }
137 101
138 std::unique_ptr<ForegroundEidGenerator::DataWithTimestamp> 102 std::unique_ptr<DataWithTimestamp>
139 ForegroundEidGenerator::GenerateAdvertisement( 103 ForegroundEidGenerator::GenerateAdvertisement(
140 const std::string& advertising_device_public_key, 104 const std::string& advertising_device_public_key,
141 const std::vector<BeaconSeed>& scanning_device_beacon_seeds) const { 105 const std::vector<BeaconSeed>& scanning_device_beacon_seeds) const {
142 std::unique_ptr<EidPeriodTimestamps> timestamps = 106 std::unique_ptr<EidPeriodTimestamps> timestamps =
143 GetEidPeriodTimestamps(scanning_device_beacon_seeds); 107 GetEidPeriodTimestamps(scanning_device_beacon_seeds);
144 if (!timestamps) { 108 if (!timestamps) {
145 return nullptr; 109 return nullptr;
146 } 110 }
147 111
148 return GenerateAdvertisement(advertising_device_public_key, 112 return GenerateAdvertisement(advertising_device_public_key,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 scanning_device_beacon_seeds, 168 scanning_device_beacon_seeds,
205 timestamps->adjacent_period_start_timestamp_ms, 169 timestamps->adjacent_period_start_timestamp_ms,
206 timestamps->adjacent_period_end_timestamp_ms); 170 timestamps->adjacent_period_end_timestamp_ms);
207 if (adjacent_advertisement) { 171 if (adjacent_advertisement) {
208 possible_advertisements.push_back(adjacent_advertisement->data); 172 possible_advertisements.push_back(adjacent_advertisement->data);
209 } 173 }
210 174
211 return possible_advertisements; 175 return possible_advertisements;
212 } 176 }
213 177
214 std::unique_ptr<ForegroundEidGenerator::DataWithTimestamp> 178 std::unique_ptr<DataWithTimestamp>
215 ForegroundEidGenerator::GenerateAdvertisement( 179 ForegroundEidGenerator::GenerateAdvertisement(
216 const std::string& advertising_device_public_key, 180 const std::string& advertising_device_public_key,
217 const std::vector<BeaconSeed>& scanning_device_beacon_seeds, 181 const std::vector<BeaconSeed>& scanning_device_beacon_seeds,
218 const int64_t start_of_period_timestamp_ms, 182 const int64_t start_of_period_timestamp_ms,
219 const int64_t end_of_period_timestamp_ms) const { 183 const int64_t end_of_period_timestamp_ms) const {
220 std::unique_ptr<DataWithTimestamp> advertising_device_identifying_data = 184 std::unique_ptr<DataWithTimestamp> advertising_device_identifying_data =
221 GenerateEidDataWithTimestamp( 185 GenerateEidDataWithTimestamp(
222 scanning_device_beacon_seeds, start_of_period_timestamp_ms, 186 scanning_device_beacon_seeds, start_of_period_timestamp_ms,
223 end_of_period_timestamp_ms, &advertising_device_public_key); 187 end_of_period_timestamp_ms, &advertising_device_public_key);
224 std::unique_ptr<DataWithTimestamp> scanning_device_identifying_data = 188 std::unique_ptr<DataWithTimestamp> scanning_device_identifying_data =
225 GenerateEidDataWithTimestamp(scanning_device_beacon_seeds, 189 GenerateEidDataWithTimestamp(scanning_device_beacon_seeds,
226 start_of_period_timestamp_ms, 190 start_of_period_timestamp_ms,
227 end_of_period_timestamp_ms); 191 end_of_period_timestamp_ms);
228 if (!advertising_device_identifying_data || 192 if (!advertising_device_identifying_data ||
229 !scanning_device_identifying_data) { 193 !scanning_device_identifying_data) {
230 return nullptr; 194 return nullptr;
231 } 195 }
232 196
233 std::string full_advertisement = scanning_device_identifying_data->data + 197 std::string full_advertisement = scanning_device_identifying_data->data +
234 advertising_device_identifying_data->data; 198 advertising_device_identifying_data->data;
235 return base::WrapUnique(new DataWithTimestamp(full_advertisement, 199 return base::WrapUnique(new DataWithTimestamp(full_advertisement,
236 start_of_period_timestamp_ms, 200 start_of_period_timestamp_ms,
237 end_of_period_timestamp_ms)); 201 end_of_period_timestamp_ms));
238 } 202 }
239 203
240 std::unique_ptr<ForegroundEidGenerator::DataWithTimestamp> 204 std::unique_ptr<DataWithTimestamp>
241 ForegroundEidGenerator::GenerateEidDataWithTimestamp( 205 ForegroundEidGenerator::GenerateEidDataWithTimestamp(
242 const std::vector<BeaconSeed>& scanning_device_beacon_seeds, 206 const std::vector<BeaconSeed>& scanning_device_beacon_seeds,
243 const int64_t start_of_period_timestamp_ms, 207 const int64_t start_of_period_timestamp_ms,
244 const int64_t end_of_period_timestamp_ms) const { 208 const int64_t end_of_period_timestamp_ms) const {
245 return GenerateEidDataWithTimestamp(scanning_device_beacon_seeds, 209 return GenerateEidDataWithTimestamp(scanning_device_beacon_seeds,
246 start_of_period_timestamp_ms, 210 start_of_period_timestamp_ms,
247 end_of_period_timestamp_ms, nullptr); 211 end_of_period_timestamp_ms, nullptr);
248 } 212 }
249 213
250 std::unique_ptr<ForegroundEidGenerator::DataWithTimestamp> 214 std::unique_ptr<DataWithTimestamp>
251 ForegroundEidGenerator::GenerateEidDataWithTimestamp( 215 ForegroundEidGenerator::GenerateEidDataWithTimestamp(
252 const std::vector<BeaconSeed>& scanning_device_beacon_seeds, 216 const std::vector<BeaconSeed>& scanning_device_beacon_seeds,
253 const int64_t start_of_period_timestamp_ms, 217 const int64_t start_of_period_timestamp_ms,
254 const int64_t end_of_period_timestamp_ms, 218 const int64_t end_of_period_timestamp_ms,
255 std::string const* extra_entropy) const { 219 std::string const* extra_entropy) const {
256 std::unique_ptr<std::string> eid_seed = GetEidSeedForPeriod( 220 std::unique_ptr<std::string> eid_seed = GetEidSeedForPeriod(
257 scanning_device_beacon_seeds, start_of_period_timestamp_ms); 221 scanning_device_beacon_seeds, start_of_period_timestamp_ms);
258 if (!eid_seed) { 222 if (!eid_seed) {
259 return nullptr; 223 return nullptr;
260 } 224 }
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 const int64_t end_of_period_timestamp_ms, 382 const int64_t end_of_period_timestamp_ms,
419 const int64_t current_timestamp_ms) { 383 const int64_t current_timestamp_ms) {
420 DCHECK(start_of_period_timestamp_ms <= current_timestamp_ms); 384 DCHECK(start_of_period_timestamp_ms <= current_timestamp_ms);
421 DCHECK(current_timestamp_ms < end_of_period_timestamp_ms); 385 DCHECK(current_timestamp_ms < end_of_period_timestamp_ms);
422 386
423 return current_timestamp_ms < 387 return current_timestamp_ms <
424 start_of_period_timestamp_ms + kNumMsInBeginningOfEidPeriod; 388 start_of_period_timestamp_ms + kNumMsInBeginningOfEidPeriod;
425 } 389 }
426 390
427 } // namespace cryptauth 391 } // namespace cryptauth
OLDNEW
« no previous file with comments | « components/cryptauth/foreground_eid_generator.h ('k') | components/cryptauth/foreground_eid_generator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698