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

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

Issue 1411063004: Remove insecure QUIC support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: enough! 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_client_stream_test.cc ('k') | net/quic/quic_end_to_end_unittest.cc » ('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 22 matching lines...) Expand all
33 class ReliableQuicStream; 33 class ReliableQuicStream;
34 } // namespace net 34 } // namespace net
35 35
36 using std::pair; 36 using std::pair;
37 using std::string; 37 using std::string;
38 using testing::_; 38 using testing::_;
39 39
40 namespace net { 40 namespace net {
41 namespace test { 41 namespace test {
42 42
43 #if defined(USE_OPENSSL)
44
43 class QuicCryptoServerConfigPeer { 45 class QuicCryptoServerConfigPeer {
44 public: 46 public:
45 static string GetPrimaryOrbit(const QuicCryptoServerConfig& config) { 47 static string GetPrimaryOrbit(const QuicCryptoServerConfig& config) {
46 base::AutoLock lock(config.configs_lock_); 48 base::AutoLock lock(config.configs_lock_);
47 CHECK(config.primary_config_.get() != nullptr); 49 CHECK(config.primary_config_.get() != nullptr);
48 return string(reinterpret_cast<const char*>(config.primary_config_->orbit), 50 return string(reinterpret_cast<const char*>(config.primary_config_->orbit),
49 kOrbitSize); 51 kOrbitSize);
50 } 52 }
51 }; 53 };
52 54
53 class QuicCryptoServerStreamPeer { 55 class QuicCryptoServerStreamPeer {
54 public: 56 public:
55 static bool DoesPeerSupportStatelessRejects( 57 static bool DoesPeerSupportStatelessRejects(
56 const CryptoHandshakeMessage& message) { 58 const CryptoHandshakeMessage& message) {
57 return net::QuicCryptoServerStream::DoesPeerSupportStatelessRejects( 59 return net::QuicCryptoServerStream::DoesPeerSupportStatelessRejects(
58 message); 60 message);
59 } 61 }
60 }; 62 };
61 63
62 namespace { 64 namespace {
63 65
64 const char kServerHostname[] = "test.example.com"; 66 const char kServerHostname[] = "test.example.com";
65 const uint16 kServerPort = 443; 67 const uint16 kServerPort = 443;
66 68
67 class QuicCryptoServerStreamTest : public ::testing::TestWithParam<bool> { 69 class QuicCryptoServerStreamTest : public ::testing::TestWithParam<bool> {
68 public: 70 public:
69 QuicCryptoServerStreamTest() 71 QuicCryptoServerStreamTest()
70 : server_crypto_config_(QuicCryptoServerConfig::TESTING, 72 : server_crypto_config_(QuicCryptoServerConfig::TESTING,
71 QuicRandom::GetInstance()), 73 QuicRandom::GetInstance(),
72 server_id_(kServerHostname, kServerPort, true, PRIVACY_MODE_DISABLED) { 74 CryptoTestUtils::ProofSourceForTesting()),
73 #if defined(USE_OPENSSL) 75 server_id_(kServerHostname, kServerPort, PRIVACY_MODE_DISABLED),
74 server_crypto_config_.SetProofSource( 76 client_crypto_config_(CryptoTestUtils::ProofVerifierForTesting()) {
75 CryptoTestUtils::ProofSourceForTesting());
76 #else
77 // TODO(rch): Implement a NSS proof source.
78 server_crypto_config_.SetProofSource(
79 CryptoTestUtils::FakeProofSourceForTesting());
80 #endif
81 server_crypto_config_.set_strike_register_no_startup_period(); 77 server_crypto_config_.set_strike_register_no_startup_period();
82 78
83 InitializeServer(); 79 InitializeServer();
84 80
85 if (AsyncStrikeRegisterVerification()) { 81 if (AsyncStrikeRegisterVerification()) {
86 string orbit = 82 string orbit =
87 QuicCryptoServerConfigPeer::GetPrimaryOrbit(server_crypto_config_); 83 QuicCryptoServerConfigPeer::GetPrimaryOrbit(server_crypto_config_);
88 strike_register_client_ = new DelayedVerifyStrikeRegisterClient( 84 strike_register_client_ = new DelayedVerifyStrikeRegisterClient(
89 10000, // strike_register_max_entries 85 10000, // strike_register_max_entries
90 static_cast<uint32>( 86 static_cast<uint32>(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 // testing. May be called multiple times. 122 // testing. May be called multiple times.
127 void InitializeFakeClient(bool supports_stateless_rejects) { 123 void InitializeFakeClient(bool supports_stateless_rejects) {
128 TestQuicSpdyClientSession* client_session = nullptr; 124 TestQuicSpdyClientSession* client_session = nullptr;
129 helpers_.push_back(new MockHelper); 125 helpers_.push_back(new MockHelper);
130 CreateClientSessionForTest(server_id_, supports_stateless_rejects, 126 CreateClientSessionForTest(server_id_, supports_stateless_rejects,
131 QuicTime::Delta::FromSeconds(100000), 127 QuicTime::Delta::FromSeconds(100000),
132 helpers_.back(), &client_crypto_config_, 128 helpers_.back(), &client_crypto_config_,
133 &client_connection_, &client_session); 129 &client_connection_, &client_session);
134 CHECK(client_session); 130 CHECK(client_session);
135 client_session_.reset(client_session); 131 client_session_.reset(client_session);
136 if (!client_options_.dont_verify_certs) {
137 #if defined(USE_OPENSSL)
138 client_crypto_config_.SetProofVerifier(
139 CryptoTestUtils::ProofVerifierForTesting());
140 #else
141 // TODO(rch): Implement a NSS proof source.
142 client_crypto_config_.SetProofVerifier(
143 CryptoTestUtils::FakeProofVerifierForTesting());
144 #endif
145 }
146 } 132 }
147 133
148 bool AsyncStrikeRegisterVerification() { 134 bool AsyncStrikeRegisterVerification() {
149 if (server_connection_->version() > QUIC_VERSION_26) { 135 if (server_connection_->version() > QUIC_VERSION_26) {
150 return false; 136 return false;
151 } 137 }
152 return GetParam(); 138 return GetParam();
153 } 139 }
154 140
155 void ConstructHandshakeMessage() { 141 void ConstructHandshakeMessage() {
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 TEST_P(QuicCryptoServerStreamTest, BadMessageType) { 374 TEST_P(QuicCryptoServerStreamTest, BadMessageType) {
389 message_.set_tag(kSHLO); 375 message_.set_tag(kSHLO);
390 ConstructHandshakeMessage(); 376 ConstructHandshakeMessage();
391 EXPECT_CALL(*server_connection_, 377 EXPECT_CALL(*server_connection_,
392 SendConnectionClose(QUIC_INVALID_CRYPTO_MESSAGE_TYPE)); 378 SendConnectionClose(QUIC_INVALID_CRYPTO_MESSAGE_TYPE));
393 server_stream()->OnStreamFrame( 379 server_stream()->OnStreamFrame(
394 QuicStreamFrame(kCryptoStreamId, /*fin=*/false, /*offset=*/0, 380 QuicStreamFrame(kCryptoStreamId, /*fin=*/false, /*offset=*/0,
395 message_data_->AsStringPiece())); 381 message_data_->AsStringPiece()));
396 } 382 }
397 383
398 TEST_P(QuicCryptoServerStreamTest, WithoutCertificates) {
399 server_crypto_config_.SetProofSource(nullptr);
400 server_id_ =
401 QuicServerId(kServerHostname, kServerPort, false, PRIVACY_MODE_DISABLED);
402 client_options_.dont_verify_certs = true;
403
404 // Only 2 client hellos need to be sent in the no-certs case: one to get the
405 // source-address token and the second to finish.
406 EXPECT_EQ(2, CompleteCryptoHandshake());
407 EXPECT_TRUE(server_stream()->encryption_established());
408 EXPECT_TRUE(server_stream()->handshake_confirmed());
409 }
410
411 TEST_P(QuicCryptoServerStreamTest, ChannelID) { 384 TEST_P(QuicCryptoServerStreamTest, ChannelID) {
412 client_options_.channel_id_enabled = true; 385 client_options_.channel_id_enabled = true;
413 client_options_.channel_id_source_async = false; 386 client_options_.channel_id_source_async = false;
414 // CompleteCryptoHandshake verifies 387 // CompleteCryptoHandshake verifies
415 // server_stream()->crypto_negotiated_params().channel_id is correct. 388 // server_stream()->crypto_negotiated_params().channel_id is correct.
416 EXPECT_EQ(2, CompleteCryptoHandshake()); 389 EXPECT_EQ(2, CompleteCryptoHandshake());
417 EXPECT_TRUE(server_stream()->encryption_established()); 390 EXPECT_TRUE(server_stream()->encryption_established());
418 EXPECT_TRUE(server_stream()->handshake_confirmed()); 391 EXPECT_TRUE(server_stream()->handshake_confirmed());
419 } 392 }
420 393
(...skipping 21 matching lines...) Expand all
442 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); 415 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_));
443 416
444 message_.Clear(); 417 message_.Clear();
445 QuicConfig stateful_reject_config = DefaultQuicConfig(); 418 QuicConfig stateful_reject_config = DefaultQuicConfig();
446 stateful_reject_config.ToHandshakeMessage(&message_); 419 stateful_reject_config.ToHandshakeMessage(&message_);
447 EXPECT_FALSE( 420 EXPECT_FALSE(
448 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_)); 421 QuicCryptoServerStreamPeer::DoesPeerSupportStatelessRejects(message_));
449 } 422 }
450 423
451 } // namespace 424 } // namespace
425
426 #endif
427
452 } // namespace test 428 } // namespace test
453 } // namespace net 429 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_crypto_client_stream_test.cc ('k') | net/quic/quic_end_to_end_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698