| 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 21 matching lines...) Expand all Loading... |
| 32 QuicCryptoClientStreamTest() | 32 QuicCryptoClientStreamTest() |
| 33 : server_id_(kServerHostname, kServerPort, false, PRIVACY_MODE_DISABLED) { | 33 : server_id_(kServerHostname, kServerPort, false, PRIVACY_MODE_DISABLED) { |
| 34 CreateConnection(); | 34 CreateConnection(); |
| 35 } | 35 } |
| 36 | 36 |
| 37 void CreateConnection() { | 37 void CreateConnection() { |
| 38 connection_ = new PacketSavingConnection(Perspective::IS_CLIENT); | 38 connection_ = new PacketSavingConnection(Perspective::IS_CLIENT); |
| 39 // Advance the time, because timers do not like uninitialized times. | 39 // Advance the time, because timers do not like uninitialized times. |
| 40 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); | 40 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); |
| 41 | 41 |
| 42 session_.reset(new TestClientSession(connection_, DefaultQuicConfig(), | 42 session_.reset(new TestQuicSpdyClientSession( |
| 43 server_id_, &crypto_config_)); | 43 connection_, DefaultQuicConfig(), server_id_, &crypto_config_)); |
| 44 } | 44 } |
| 45 | 45 |
| 46 void CompleteCryptoHandshake() { | 46 void CompleteCryptoHandshake() { |
| 47 stream()->CryptoConnect(); | 47 stream()->CryptoConnect(); |
| 48 CryptoTestUtils::HandshakeWithFakeServer(connection_, stream()); | 48 CryptoTestUtils::HandshakeWithFakeServer(connection_, stream()); |
| 49 } | 49 } |
| 50 | 50 |
| 51 void ConstructHandshakeMessage() { | 51 void ConstructHandshakeMessage() { |
| 52 CryptoFramer framer; | 52 CryptoFramer framer; |
| 53 message_data_.reset(framer.ConstructHandshakeMessage(message_)); | 53 message_data_.reset(framer.ConstructHandshakeMessage(message_)); |
| 54 } | 54 } |
| 55 | 55 |
| 56 QuicCryptoClientStream* stream() { return session_->GetCryptoStream(); } | 56 QuicCryptoClientStream* stream() { return session_->GetCryptoStream(); } |
| 57 | 57 |
| 58 PacketSavingConnection* connection_; | 58 PacketSavingConnection* connection_; |
| 59 scoped_ptr<TestClientSession> session_; | 59 scoped_ptr<TestQuicSpdyClientSession> session_; |
| 60 QuicServerId server_id_; | 60 QuicServerId server_id_; |
| 61 CryptoHandshakeMessage message_; | 61 CryptoHandshakeMessage message_; |
| 62 scoped_ptr<QuicData> message_data_; | 62 scoped_ptr<QuicData> message_data_; |
| 63 QuicCryptoClientConfig crypto_config_; | 63 QuicCryptoClientConfig crypto_config_; |
| 64 }; | 64 }; |
| 65 | 65 |
| 66 TEST_F(QuicCryptoClientStreamTest, NotInitiallyConected) { | 66 TEST_F(QuicCryptoClientStreamTest, NotInitiallyConected) { |
| 67 EXPECT_FALSE(stream()->encryption_established()); | 67 EXPECT_FALSE(stream()->encryption_established()); |
| 68 EXPECT_FALSE(stream()->handshake_confirmed()); | 68 EXPECT_FALSE(stream()->handshake_confirmed()); |
| 69 } | 69 } |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 CryptoFramer::ConstructHandshakeMessage(server_config_update)); | 197 CryptoFramer::ConstructHandshakeMessage(server_config_update)); |
| 198 stream()->ProcessRawData(data->data(), data->length()); | 198 stream()->ProcessRawData(data->data(), data->length()); |
| 199 } | 199 } |
| 200 | 200 |
| 201 class QuicCryptoClientStreamStatelessTest : public ::testing::Test { | 201 class QuicCryptoClientStreamStatelessTest : public ::testing::Test { |
| 202 public: | 202 public: |
| 203 QuicCryptoClientStreamStatelessTest() | 203 QuicCryptoClientStreamStatelessTest() |
| 204 : server_crypto_config_(QuicCryptoServerConfig::TESTING, | 204 : server_crypto_config_(QuicCryptoServerConfig::TESTING, |
| 205 QuicRandom::GetInstance()), | 205 QuicRandom::GetInstance()), |
| 206 server_id_(kServerHostname, kServerPort, false, PRIVACY_MODE_DISABLED) { | 206 server_id_(kServerHostname, kServerPort, false, PRIVACY_MODE_DISABLED) { |
| 207 TestClientSession* client_session = nullptr; | 207 TestQuicSpdyClientSession* client_session = nullptr; |
| 208 CreateClientSessionForTest(server_id_, | 208 CreateClientSessionForTest(server_id_, |
| 209 /* supports_stateless_rejects= */ true, | 209 /* supports_stateless_rejects= */ true, |
| 210 QuicTime::Delta::FromSeconds(100000), | 210 QuicTime::Delta::FromSeconds(100000), |
| 211 &client_crypto_config_, &client_connection_, | 211 &client_crypto_config_, &client_connection_, |
| 212 &client_session); | 212 &client_session); |
| 213 CHECK(client_session); | 213 CHECK(client_session); |
| 214 client_session_.reset(client_session); | 214 client_session_.reset(client_session); |
| 215 } | 215 } |
| 216 | 216 |
| 217 QuicCryptoServerStream* server_stream() { | 217 QuicCryptoServerStream* server_stream() { |
| 218 return server_session_->GetCryptoStream(); | 218 return server_session_->GetCryptoStream(); |
| 219 } | 219 } |
| 220 | 220 |
| 221 void AdvanceHandshakeWithFakeServer() { | 221 void AdvanceHandshakeWithFakeServer() { |
| 222 client_session_->GetCryptoStream()->CryptoConnect(); | 222 client_session_->GetCryptoStream()->CryptoConnect(); |
| 223 CryptoTestUtils::AdvanceHandshake(client_connection_, | 223 CryptoTestUtils::AdvanceHandshake(client_connection_, |
| 224 client_session_->GetCryptoStream(), 0, | 224 client_session_->GetCryptoStream(), 0, |
| 225 server_connection_, server_stream(), 0); | 225 server_connection_, server_stream(), 0); |
| 226 } | 226 } |
| 227 | 227 |
| 228 // Initializes the server_stream_ for stateless rejects. | 228 // Initializes the server_stream_ for stateless rejects. |
| 229 void InitializeFakeStatelessRejectServer() { | 229 void InitializeFakeStatelessRejectServer() { |
| 230 TestServerSession* server_session = nullptr; | 230 TestQuicSpdyServerSession* server_session = nullptr; |
| 231 CreateServerSessionForTest(server_id_, QuicTime::Delta::FromSeconds(100000), | 231 CreateServerSessionForTest(server_id_, QuicTime::Delta::FromSeconds(100000), |
| 232 &server_crypto_config_, &server_connection_, | 232 &server_crypto_config_, &server_connection_, |
| 233 &server_session); | 233 &server_session); |
| 234 CHECK(server_session); | 234 CHECK(server_session); |
| 235 server_session_.reset(server_session); | 235 server_session_.reset(server_session); |
| 236 CryptoTestUtils::SetupCryptoServerConfigForTest( | 236 CryptoTestUtils::SetupCryptoServerConfigForTest( |
| 237 server_connection_->clock(), server_connection_->random_generator(), | 237 server_connection_->clock(), server_connection_->random_generator(), |
| 238 server_session_->config(), &server_crypto_config_); | 238 server_session_->config(), &server_crypto_config_); |
| 239 server_stream()->set_use_stateless_rejects_if_peer_supported(true); | 239 server_stream()->set_use_stateless_rejects_if_peer_supported(true); |
| 240 } | 240 } |
| 241 | 241 |
| 242 // Client crypto stream state | 242 // Client crypto stream state |
| 243 PacketSavingConnection* client_connection_; | 243 PacketSavingConnection* client_connection_; |
| 244 scoped_ptr<TestClientSession> client_session_; | 244 scoped_ptr<TestQuicSpdyClientSession> client_session_; |
| 245 QuicCryptoClientConfig client_crypto_config_; | 245 QuicCryptoClientConfig client_crypto_config_; |
| 246 | 246 |
| 247 // Server crypto stream state | 247 // Server crypto stream state |
| 248 PacketSavingConnection* server_connection_; | 248 PacketSavingConnection* server_connection_; |
| 249 scoped_ptr<TestServerSession> server_session_; | 249 scoped_ptr<TestQuicSpdyServerSession> server_session_; |
| 250 QuicCryptoServerConfig server_crypto_config_; | 250 QuicCryptoServerConfig server_crypto_config_; |
| 251 QuicServerId server_id_; | 251 QuicServerId server_id_; |
| 252 }; | 252 }; |
| 253 | 253 |
| 254 TEST_F(QuicCryptoClientStreamStatelessTest, StatelessReject) { | 254 TEST_F(QuicCryptoClientStreamStatelessTest, StatelessReject) { |
| 255 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 255 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, |
| 256 true); | 256 true); |
| 257 | 257 |
| 258 QuicCryptoClientConfig::CachedState* client_state = | 258 QuicCryptoClientConfig::CachedState* client_state = |
| 259 client_crypto_config_.LookupOrCreate(server_id_); | 259 client_crypto_config_.LookupOrCreate(server_id_); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 280 client_state->GetNextServerDesignatedConnectionId(); | 280 client_state->GetNextServerDesignatedConnectionId(); |
| 281 QuicConnectionId expected_id = | 281 QuicConnectionId expected_id = |
| 282 server_session_->connection()->random_generator()->RandUint64(); | 282 server_session_->connection()->random_generator()->RandUint64(); |
| 283 EXPECT_EQ(expected_id, server_designated_id); | 283 EXPECT_EQ(expected_id, server_designated_id); |
| 284 EXPECT_FALSE(client_state->has_server_designated_connection_id()); | 284 EXPECT_FALSE(client_state->has_server_designated_connection_id()); |
| 285 } | 285 } |
| 286 | 286 |
| 287 } // namespace | 287 } // namespace |
| 288 } // namespace test | 288 } // namespace test |
| 289 } // namespace net | 289 } // namespace net |
| OLD | NEW |