| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/quic_crypto_client_stream.h" | 5 #include "net/quic/quic_crypto_client_stream.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" | 8 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" |
| 9 #include "net/quic/crypto/quic_decrypter.h" | 9 #include "net/quic/crypto/quic_decrypter.h" |
| 10 #include "net/quic/crypto/quic_encrypter.h" | 10 #include "net/quic/crypto/quic_encrypter.h" |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 EXPECT_EQ(0u, stream()->crypto_negotiated_params().token_binding_key_param); | 256 EXPECT_EQ(0u, stream()->crypto_negotiated_params().token_binding_key_param); |
| 257 } | 257 } |
| 258 | 258 |
| 259 class QuicCryptoClientStreamStatelessTest : public ::testing::Test { | 259 class QuicCryptoClientStreamStatelessTest : public ::testing::Test { |
| 260 public: | 260 public: |
| 261 QuicCryptoClientStreamStatelessTest() | 261 QuicCryptoClientStreamStatelessTest() |
| 262 : client_crypto_config_(CryptoTestUtils::ProofVerifierForTesting()), | 262 : client_crypto_config_(CryptoTestUtils::ProofVerifierForTesting()), |
| 263 server_crypto_config_(QuicCryptoServerConfig::TESTING, | 263 server_crypto_config_(QuicCryptoServerConfig::TESTING, |
| 264 QuicRandom::GetInstance(), | 264 QuicRandom::GetInstance(), |
| 265 CryptoTestUtils::ProofSourceForTesting()), | 265 CryptoTestUtils::ProofSourceForTesting()), |
| 266 server_compressed_certs_cache_( |
| 267 QuicCompressedCertsCache::kQuicCompressedCertsCacheSize), |
| 266 server_id_(kServerHostname, kServerPort, PRIVACY_MODE_DISABLED) { | 268 server_id_(kServerHostname, kServerPort, PRIVACY_MODE_DISABLED) { |
| 267 TestQuicSpdyClientSession* client_session = nullptr; | 269 TestQuicSpdyClientSession* client_session = nullptr; |
| 268 CreateClientSessionForTest( | 270 CreateClientSessionForTest( |
| 269 server_id_, | 271 server_id_, |
| 270 /* supports_stateless_rejects= */ true, | 272 /* supports_stateless_rejects= */ true, |
| 271 QuicTime::Delta::FromSeconds(100000), QuicSupportedVersions(), &helper_, | 273 QuicTime::Delta::FromSeconds(100000), QuicSupportedVersions(), &helper_, |
| 272 &client_crypto_config_, &client_connection_, &client_session); | 274 &client_crypto_config_, &client_connection_, &client_session); |
| 273 CHECK(client_session); | 275 CHECK(client_session); |
| 274 client_session_.reset(client_session); | 276 client_session_.reset(client_session); |
| 275 } | 277 } |
| 276 | 278 |
| 277 QuicCryptoServerStream* server_stream() { | 279 QuicCryptoServerStream* server_stream() { |
| 278 return server_session_->GetCryptoStream(); | 280 return server_session_->GetCryptoStream(); |
| 279 } | 281 } |
| 280 | 282 |
| 281 void AdvanceHandshakeWithFakeServer() { | 283 void AdvanceHandshakeWithFakeServer() { |
| 282 client_session_->GetCryptoStream()->CryptoConnect(); | 284 client_session_->GetCryptoStream()->CryptoConnect(); |
| 283 CryptoTestUtils::AdvanceHandshake(client_connection_, | 285 CryptoTestUtils::AdvanceHandshake(client_connection_, |
| 284 client_session_->GetCryptoStream(), 0, | 286 client_session_->GetCryptoStream(), 0, |
| 285 server_connection_, server_stream(), 0); | 287 server_connection_, server_stream(), 0); |
| 286 } | 288 } |
| 287 | 289 |
| 288 // Initializes the server_stream_ for stateless rejects. | 290 // Initializes the server_stream_ for stateless rejects. |
| 289 void InitializeFakeStatelessRejectServer() { | 291 void InitializeFakeStatelessRejectServer() { |
| 290 TestQuicSpdyServerSession* server_session = nullptr; | 292 TestQuicSpdyServerSession* server_session = nullptr; |
| 291 CreateServerSessionForTest(server_id_, QuicTime::Delta::FromSeconds(100000), | 293 CreateServerSessionForTest( |
| 292 QuicSupportedVersions(), &helper_, | 294 server_id_, QuicTime::Delta::FromSeconds(100000), |
| 293 &server_crypto_config_, &server_connection_, | 295 QuicSupportedVersions(), &helper_, &server_crypto_config_, |
| 294 &server_session); | 296 &server_compressed_certs_cache_, &server_connection_, &server_session); |
| 295 CHECK(server_session); | 297 CHECK(server_session); |
| 296 server_session_.reset(server_session); | 298 server_session_.reset(server_session); |
| 297 CryptoTestUtils::FakeServerOptions options; | 299 CryptoTestUtils::FakeServerOptions options; |
| 298 CryptoTestUtils::SetupCryptoServerConfigForTest( | 300 CryptoTestUtils::SetupCryptoServerConfigForTest( |
| 299 server_connection_->clock(), server_connection_->random_generator(), | 301 server_connection_->clock(), server_connection_->random_generator(), |
| 300 server_session_->config(), &server_crypto_config_, options); | 302 server_session_->config(), &server_crypto_config_, options); |
| 301 FLAGS_enable_quic_stateless_reject_support = true; | 303 FLAGS_enable_quic_stateless_reject_support = true; |
| 302 } | 304 } |
| 303 | 305 |
| 304 MockConnectionHelper helper_; | 306 MockConnectionHelper helper_; |
| 305 | 307 |
| 306 // Client crypto stream state | 308 // Client crypto stream state |
| 307 PacketSavingConnection* client_connection_; | 309 PacketSavingConnection* client_connection_; |
| 308 scoped_ptr<TestQuicSpdyClientSession> client_session_; | 310 scoped_ptr<TestQuicSpdyClientSession> client_session_; |
| 309 QuicCryptoClientConfig client_crypto_config_; | 311 QuicCryptoClientConfig client_crypto_config_; |
| 310 | 312 |
| 311 // Server crypto stream state | 313 // Server crypto stream state |
| 312 PacketSavingConnection* server_connection_; | 314 PacketSavingConnection* server_connection_; |
| 313 scoped_ptr<TestQuicSpdyServerSession> server_session_; | 315 scoped_ptr<TestQuicSpdyServerSession> server_session_; |
| 314 QuicCryptoServerConfig server_crypto_config_; | 316 QuicCryptoServerConfig server_crypto_config_; |
| 317 QuicCompressedCertsCache server_compressed_certs_cache_; |
| 315 QuicServerId server_id_; | 318 QuicServerId server_id_; |
| 316 }; | 319 }; |
| 317 | 320 |
| 318 TEST_F(QuicCryptoClientStreamStatelessTest, StatelessReject) { | 321 TEST_F(QuicCryptoClientStreamStatelessTest, StatelessReject) { |
| 319 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 322 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, |
| 320 true); | 323 true); |
| 321 | 324 |
| 322 QuicCryptoClientConfig::CachedState* client_state = | 325 QuicCryptoClientConfig::CachedState* client_state = |
| 323 client_crypto_config_.LookupOrCreate(server_id_); | 326 client_crypto_config_.LookupOrCreate(server_id_); |
| 324 | 327 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 344 client_state->GetNextServerDesignatedConnectionId(); | 347 client_state->GetNextServerDesignatedConnectionId(); |
| 345 QuicConnectionId expected_id = | 348 QuicConnectionId expected_id = |
| 346 server_session_->connection()->random_generator()->RandUint64(); | 349 server_session_->connection()->random_generator()->RandUint64(); |
| 347 EXPECT_EQ(expected_id, server_designated_id); | 350 EXPECT_EQ(expected_id, server_designated_id); |
| 348 EXPECT_FALSE(client_state->has_server_designated_connection_id()); | 351 EXPECT_FALSE(client_state->has_server_designated_connection_id()); |
| 349 } | 352 } |
| 350 | 353 |
| 351 } // namespace | 354 } // namespace |
| 352 } // namespace test | 355 } // namespace test |
| 353 } // namespace net | 356 } // namespace net |
| OLD | NEW |