Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(576)

Side by Side Diff: net/quic/quic_crypto_server_stream_test.cc

Issue 1437023002: Landing Recent QUIC changes until 2015-11-09 20:32 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_crypto_server_stream.cc ('k') | net/quic/quic_flags.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 // called multiple times. 98 // called multiple times.
99 void InitializeServer() { 99 void InitializeServer() {
100 TestQuicSpdyServerSession* server_session = nullptr; 100 TestQuicSpdyServerSession* server_session = nullptr;
101 helpers_.push_back(new MockConnectionHelper); 101 helpers_.push_back(new MockConnectionHelper);
102 102
103 CreateServerSessionForTest(server_id_, QuicTime::Delta::FromSeconds(100000), 103 CreateServerSessionForTest(server_id_, QuicTime::Delta::FromSeconds(100000),
104 helpers_.back(), &server_crypto_config_, 104 helpers_.back(), &server_crypto_config_,
105 &server_connection_, &server_session); 105 &server_connection_, &server_session);
106 CHECK(server_session); 106 CHECK(server_session);
107 server_session_.reset(server_session); 107 server_session_.reset(server_session);
108 CryptoTestUtils::FakeServerOptions options;
109 options.token_binding_enabled = true;
108 CryptoTestUtils::SetupCryptoServerConfigForTest( 110 CryptoTestUtils::SetupCryptoServerConfigForTest(
109 server_connection_->clock(), server_connection_->random_generator(), 111 server_connection_->clock(), server_connection_->random_generator(),
110 server_session_->config(), &server_crypto_config_); 112 server_session_->config(), &server_crypto_config_, options);
111 } 113 }
112 114
113 QuicCryptoServerStream* server_stream() { 115 QuicCryptoServerStream* server_stream() {
114 return server_session_->GetCryptoStream(); 116 return server_session_->GetCryptoStream();
115 } 117 }
116 118
117 QuicCryptoClientStream* client_stream() { 119 QuicCryptoClientStream* client_stream() {
118 return client_session_->GetCryptoStream(); 120 return client_session_->GetCryptoStream();
119 } 121 }
120 122
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 }; 189 };
188 190
189 INSTANTIATE_TEST_CASE_P(Tests, QuicCryptoServerStreamTest, testing::Bool()); 191 INSTANTIATE_TEST_CASE_P(Tests, QuicCryptoServerStreamTest, testing::Bool());
190 192
191 TEST_P(QuicCryptoServerStreamTest, NotInitiallyConected) { 193 TEST_P(QuicCryptoServerStreamTest, NotInitiallyConected) {
192 EXPECT_FALSE(server_stream()->encryption_established()); 194 EXPECT_FALSE(server_stream()->encryption_established());
193 EXPECT_FALSE(server_stream()->handshake_confirmed()); 195 EXPECT_FALSE(server_stream()->handshake_confirmed());
194 } 196 }
195 197
196 TEST_P(QuicCryptoServerStreamTest, NotInitiallySendingStatelessRejects) { 198 TEST_P(QuicCryptoServerStreamTest, NotInitiallySendingStatelessRejects) {
197 EXPECT_FALSE(server_stream()->use_stateless_rejects_if_peer_supported()); 199 EXPECT_FALSE(server_stream()->UseStatelessRejectsIfPeerSupported());
198 EXPECT_FALSE(server_stream()->peer_supports_stateless_rejects()); 200 EXPECT_FALSE(server_stream()->PeerSupportsStatelessRejects());
199 } 201 }
200 202
201 TEST_P(QuicCryptoServerStreamTest, ConnectedAfterCHLO) { 203 TEST_P(QuicCryptoServerStreamTest, ConnectedAfterCHLO) {
202 // CompleteCryptoHandshake returns the number of client hellos sent. This 204 // CompleteCryptoHandshake returns the number of client hellos sent. This
203 // test should send: 205 // test should send:
204 // * One to get a source-address token and certificates. 206 // * One to get a source-address token and certificates.
205 // * One to complete the handshake. 207 // * One to complete the handshake.
206 EXPECT_EQ(2, CompleteCryptoHandshake()); 208 EXPECT_EQ(2, CompleteCryptoHandshake());
207 EXPECT_TRUE(server_stream()->encryption_established()); 209 EXPECT_TRUE(server_stream()->encryption_established());
208 EXPECT_TRUE(server_stream()->handshake_confirmed()); 210 EXPECT_TRUE(server_stream()->handshake_confirmed());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, 246 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support,
245 true); 247 true);
246 InitializeServer(); 248 InitializeServer();
247 249
248 InitializeFakeClient(/* supports_stateless_rejects= */ true); 250 InitializeFakeClient(/* supports_stateless_rejects= */ true);
249 AdvanceHandshakeWithFakeClient(); 251 AdvanceHandshakeWithFakeClient();
250 252
251 // On the first round, encryption will not be established. 253 // On the first round, encryption will not be established.
252 EXPECT_FALSE(server_stream()->encryption_established()); 254 EXPECT_FALSE(server_stream()->encryption_established());
253 EXPECT_FALSE(server_stream()->handshake_confirmed()); 255 EXPECT_FALSE(server_stream()->handshake_confirmed());
254 EXPECT_EQ(1, server_stream()->num_handshake_messages()); 256 EXPECT_EQ(1, server_stream()->NumHandshakeMessages());
255 EXPECT_EQ(0, server_stream()->num_handshake_messages_with_server_nonces()); 257 EXPECT_EQ(0, server_stream()->NumHandshakeMessagesWithServerNonces());
256 258
257 // Now check the client state. 259 // Now check the client state.
258 QuicCryptoClientConfig::CachedState* client_state = 260 QuicCryptoClientConfig::CachedState* client_state =
259 client_crypto_config_.LookupOrCreate(server_id_); 261 client_crypto_config_.LookupOrCreate(server_id_);
260 262
261 ASSERT_TRUE(client_state->has_server_designated_connection_id()); 263 ASSERT_TRUE(client_state->has_server_designated_connection_id());
262 const QuicConnectionId server_designated_connection_id = 264 const QuicConnectionId server_designated_connection_id =
263 client_state->GetNextServerDesignatedConnectionId(); 265 client_state->GetNextServerDesignatedConnectionId();
264 const QuicConnectionId expected_id = 266 const QuicConnectionId expected_id =
265 server_connection_->random_generator()->RandUint64(); 267 server_connection_->random_generator()->RandUint64();
(...skipping 10 matching lines...) Expand all
276 client_stream()->CryptoConnect(); 278 client_stream()->CryptoConnect();
277 279
278 // In the stateless case, the second handshake contains a server-nonce, so the 280 // In the stateless case, the second handshake contains a server-nonce, so the
279 // AsyncStrikeRegisterVerification() case will still succeed (unlike a 0-RTT 281 // AsyncStrikeRegisterVerification() case will still succeed (unlike a 0-RTT
280 // handshake). 282 // handshake).
281 AdvanceHandshakeWithFakeClient(); 283 AdvanceHandshakeWithFakeClient();
282 284
283 // On the second round, encryption will be established. 285 // On the second round, encryption will be established.
284 EXPECT_TRUE(server_stream()->encryption_established()); 286 EXPECT_TRUE(server_stream()->encryption_established());
285 EXPECT_TRUE(server_stream()->handshake_confirmed()); 287 EXPECT_TRUE(server_stream()->handshake_confirmed());
286 EXPECT_EQ(2, server_stream()->num_handshake_messages()); 288 EXPECT_EQ(2, server_stream()->NumHandshakeMessages());
287 EXPECT_EQ(1, server_stream()->num_handshake_messages_with_server_nonces()); 289 EXPECT_EQ(1, server_stream()->NumHandshakeMessagesWithServerNonces());
288 } 290 }
289 291
290 TEST_P(QuicCryptoServerStreamTest, NoStatelessRejectIfNoClientSupport) { 292 TEST_P(QuicCryptoServerStreamTest, NoStatelessRejectIfNoClientSupport) {
291 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, 293 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support,
292 true); 294 true);
293 InitializeServer(); 295 InitializeServer();
294 296
295 // The server is configured to use stateless rejects, but the client does not 297 // The server is configured to use stateless rejects, but the client does not
296 // support it. 298 // support it.
297 InitializeFakeClient(/* supports_stateless_rejects= */ false); 299 InitializeFakeClient(/* supports_stateless_rejects= */ false);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 // CompleteCryptoHandshake verifies 400 // CompleteCryptoHandshake verifies
399 // server_stream()->crypto_negotiated_params().channel_id is correct. 401 // server_stream()->crypto_negotiated_params().channel_id is correct.
400 EXPECT_EQ(2, CompleteCryptoHandshake()); 402 EXPECT_EQ(2, CompleteCryptoHandshake());
401 EXPECT_TRUE(server_stream()->encryption_established()); 403 EXPECT_TRUE(server_stream()->encryption_established());
402 EXPECT_TRUE(server_stream()->handshake_confirmed()); 404 EXPECT_TRUE(server_stream()->handshake_confirmed());
403 } 405 }
404 406
405 TEST_P(QuicCryptoServerStreamTest, OnlySendSCUPAfterHandshakeComplete) { 407 TEST_P(QuicCryptoServerStreamTest, OnlySendSCUPAfterHandshakeComplete) {
406 // An attempt to send a SCUP before completing handshake should fail. 408 // An attempt to send a SCUP before completing handshake should fail.
407 server_stream()->SendServerConfigUpdate(nullptr); 409 server_stream()->SendServerConfigUpdate(nullptr);
408 EXPECT_EQ(0, server_stream()->num_server_config_update_messages_sent()); 410 EXPECT_EQ(0, server_stream()->NumServerConfigUpdateMessagesSent());
409 } 411 }
410 412
411 TEST_P(QuicCryptoServerStreamTest, DoesPeerSupportStatelessRejects) { 413 TEST_P(QuicCryptoServerStreamTest, DoesPeerSupportStatelessRejects) {
412 ConstructHandshakeMessage(); 414 ConstructHandshakeMessage();
413 QuicConfig stateless_reject_config = DefaultQuicConfigStatelessRejects(); 415 QuicConfig stateless_reject_config = DefaultQuicConfigStatelessRejects();
414 stateless_reject_config.ToHandshakeMessage(&message_); 416 stateless_reject_config.ToHandshakeMessage(&message_);
415 EXPECT_TRUE( 417 EXPECT_TRUE(
416 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); 418 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_));
417 419
418 message_.Clear(); 420 message_.Clear();
419 QuicConfig stateful_reject_config = DefaultQuicConfig(); 421 QuicConfig stateful_reject_config = DefaultQuicConfig();
420 stateful_reject_config.ToHandshakeMessage(&message_); 422 stateful_reject_config.ToHandshakeMessage(&message_);
421 EXPECT_FALSE( 423 EXPECT_FALSE(
422 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); 424 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_));
423 } 425 }
424 426
427 TEST_P(QuicCryptoServerStreamTest, TokenBindingNegotiated) {
428 client_options_.token_binding_enabled = true;
429 CompleteCryptoHandshake();
430 EXPECT_EQ(
431 kP256,
432 server_stream()->crypto_negotiated_params().token_binding_key_param);
433 EXPECT_TRUE(server_stream()->encryption_established());
434 EXPECT_TRUE(server_stream()->handshake_confirmed());
435 }
436
437 TEST_P(QuicCryptoServerStreamTest, NoTokenBindingWithoutClientSupport) {
438 CompleteCryptoHandshake();
439 EXPECT_EQ(
440 0u, server_stream()->crypto_negotiated_params().token_binding_key_param);
441 EXPECT_TRUE(server_stream()->encryption_established());
442 EXPECT_TRUE(server_stream()->handshake_confirmed());
443 }
444
425 } // namespace 445 } // namespace
426 446
427 } // namespace test 447 } // namespace test
428 } // namespace net 448 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_crypto_server_stream.cc ('k') | net/quic/quic_flags.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698