| 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/test_tools/crypto_test_utils.h" | 5 #include "net/quic/test_tools/crypto_test_utils.h" |
| 6 | 6 |
| 7 #include "net/quic/core/crypto/crypto_server_config_protobuf.h" | 7 #include "net/quic/core/crypto/crypto_server_config_protobuf.h" |
| 8 #include "net/quic/core/quic_utils.h" | 8 #include "net/quic/core/quic_utils.h" |
| 9 #include "net/quic/test_tools/mock_clock.h" | 9 #include "net/quic/test_tools/mock_clock.h" |
| 10 #include "net/test/gtest_util.h" | 10 #include "net/test/gtest_util.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 // Verify that the output message is a SHLO. | 34 // Verify that the output message is a SHLO. |
| 35 void RunImpl(const CryptoHandshakeMessage& chlo, | 35 void RunImpl(const CryptoHandshakeMessage& chlo, |
| 36 const ValidateClientHelloResultCallback::Result& result, | 36 const ValidateClientHelloResultCallback::Result& result, |
| 37 std::unique_ptr<ProofSource::Details> /* details */) override { | 37 std::unique_ptr<ProofSource::Details> /* details */) override { |
| 38 QuicCryptoNegotiatedParameters params; | 38 QuicCryptoNegotiatedParameters params; |
| 39 string error_details; | 39 string error_details; |
| 40 DiversificationNonce diversification_nonce; | 40 DiversificationNonce diversification_nonce; |
| 41 CryptoHandshakeMessage out; | 41 CryptoHandshakeMessage out; |
| 42 crypto_config_->ProcessClientHello( | 42 crypto_config_->ProcessClientHello( |
| 43 result, /*reject_only=*/false, /*connection_id=*/1, server_ip_, | 43 result, /*reject_only=*/false, /*connection_id=*/1, server_ip_, |
| 44 client_addr_, QuicSupportedVersions().front(), QuicSupportedVersions(), | 44 client_addr_, AllSupportedVersions().front(), AllSupportedVersions(), |
| 45 /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0, | 45 /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0, |
| 46 clock_, QuicRandom::GetInstance(), compressed_certs_cache_, ¶ms, | 46 clock_, QuicRandom::GetInstance(), compressed_certs_cache_, ¶ms, |
| 47 proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &out, | 47 proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &out, |
| 48 &diversification_nonce, &error_details); | 48 &diversification_nonce, &error_details); |
| 49 // Verify output is a SHLO. | 49 // Verify output is a SHLO. |
| 50 EXPECT_EQ(out.tag(), kSHLO) << "Fail to pass validation. Get " | 50 EXPECT_EQ(out.tag(), kSHLO) << "Fail to pass validation. Get " |
| 51 << out.DebugString(); | 51 << out.DebugString(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 protected: | 54 protected: |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 StringPiece(reinterpret_cast<const char*>(orbit.data()), | 91 StringPiece(reinterpret_cast<const char*>(orbit.data()), |
| 92 sizeof(orbit.size())), | 92 sizeof(orbit.size())), |
| 93 &nonce); | 93 &nonce); |
| 94 string nonce_hex = "#" + QuicUtils::HexEncode(nonce); | 94 string nonce_hex = "#" + QuicUtils::HexEncode(nonce); |
| 95 | 95 |
| 96 char public_value[32]; | 96 char public_value[32]; |
| 97 memset(public_value, 42, sizeof(public_value)); | 97 memset(public_value, 42, sizeof(public_value)); |
| 98 string pub_hex = | 98 string pub_hex = |
| 99 "#" + QuicUtils::HexEncode(public_value, sizeof(public_value)); | 99 "#" + QuicUtils::HexEncode(public_value, sizeof(public_value)); |
| 100 | 100 |
| 101 QuicVersion version(QuicSupportedVersions().front()); | 101 QuicVersion version(AllSupportedVersions().front()); |
| 102 // clang-format off | 102 // clang-format off |
| 103 CryptoHandshakeMessage inchoate_chlo = CryptoTestUtils::Message( | 103 CryptoHandshakeMessage inchoate_chlo = CryptoTestUtils::Message( |
| 104 "CHLO", | 104 "CHLO", |
| 105 "PDMD", "X509", | 105 "PDMD", "X509", |
| 106 "AEAD", "AESG", | 106 "AEAD", "AESG", |
| 107 "KEXS", "C255", | 107 "KEXS", "C255", |
| 108 "COPT", "SREJ", | 108 "COPT", "SREJ", |
| 109 "PUBS", pub_hex.c_str(), | 109 "PUBS", pub_hex.c_str(), |
| 110 "NONC", nonce_hex.c_str(), | 110 "NONC", nonce_hex.c_str(), |
| 111 "VER\0", QuicUtils::TagToString(QuicVersionToQuicTag(version)).c_str(), | 111 "VER\0", QuicUtils::TagToString(QuicVersionToQuicTag(version)).c_str(), |
| 112 "$padding", static_cast<int>(kClientHelloMinimumSize), | 112 "$padding", static_cast<int>(kClientHelloMinimumSize), |
| 113 nullptr); | 113 nullptr); |
| 114 // clang-format on | 114 // clang-format on |
| 115 | 115 |
| 116 CryptoTestUtils::GenerateFullCHLO(inchoate_chlo, &crypto_config, server_ip, | 116 CryptoTestUtils::GenerateFullCHLO(inchoate_chlo, &crypto_config, server_ip, |
| 117 client_addr, version, &clock, &proof, | 117 client_addr, version, &clock, &proof, |
| 118 &compressed_certs_cache, &full_chlo); | 118 &compressed_certs_cache, &full_chlo); |
| 119 // Verify that full_chlo can pass crypto_config's verification. | 119 // Verify that full_chlo can pass crypto_config's verification. |
| 120 crypto_config.ValidateClientHello( | 120 crypto_config.ValidateClientHello( |
| 121 full_chlo, client_addr.address(), server_ip, version, &clock, &proof, | 121 full_chlo, client_addr.address(), server_ip, version, &clock, &proof, |
| 122 new ShloVerifier(&crypto_config, server_ip, client_addr, &clock, &proof, | 122 new ShloVerifier(&crypto_config, server_ip, client_addr, &clock, &proof, |
| 123 &compressed_certs_cache)); | 123 &compressed_certs_cache)); |
| 124 } | 124 } |
| 125 | 125 |
| 126 } // namespace test | 126 } // namespace test |
| 127 } // namespace net | 127 } // namespace net |
| OLD | NEW |