| 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 <ostream> | 5 #include <ostream> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "crypto/secure_hash.h" | 10 #include "crypto/secure_hash.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 } | 86 } |
| 87 } | 87 } |
| 88 } | 88 } |
| 89 return params; | 89 return params; |
| 90 } | 90 } |
| 91 | 91 |
| 92 class CryptoServerTest : public ::testing::TestWithParam<TestParams> { | 92 class CryptoServerTest : public ::testing::TestWithParam<TestParams> { |
| 93 public: | 93 public: |
| 94 CryptoServerTest() | 94 CryptoServerTest() |
| 95 : rand_(QuicRandom::GetInstance()), | 95 : rand_(QuicRandom::GetInstance()), |
| 96 client_address_(Loopback4(), 1234), | 96 client_address_(IPEndPoint(Loopback4(), 1234)), |
| 97 config_(QuicCryptoServerConfig::TESTING, rand_) { | 97 config_(QuicCryptoServerConfig::TESTING, rand_, |
| 98 #if defined(USE_OPENSSL) | 98 CryptoTestUtils::ProofSourceForTesting()) { |
| 99 config_.SetProofSource(CryptoTestUtils::ProofSourceForTesting()); | |
| 100 #else | |
| 101 config_.SetProofSource(CryptoTestUtils::FakeProofSourceForTesting()); | |
| 102 #endif | |
| 103 supported_versions_ = QuicSupportedVersions(); | 99 supported_versions_ = QuicSupportedVersions(); |
| 104 client_version_ = supported_versions_.front(); | 100 client_version_ = supported_versions_.front(); |
| 105 client_version_string_ = | 101 client_version_string_ = |
| 106 QuicUtils::TagToString(QuicVersionToQuicTag(client_version_)); | 102 QuicUtils::TagToString(QuicVersionToQuicTag(client_version_)); |
| 107 | 103 |
| 108 FLAGS_use_early_return_when_verifying_chlo = | 104 FLAGS_use_early_return_when_verifying_chlo = |
| 109 GetParam().use_early_return_when_verifying_chlo; | 105 GetParam().use_early_return_when_verifying_chlo; |
| 110 FLAGS_enable_quic_stateless_reject_support = | 106 FLAGS_enable_quic_stateless_reject_support = |
| 111 GetParam().enable_stateless_rejects; | 107 GetParam().enable_stateless_rejects; |
| 112 use_stateless_rejects_ = GetParam().use_stateless_rejects; | 108 use_stateless_rejects_ = GetParam().use_stateless_rejects; |
| (...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 } | 752 } |
| 757 | 753 |
| 758 TEST(CryptoServerConfigGenerationTest, Determinism) { | 754 TEST(CryptoServerConfigGenerationTest, Determinism) { |
| 759 // Test that using a deterministic PRNG causes the server-config to be | 755 // Test that using a deterministic PRNG causes the server-config to be |
| 760 // deterministic. | 756 // deterministic. |
| 761 | 757 |
| 762 MockRandom rand_a, rand_b; | 758 MockRandom rand_a, rand_b; |
| 763 const QuicCryptoServerConfig::ConfigOptions options; | 759 const QuicCryptoServerConfig::ConfigOptions options; |
| 764 MockClock clock; | 760 MockClock clock; |
| 765 | 761 |
| 766 QuicCryptoServerConfig a(QuicCryptoServerConfig::TESTING, &rand_a); | 762 QuicCryptoServerConfig a(QuicCryptoServerConfig::TESTING, &rand_a, |
| 767 QuicCryptoServerConfig b(QuicCryptoServerConfig::TESTING, &rand_b); | 763 CryptoTestUtils::ProofSourceForTesting()); |
| 764 QuicCryptoServerConfig b(QuicCryptoServerConfig::TESTING, &rand_b, |
| 765 CryptoTestUtils::ProofSourceForTesting()); |
| 768 scoped_ptr<CryptoHandshakeMessage> scfg_a( | 766 scoped_ptr<CryptoHandshakeMessage> scfg_a( |
| 769 a.AddDefaultConfig(&rand_a, &clock, options)); | 767 a.AddDefaultConfig(&rand_a, &clock, options)); |
| 770 scoped_ptr<CryptoHandshakeMessage> scfg_b( | 768 scoped_ptr<CryptoHandshakeMessage> scfg_b( |
| 771 b.AddDefaultConfig(&rand_b, &clock, options)); | 769 b.AddDefaultConfig(&rand_b, &clock, options)); |
| 772 | 770 |
| 773 ASSERT_EQ(scfg_a->DebugString(), scfg_b->DebugString()); | 771 ASSERT_EQ(scfg_a->DebugString(), scfg_b->DebugString()); |
| 774 } | 772 } |
| 775 | 773 |
| 776 TEST(CryptoServerConfigGenerationTest, SCIDVaries) { | 774 TEST(CryptoServerConfigGenerationTest, SCIDVaries) { |
| 777 // This test ensures that the server config ID varies for different server | 775 // This test ensures that the server config ID varies for different server |
| 778 // configs. | 776 // configs. |
| 779 | 777 |
| 780 MockRandom rand_a, rand_b; | 778 MockRandom rand_a, rand_b; |
| 781 const QuicCryptoServerConfig::ConfigOptions options; | 779 const QuicCryptoServerConfig::ConfigOptions options; |
| 782 MockClock clock; | 780 MockClock clock; |
| 783 | 781 |
| 784 QuicCryptoServerConfig a(QuicCryptoServerConfig::TESTING, &rand_a); | 782 QuicCryptoServerConfig a(QuicCryptoServerConfig::TESTING, &rand_a, |
| 783 CryptoTestUtils::ProofSourceForTesting()); |
| 785 rand_b.ChangeValue(); | 784 rand_b.ChangeValue(); |
| 786 QuicCryptoServerConfig b(QuicCryptoServerConfig::TESTING, &rand_b); | 785 QuicCryptoServerConfig b(QuicCryptoServerConfig::TESTING, &rand_b, |
| 786 CryptoTestUtils::ProofSourceForTesting()); |
| 787 scoped_ptr<CryptoHandshakeMessage> scfg_a( | 787 scoped_ptr<CryptoHandshakeMessage> scfg_a( |
| 788 a.AddDefaultConfig(&rand_a, &clock, options)); | 788 a.AddDefaultConfig(&rand_a, &clock, options)); |
| 789 scoped_ptr<CryptoHandshakeMessage> scfg_b( | 789 scoped_ptr<CryptoHandshakeMessage> scfg_b( |
| 790 b.AddDefaultConfig(&rand_b, &clock, options)); | 790 b.AddDefaultConfig(&rand_b, &clock, options)); |
| 791 | 791 |
| 792 StringPiece scid_a, scid_b; | 792 StringPiece scid_a, scid_b; |
| 793 EXPECT_TRUE(scfg_a->GetStringPiece(kSCID, &scid_a)); | 793 EXPECT_TRUE(scfg_a->GetStringPiece(kSCID, &scid_a)); |
| 794 EXPECT_TRUE(scfg_b->GetStringPiece(kSCID, &scid_b)); | 794 EXPECT_TRUE(scfg_b->GetStringPiece(kSCID, &scid_b)); |
| 795 | 795 |
| 796 EXPECT_NE(scid_a, scid_b); | 796 EXPECT_NE(scid_a, scid_b); |
| 797 } | 797 } |
| 798 | 798 |
| 799 TEST(CryptoServerConfigGenerationTest, SCIDIsHashOfServerConfig) { | 799 TEST(CryptoServerConfigGenerationTest, SCIDIsHashOfServerConfig) { |
| 800 MockRandom rand_a; | 800 MockRandom rand_a; |
| 801 const QuicCryptoServerConfig::ConfigOptions options; | 801 const QuicCryptoServerConfig::ConfigOptions options; |
| 802 MockClock clock; | 802 MockClock clock; |
| 803 | 803 |
| 804 QuicCryptoServerConfig a(QuicCryptoServerConfig::TESTING, &rand_a); | 804 QuicCryptoServerConfig a(QuicCryptoServerConfig::TESTING, &rand_a, |
| 805 CryptoTestUtils::ProofSourceForTesting()); |
| 805 scoped_ptr<CryptoHandshakeMessage> scfg( | 806 scoped_ptr<CryptoHandshakeMessage> scfg( |
| 806 a.AddDefaultConfig(&rand_a, &clock, options)); | 807 a.AddDefaultConfig(&rand_a, &clock, options)); |
| 807 | 808 |
| 808 StringPiece scid; | 809 StringPiece scid; |
| 809 EXPECT_TRUE(scfg->GetStringPiece(kSCID, &scid)); | 810 EXPECT_TRUE(scfg->GetStringPiece(kSCID, &scid)); |
| 810 // Need to take a copy of |scid| has we're about to call |Erase|. | 811 // Need to take a copy of |scid| has we're about to call |Erase|. |
| 811 const string scid_str(scid.as_string()); | 812 const string scid_str(scid.as_string()); |
| 812 | 813 |
| 813 scfg->Erase(kSCID); | 814 scfg->Erase(kSCID); |
| 814 scfg->MarkDirty(); | 815 scfg->MarkDirty(); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 970 | 971 |
| 971 strike_register_client_->RunPendingVerifications(); | 972 strike_register_client_->RunPendingVerifications(); |
| 972 ASSERT_TRUE(called); | 973 ASSERT_TRUE(called); |
| 973 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); | 974 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); |
| 974 // The message should be rejected now. | 975 // The message should be rejected now. |
| 975 CheckRejectTag(); | 976 CheckRejectTag(); |
| 976 } | 977 } |
| 977 | 978 |
| 978 } // namespace test | 979 } // namespace test |
| 979 } // namespace net | 980 } // namespace net |
| OLD | NEW |