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_server_stream.h" | 5 #include "net/quic/quic_crypto_server_stream.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 }; | 187 }; |
188 | 188 |
189 INSTANTIATE_TEST_CASE_P(Tests, QuicCryptoServerStreamTest, testing::Bool()); | 189 INSTANTIATE_TEST_CASE_P(Tests, QuicCryptoServerStreamTest, testing::Bool()); |
190 | 190 |
191 TEST_P(QuicCryptoServerStreamTest, NotInitiallyConected) { | 191 TEST_P(QuicCryptoServerStreamTest, NotInitiallyConected) { |
192 EXPECT_FALSE(server_stream()->encryption_established()); | 192 EXPECT_FALSE(server_stream()->encryption_established()); |
193 EXPECT_FALSE(server_stream()->handshake_confirmed()); | 193 EXPECT_FALSE(server_stream()->handshake_confirmed()); |
194 } | 194 } |
195 | 195 |
196 TEST_P(QuicCryptoServerStreamTest, NotInitiallySendingStatelessRejects) { | 196 TEST_P(QuicCryptoServerStreamTest, NotInitiallySendingStatelessRejects) { |
197 EXPECT_FALSE(server_stream()->use_stateless_rejects_if_peer_supported()); | 197 EXPECT_FALSE(server_stream()->UseStatelessRejectsIfPeerSupported()); |
198 EXPECT_FALSE(server_stream()->peer_supports_stateless_rejects()); | 198 EXPECT_FALSE(server_stream()->PeerSupportsStatelessRejects()); |
199 } | 199 } |
200 | 200 |
201 TEST_P(QuicCryptoServerStreamTest, ConnectedAfterCHLO) { | 201 TEST_P(QuicCryptoServerStreamTest, ConnectedAfterCHLO) { |
202 // CompleteCryptoHandshake returns the number of client hellos sent. This | 202 // CompleteCryptoHandshake returns the number of client hellos sent. This |
203 // test should send: | 203 // test should send: |
204 // * One to get a source-address token and certificates. | 204 // * One to get a source-address token and certificates. |
205 // * One to complete the handshake. | 205 // * One to complete the handshake. |
206 EXPECT_EQ(2, CompleteCryptoHandshake()); | 206 EXPECT_EQ(2, CompleteCryptoHandshake()); |
207 EXPECT_TRUE(server_stream()->encryption_established()); | 207 EXPECT_TRUE(server_stream()->encryption_established()); |
208 EXPECT_TRUE(server_stream()->handshake_confirmed()); | 208 EXPECT_TRUE(server_stream()->handshake_confirmed()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 244 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, |
245 true); | 245 true); |
246 InitializeServer(); | 246 InitializeServer(); |
247 | 247 |
248 InitializeFakeClient(/* supports_stateless_rejects= */ true); | 248 InitializeFakeClient(/* supports_stateless_rejects= */ true); |
249 AdvanceHandshakeWithFakeClient(); | 249 AdvanceHandshakeWithFakeClient(); |
250 | 250 |
251 // On the first round, encryption will not be established. | 251 // On the first round, encryption will not be established. |
252 EXPECT_FALSE(server_stream()->encryption_established()); | 252 EXPECT_FALSE(server_stream()->encryption_established()); |
253 EXPECT_FALSE(server_stream()->handshake_confirmed()); | 253 EXPECT_FALSE(server_stream()->handshake_confirmed()); |
254 EXPECT_EQ(1, server_stream()->num_handshake_messages()); | 254 EXPECT_EQ(1, server_stream()->NumHandshakeMessages()); |
255 EXPECT_EQ(0, server_stream()->num_handshake_messages_with_server_nonces()); | 255 EXPECT_EQ(0, server_stream()->NumHandshakeMessagesWithServerNonces()); |
256 | 256 |
257 // Now check the client state. | 257 // Now check the client state. |
258 QuicCryptoClientConfig::CachedState* client_state = | 258 QuicCryptoClientConfig::CachedState* client_state = |
259 client_crypto_config_.LookupOrCreate(server_id_); | 259 client_crypto_config_.LookupOrCreate(server_id_); |
260 | 260 |
261 ASSERT_TRUE(client_state->has_server_designated_connection_id()); | 261 ASSERT_TRUE(client_state->has_server_designated_connection_id()); |
262 const QuicConnectionId server_designated_connection_id = | 262 const QuicConnectionId server_designated_connection_id = |
263 client_state->GetNextServerDesignatedConnectionId(); | 263 client_state->GetNextServerDesignatedConnectionId(); |
264 const QuicConnectionId expected_id = | 264 const QuicConnectionId expected_id = |
265 server_connection_->random_generator()->RandUint64(); | 265 server_connection_->random_generator()->RandUint64(); |
(...skipping 10 matching lines...) Expand all Loading... |
276 client_stream()->CryptoConnect(); | 276 client_stream()->CryptoConnect(); |
277 | 277 |
278 // In the stateless case, the second handshake contains a server-nonce, so the | 278 // In the stateless case, the second handshake contains a server-nonce, so the |
279 // AsyncStrikeRegisterVerification() case will still succeed (unlike a 0-RTT | 279 // AsyncStrikeRegisterVerification() case will still succeed (unlike a 0-RTT |
280 // handshake). | 280 // handshake). |
281 AdvanceHandshakeWithFakeClient(); | 281 AdvanceHandshakeWithFakeClient(); |
282 | 282 |
283 // On the second round, encryption will be established. | 283 // On the second round, encryption will be established. |
284 EXPECT_TRUE(server_stream()->encryption_established()); | 284 EXPECT_TRUE(server_stream()->encryption_established()); |
285 EXPECT_TRUE(server_stream()->handshake_confirmed()); | 285 EXPECT_TRUE(server_stream()->handshake_confirmed()); |
286 EXPECT_EQ(2, server_stream()->num_handshake_messages()); | 286 EXPECT_EQ(2, server_stream()->NumHandshakeMessages()); |
287 EXPECT_EQ(1, server_stream()->num_handshake_messages_with_server_nonces()); | 287 EXPECT_EQ(1, server_stream()->NumHandshakeMessagesWithServerNonces()); |
288 } | 288 } |
289 | 289 |
290 TEST_P(QuicCryptoServerStreamTest, NoStatelessRejectIfNoClientSupport) { | 290 TEST_P(QuicCryptoServerStreamTest, NoStatelessRejectIfNoClientSupport) { |
291 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 291 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, |
292 true); | 292 true); |
293 InitializeServer(); | 293 InitializeServer(); |
294 | 294 |
295 // The server is configured to use stateless rejects, but the client does not | 295 // The server is configured to use stateless rejects, but the client does not |
296 // support it. | 296 // support it. |
297 InitializeFakeClient(/* supports_stateless_rejects= */ false); | 297 InitializeFakeClient(/* supports_stateless_rejects= */ false); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 // CompleteCryptoHandshake verifies | 398 // CompleteCryptoHandshake verifies |
399 // server_stream()->crypto_negotiated_params().channel_id is correct. | 399 // server_stream()->crypto_negotiated_params().channel_id is correct. |
400 EXPECT_EQ(2, CompleteCryptoHandshake()); | 400 EXPECT_EQ(2, CompleteCryptoHandshake()); |
401 EXPECT_TRUE(server_stream()->encryption_established()); | 401 EXPECT_TRUE(server_stream()->encryption_established()); |
402 EXPECT_TRUE(server_stream()->handshake_confirmed()); | 402 EXPECT_TRUE(server_stream()->handshake_confirmed()); |
403 } | 403 } |
404 | 404 |
405 TEST_P(QuicCryptoServerStreamTest, OnlySendSCUPAfterHandshakeComplete) { | 405 TEST_P(QuicCryptoServerStreamTest, OnlySendSCUPAfterHandshakeComplete) { |
406 // An attempt to send a SCUP before completing handshake should fail. | 406 // An attempt to send a SCUP before completing handshake should fail. |
407 server_stream()->SendServerConfigUpdate(nullptr); | 407 server_stream()->SendServerConfigUpdate(nullptr); |
408 EXPECT_EQ(0, server_stream()->num_server_config_update_messages_sent()); | 408 EXPECT_EQ(0, server_stream()->NumServerConfigUpdateMessagesSent()); |
409 } | 409 } |
410 | 410 |
411 TEST_P(QuicCryptoServerStreamTest, DoesPeerSupportStatelessRejects) { | 411 TEST_P(QuicCryptoServerStreamTest, DoesPeerSupportStatelessRejects) { |
412 ConstructHandshakeMessage(); | 412 ConstructHandshakeMessage(); |
413 QuicConfig stateless_reject_config = DefaultQuicConfigStatelessRejects(); | 413 QuicConfig stateless_reject_config = DefaultQuicConfigStatelessRejects(); |
414 stateless_reject_config.ToHandshakeMessage(&message_); | 414 stateless_reject_config.ToHandshakeMessage(&message_); |
415 EXPECT_TRUE( | 415 EXPECT_TRUE( |
416 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); | 416 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); |
417 | 417 |
418 message_.Clear(); | 418 message_.Clear(); |
419 QuicConfig stateful_reject_config = DefaultQuicConfig(); | 419 QuicConfig stateful_reject_config = DefaultQuicConfig(); |
420 stateful_reject_config.ToHandshakeMessage(&message_); | 420 stateful_reject_config.ToHandshakeMessage(&message_); |
421 EXPECT_FALSE( | 421 EXPECT_FALSE( |
422 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); | 422 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); |
423 } | 423 } |
424 | 424 |
425 } // namespace | 425 } // namespace |
426 | 426 |
427 } // namespace test | 427 } // namespace test |
428 } // namespace net | 428 } // namespace net |
OLD | NEW |