| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/strings/string_number_conversions.h" | 6 #include "base/strings/string_number_conversions.h" |
| 7 #include "crypto/secure_hash.h" | 7 #include "crypto/secure_hash.h" |
| 8 #include "net/quic/crypto/crypto_utils.h" | 8 #include "net/quic/crypto/crypto_utils.h" |
| 9 #include "net/quic/crypto/quic_crypto_server_config.h" | 9 #include "net/quic/crypto/quic_crypto_server_config.h" |
| 10 #include "net/quic/crypto/quic_random.h" | 10 #include "net/quic/crypto/quic_random.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 new ValidateCallback(this, false, error_substr, called)); | 175 new ValidateCallback(this, false, error_substr, called)); |
| 176 } | 176 } |
| 177 | 177 |
| 178 void ProcessValidationResult(const CryptoHandshakeMessage& message, | 178 void ProcessValidationResult(const CryptoHandshakeMessage& message, |
| 179 const ValidateCallback::Result& result, | 179 const ValidateCallback::Result& result, |
| 180 bool should_succeed, | 180 bool should_succeed, |
| 181 const char* error_substr) { | 181 const char* error_substr) { |
| 182 string error_details; | 182 string error_details; |
| 183 QuicErrorCode error = config_.ProcessClientHello( | 183 QuicErrorCode error = config_.ProcessClientHello( |
| 184 result, 1 /* ConnectionId */, client_address_, | 184 result, 1 /* ConnectionId */, client_address_, |
| 185 supported_versions_.front(), supported_versions_, | 185 supported_versions_.front(), supported_versions_, &clock_, rand_, |
| 186 kInitialFlowControlWindowForTest, &clock_, rand_, ¶ms_, &out_, | 186 ¶ms_, &out_, &error_details); |
| 187 &error_details); | |
| 188 | 187 |
| 189 if (should_succeed) { | 188 if (should_succeed) { |
| 190 ASSERT_EQ(error, QUIC_NO_ERROR) | 189 ASSERT_EQ(error, QUIC_NO_ERROR) |
| 191 << "Message failed with error " << error_details << ": " | 190 << "Message failed with error " << error_details << ": " |
| 192 << message.DebugString(); | 191 << message.DebugString(); |
| 193 } else { | 192 } else { |
| 194 ASSERT_NE(error, QUIC_NO_ERROR) | 193 ASSERT_NE(error, QUIC_NO_ERROR) |
| 195 << "Message didn't fail: " << message.DebugString(); | 194 << "Message didn't fail: " << message.DebugString(); |
| 196 | 195 |
| 197 EXPECT_TRUE(error_details.find(error_substr) != string::npos) | 196 EXPECT_TRUE(error_details.find(error_substr) != string::npos) |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 ASSERT_FALSE(called); | 515 ASSERT_FALSE(called); |
| 517 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); | 516 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); |
| 518 | 517 |
| 519 strike_register_client_->RunPendingVerifications(); | 518 strike_register_client_->RunPendingVerifications(); |
| 520 ASSERT_TRUE(called); | 519 ASSERT_TRUE(called); |
| 521 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); | 520 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); |
| 522 // The message should be rejected now. | 521 // The message should be rejected now. |
| 523 EXPECT_EQ(kREJ, out_.tag()); | 522 EXPECT_EQ(kREJ, out_.tag()); |
| 524 } | 523 } |
| 525 | 524 |
| 526 TEST_F(CryptoServerTest, InitialFlowControlWindow) { | |
| 527 // Test that the SHLO contains a value for initial flow control window. | |
| 528 CryptoHandshakeMessage msg = CryptoTestUtils::Message( | |
| 529 "CHLO", | |
| 530 "AEAD", "AESG", | |
| 531 "KEXS", "C255", | |
| 532 "SCID", scid_hex_.c_str(), | |
| 533 "#004b5453", srct_hex_.c_str(), | |
| 534 "PUBS", pub_hex_.c_str(), | |
| 535 "NONC", nonce_hex_.c_str(), | |
| 536 "VER\0", client_version_.data(), | |
| 537 "$padding", static_cast<int>(kClientHelloMinimumSize), | |
| 538 NULL); | |
| 539 ShouldSucceed(msg); | |
| 540 // The message should be rejected because the strike-register is still | |
| 541 // quiescent. | |
| 542 ASSERT_EQ(kREJ, out_.tag()); | |
| 543 config_.set_replay_protection(false); | |
| 544 | |
| 545 // The message should be accepted now. | |
| 546 ShouldSucceed(msg); | |
| 547 ASSERT_EQ(kSHLO, out_.tag()); | |
| 548 CheckServerHello(out_); | |
| 549 | |
| 550 // Ensure that the kIFCW tag is populated correctly. | |
| 551 QuicTag ifcw; | |
| 552 EXPECT_EQ(QUIC_NO_ERROR, out_.GetUint32(kIFCW, &ifcw)); | |
| 553 EXPECT_EQ(kInitialFlowControlWindowForTest, ifcw); | |
| 554 } | |
| 555 | |
| 556 } // namespace test | 525 } // namespace test |
| 557 } // namespace net | 526 } // namespace net |
| OLD | NEW |