OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "net/quic/crypto/quic_crypto_server_config.h" | 5 #include "net/quic/crypto/quic_crypto_server_config.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 proof_source_(proof_source), | 218 proof_source_(proof_source), |
219 strike_register_no_startup_period_(false), | 219 strike_register_no_startup_period_(false), |
220 strike_register_max_entries_(1 << 10), | 220 strike_register_max_entries_(1 << 10), |
221 strike_register_window_secs_(600), | 221 strike_register_window_secs_(600), |
222 source_address_token_future_secs_(3600), | 222 source_address_token_future_secs_(3600), |
223 source_address_token_lifetime_secs_(86400), | 223 source_address_token_lifetime_secs_(86400), |
224 server_nonce_strike_register_max_entries_(1 << 10), | 224 server_nonce_strike_register_max_entries_(1 << 10), |
225 server_nonce_strike_register_window_secs_(120), | 225 server_nonce_strike_register_window_secs_(120), |
226 enable_serving_sct_(false) { | 226 enable_serving_sct_(false) { |
227 DCHECK(proof_source_.get()); | 227 DCHECK(proof_source_.get()); |
228 default_source_address_token_boxer_.SetKey( | 228 default_source_address_token_boxer_.SetKeys( |
229 DeriveSourceAddressTokenKey(source_address_token_secret)); | 229 {DeriveSourceAddressTokenKey(source_address_token_secret)}); |
230 | 230 |
231 // Generate a random key and orbit for server nonces. | 231 // Generate a random key and orbit for server nonces. |
232 server_nonce_entropy->RandBytes(server_nonce_orbit_, | 232 server_nonce_entropy->RandBytes(server_nonce_orbit_, |
233 sizeof(server_nonce_orbit_)); | 233 sizeof(server_nonce_orbit_)); |
234 const size_t key_size = server_nonce_boxer_.GetKeySize(); | 234 const size_t key_size = server_nonce_boxer_.GetKeySize(); |
235 scoped_ptr<uint8_t[]> key_bytes(new uint8_t[key_size]); | 235 scoped_ptr<uint8_t[]> key_bytes(new uint8_t[key_size]); |
236 server_nonce_entropy->RandBytes(key_bytes.get(), key_size); | 236 server_nonce_entropy->RandBytes(key_bytes.get(), key_size); |
237 | 237 |
238 server_nonce_boxer_.SetKey( | 238 server_nonce_boxer_.SetKeys( |
239 StringPiece(reinterpret_cast<char*>(key_bytes.get()), key_size)); | 239 {string(reinterpret_cast<char*>(key_bytes.get()), key_size)}); |
240 } | 240 } |
241 | 241 |
242 QuicCryptoServerConfig::~QuicCryptoServerConfig() { | 242 QuicCryptoServerConfig::~QuicCryptoServerConfig() { |
243 primary_config_ = nullptr; | 243 primary_config_ = nullptr; |
244 } | 244 } |
245 | 245 |
246 // static | 246 // static |
247 QuicServerConfigProtobuf* QuicCryptoServerConfig::GenerateConfig( | 247 QuicServerConfigProtobuf* QuicCryptoServerConfig::GenerateConfig( |
248 QuicRandom* rand, | 248 QuicRandom* rand, |
249 const QuicClock* clock, | 249 const QuicClock* clock, |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 | 473 |
474 configs_.swap(new_configs); | 474 configs_.swap(new_configs); |
475 SelectNewPrimaryConfig(now); | 475 SelectNewPrimaryConfig(now); |
476 DCHECK(primary_config_.get()); | 476 DCHECK(primary_config_.get()); |
477 DCHECK_EQ(configs_.find(primary_config_->id)->second, primary_config_); | 477 DCHECK_EQ(configs_.find(primary_config_->id)->second, primary_config_); |
478 } | 478 } |
479 | 479 |
480 return ok; | 480 return ok; |
481 } | 481 } |
482 | 482 |
| 483 void QuicCryptoServerConfig::SetDefaultSourceAddressTokenKeys( |
| 484 const vector<string>& keys) { |
| 485 default_source_address_token_boxer_.SetKeys(keys); |
| 486 } |
| 487 |
483 void QuicCryptoServerConfig::GetConfigIds(vector<string>* scids) const { | 488 void QuicCryptoServerConfig::GetConfigIds(vector<string>* scids) const { |
484 base::AutoLock locked(configs_lock_); | 489 base::AutoLock locked(configs_lock_); |
485 for (ConfigMap::const_iterator it = configs_.begin(); it != configs_.end(); | 490 for (ConfigMap::const_iterator it = configs_.begin(); it != configs_.end(); |
486 ++it) { | 491 ++it) { |
487 scids->push_back(it->first); | 492 scids->push_back(it->first); |
488 } | 493 } |
489 } | 494 } |
490 | 495 |
491 void QuicCryptoServerConfig::ValidateClientHello( | 496 void QuicCryptoServerConfig::ValidateClientHello( |
492 const CryptoHandshakeMessage& client_hello, | 497 const CryptoHandshakeMessage& client_hello, |
(...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 | 1333 |
1329 scoped_refptr<Config> config(new Config); | 1334 scoped_refptr<Config> config(new Config); |
1330 config->serialized = protobuf->config(); | 1335 config->serialized = protobuf->config(); |
1331 | 1336 |
1332 if (!protobuf->has_source_address_token_secret_override()) { | 1337 if (!protobuf->has_source_address_token_secret_override()) { |
1333 // Use the default boxer. | 1338 // Use the default boxer. |
1334 config->source_address_token_boxer = &default_source_address_token_boxer_; | 1339 config->source_address_token_boxer = &default_source_address_token_boxer_; |
1335 } else { | 1340 } else { |
1336 // Create override boxer instance. | 1341 // Create override boxer instance. |
1337 CryptoSecretBoxer* boxer = new CryptoSecretBoxer; | 1342 CryptoSecretBoxer* boxer = new CryptoSecretBoxer; |
1338 boxer->SetKey(DeriveSourceAddressTokenKey( | 1343 boxer->SetKeys({DeriveSourceAddressTokenKey( |
1339 protobuf->source_address_token_secret_override())); | 1344 protobuf->source_address_token_secret_override())}); |
1340 config->source_address_token_boxer_storage.reset(boxer); | 1345 config->source_address_token_boxer_storage.reset(boxer); |
1341 config->source_address_token_boxer = boxer; | 1346 config->source_address_token_boxer = boxer; |
1342 } | 1347 } |
1343 | 1348 |
1344 if (protobuf->has_primary_time()) { | 1349 if (protobuf->has_primary_time()) { |
1345 config->primary_time = | 1350 config->primary_time = |
1346 QuicWallTime::FromUNIXSeconds(protobuf->primary_time()); | 1351 QuicWallTime::FromUNIXSeconds(protobuf->primary_time()); |
1347 } | 1352 } |
1348 | 1353 |
1349 config->priority = protobuf->priority(); | 1354 config->priority = protobuf->priority(); |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1815 priority(0), | 1820 priority(0), |
1816 source_address_token_boxer(nullptr) {} | 1821 source_address_token_boxer(nullptr) {} |
1817 | 1822 |
1818 QuicCryptoServerConfig::Config::~Config() { | 1823 QuicCryptoServerConfig::Config::~Config() { |
1819 STLDeleteElements(&key_exchanges); | 1824 STLDeleteElements(&key_exchanges); |
1820 } | 1825 } |
1821 | 1826 |
1822 QuicCryptoProof::QuicCryptoProof() {} | 1827 QuicCryptoProof::QuicCryptoProof() {} |
1823 QuicCryptoProof::~QuicCryptoProof() {} | 1828 QuicCryptoProof::~QuicCryptoProof() {} |
1824 } // namespace net | 1829 } // namespace net |
OLD | NEW |