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 |