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 <stdarg.h> | 7 #include <stdarg.h> |
8 | 8 |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" | 10 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 bool is_known_orbit_called() { return is_known_orbit_called_; } | 213 bool is_known_orbit_called() { return is_known_orbit_called_; } |
214 | 214 |
215 private: | 215 private: |
216 QuicCryptoServerConfig* config_; | 216 QuicCryptoServerConfig* config_; |
217 mutable bool is_known_orbit_called_; | 217 mutable bool is_known_orbit_called_; |
218 }; | 218 }; |
219 | 219 |
220 TEST(QuicCryptoServerConfigTest, ServerConfig) { | 220 TEST(QuicCryptoServerConfigTest, ServerConfig) { |
221 QuicRandom* rand = QuicRandom::GetInstance(); | 221 QuicRandom* rand = QuicRandom::GetInstance(); |
222 QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand, | 222 QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand, |
223 #if defined(USE_OPENSSL) | |
224 CryptoTestUtils::ProofSourceForTesting()); | 223 CryptoTestUtils::ProofSourceForTesting()); |
225 #else | |
226 CryptoTestUtils::FakeProofSourceForTesting()); | |
227 #endif | |
228 MockClock clock; | 224 MockClock clock; |
229 | 225 |
230 scoped_ptr<CryptoHandshakeMessage>( | 226 scoped_ptr<CryptoHandshakeMessage>( |
231 server.AddDefaultConfig(rand, &clock, | 227 server.AddDefaultConfig(rand, &clock, |
232 QuicCryptoServerConfig::ConfigOptions())); | 228 QuicCryptoServerConfig::ConfigOptions())); |
233 } | 229 } |
234 | 230 |
235 TEST(QuicCryptoServerConfigTest, GetOrbitIsCalledWithoutTheStrikeRegisterLock) { | 231 TEST(QuicCryptoServerConfigTest, GetOrbitIsCalledWithoutTheStrikeRegisterLock) { |
236 QuicRandom* rand = QuicRandom::GetInstance(); | 232 QuicRandom* rand = QuicRandom::GetInstance(); |
237 QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand, | 233 QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand, |
238 #if defined(USE_OPENSSL) | |
239 CryptoTestUtils::ProofSourceForTesting()); | 234 CryptoTestUtils::ProofSourceForTesting()); |
240 #else | |
241 CryptoTestUtils::FakeProofSourceForTesting()); | |
242 #endif | |
243 MockClock clock; | 235 MockClock clock; |
244 | 236 |
245 TestStrikeRegisterClient* strike_register = | 237 TestStrikeRegisterClient* strike_register = |
246 new TestStrikeRegisterClient(&server); | 238 new TestStrikeRegisterClient(&server); |
247 server.SetStrikeRegisterClient(strike_register); | 239 server.SetStrikeRegisterClient(strike_register); |
248 | 240 |
249 QuicCryptoServerConfig::ConfigOptions options; | 241 QuicCryptoServerConfig::ConfigOptions options; |
250 scoped_ptr<CryptoHandshakeMessage> message( | 242 scoped_ptr<CryptoHandshakeMessage> message( |
251 server.AddDefaultConfig(rand, &clock, options)); | 243 server.AddDefaultConfig(rand, &clock, options)); |
252 EXPECT_TRUE(strike_register->is_known_orbit_called()); | 244 EXPECT_TRUE(strike_register->is_known_orbit_called()); |
253 } | 245 } |
254 | 246 |
255 class SourceAddressTokenTest : public ::testing::Test { | 247 class SourceAddressTokenTest : public ::testing::Test { |
256 public: | 248 public: |
257 SourceAddressTokenTest() | 249 SourceAddressTokenTest() |
258 : ip4_(Loopback4()), | 250 : ip4_(Loopback4()), |
259 ip4_dual_(ConvertIPv4NumberToIPv6Number(ip4_)), | 251 ip4_dual_(ConvertIPv4NumberToIPv6Number(ip4_)), |
260 ip6_(Loopback6()), | 252 ip6_(Loopback6()), |
261 original_time_(QuicWallTime::Zero()), | 253 original_time_(QuicWallTime::Zero()), |
262 rand_(QuicRandom::GetInstance()), | 254 rand_(QuicRandom::GetInstance()), |
263 server_(QuicCryptoServerConfig::TESTING, | 255 server_(QuicCryptoServerConfig::TESTING, |
264 rand_, | 256 rand_, |
265 #if defined(USE_OPENSSL) | |
266 CryptoTestUtils::ProofSourceForTesting()), | 257 CryptoTestUtils::ProofSourceForTesting()), |
267 #else | |
268 CryptoTestUtils::FakeProofSourceForTesting()), | |
269 #endif | |
270 peer_(&server_) { | 258 peer_(&server_) { |
271 // Advance the clock to some non-zero time. | 259 // Advance the clock to some non-zero time. |
272 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1000000)); | 260 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1000000)); |
273 original_time_ = clock_.WallNow(); | 261 original_time_ = clock_.WallNow(); |
274 | 262 |
275 primary_config_.reset(server_.AddDefaultConfig( | 263 primary_config_.reset(server_.AddDefaultConfig( |
276 rand_, &clock_, QuicCryptoServerConfig::ConfigOptions())); | 264 rand_, &clock_, QuicCryptoServerConfig::ConfigOptions())); |
277 | 265 |
278 // Add a config that overrides the default boxer. | 266 // Add a config that overrides the default boxer. |
279 QuicCryptoServerConfig::ConfigOptions options; | 267 QuicCryptoServerConfig::ConfigOptions options; |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 | 421 |
434 EXPECT_EQ(HANDSHAKE_OK, | 422 EXPECT_EQ(HANDSHAKE_OK, |
435 ValidateSourceAddressTokens(kPrimary, token4or6, ip4_)); | 423 ValidateSourceAddressTokens(kPrimary, token4or6, ip4_)); |
436 ASSERT_EQ(HANDSHAKE_OK, | 424 ASSERT_EQ(HANDSHAKE_OK, |
437 ValidateSourceAddressTokens(kPrimary, token4or6, ip6_)); | 425 ValidateSourceAddressTokens(kPrimary, token4or6, ip6_)); |
438 } | 426 } |
439 | 427 |
440 TEST(QuicCryptoServerConfigTest, ValidateServerNonce) { | 428 TEST(QuicCryptoServerConfigTest, ValidateServerNonce) { |
441 QuicRandom* rand = QuicRandom::GetInstance(); | 429 QuicRandom* rand = QuicRandom::GetInstance(); |
442 QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand, | 430 QuicCryptoServerConfig server(QuicCryptoServerConfig::TESTING, rand, |
443 #if defined(USE_OPENSSL) | |
444 CryptoTestUtils::ProofSourceForTesting()); | 431 CryptoTestUtils::ProofSourceForTesting()); |
445 #else | |
446 CryptoTestUtils::FakeProofSourceForTesting()); | |
447 #endif | |
448 QuicCryptoServerConfigPeer peer(&server); | 432 QuicCryptoServerConfigPeer peer(&server); |
449 | 433 |
450 StringPiece message("hello world"); | 434 StringPiece message("hello world"); |
451 const size_t key_size = CryptoSecretBoxer::GetKeySize(); | 435 const size_t key_size = CryptoSecretBoxer::GetKeySize(); |
452 scoped_ptr<uint8[]> key(new uint8[key_size]); | 436 scoped_ptr<uint8[]> key(new uint8[key_size]); |
453 memset(key.get(), 0x11, key_size); | 437 memset(key.get(), 0x11, key_size); |
454 | 438 |
455 CryptoSecretBoxer boxer; | 439 CryptoSecretBoxer boxer; |
456 boxer.SetKey(StringPiece(reinterpret_cast<char*>(key.get()), key_size)); | 440 boxer.SetKey(StringPiece(reinterpret_cast<char*>(key.get()), key_size)); |
457 const string box = boxer.Box(rand, message); | 441 const string box = boxer.Box(rand, message); |
(...skipping 12 matching lines...) Expand all Loading... |
470 server_nonce = peer.NewServerNonce(rand, now); | 454 server_nonce = peer.NewServerNonce(rand, now); |
471 EXPECT_EQ(HANDSHAKE_OK, peer.ValidateServerNonce(server_nonce, now)); | 455 EXPECT_EQ(HANDSHAKE_OK, peer.ValidateServerNonce(server_nonce, now)); |
472 } | 456 } |
473 | 457 |
474 class CryptoServerConfigsTest : public ::testing::Test { | 458 class CryptoServerConfigsTest : public ::testing::Test { |
475 public: | 459 public: |
476 CryptoServerConfigsTest() | 460 CryptoServerConfigsTest() |
477 : rand_(QuicRandom::GetInstance()), | 461 : rand_(QuicRandom::GetInstance()), |
478 config_(QuicCryptoServerConfig::TESTING, | 462 config_(QuicCryptoServerConfig::TESTING, |
479 rand_, | 463 rand_, |
480 #if defined(USE_OPENSSL) | |
481 CryptoTestUtils::ProofSourceForTesting()), | 464 CryptoTestUtils::ProofSourceForTesting()), |
482 #else | |
483 CryptoTestUtils::FakeProofSourceForTesting()), | |
484 #endif | |
485 test_peer_(&config_) { | 465 test_peer_(&config_) { |
486 } | 466 } |
487 | 467 |
488 void SetUp() override { | 468 void SetUp() override { |
489 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1000)); | 469 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1000)); |
490 } | 470 } |
491 | 471 |
492 // SetConfigs constructs suitable config protobufs and calls SetConfigs on | 472 // SetConfigs constructs suitable config protobufs and calls SetConfigs on |
493 // |config_|. The arguments are given as nullptr-terminated pairs. The first | 473 // |config_|. The arguments are given as nullptr-terminated pairs. The first |
494 // of each pair is the server config ID of a Config. The second is the | 474 // of each pair is the server config ID of a Config. The second is the |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 nullptr); | 758 nullptr); |
779 test_peer_.CheckConfigs( | 759 test_peer_.CheckConfigs( |
780 "a", false, | 760 "a", false, |
781 "b", true, | 761 "b", true, |
782 "c", false, | 762 "c", false, |
783 nullptr); | 763 nullptr); |
784 } | 764 } |
785 | 765 |
786 } // namespace test | 766 } // namespace test |
787 } // namespace net | 767 } // namespace net |
OLD | NEW |