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 <openssl/bn.h> | 7 #include <openssl/bn.h> |
8 #include <openssl/ec.h> | 8 #include <openssl/ec.h> |
9 #include <openssl/ecdsa.h> | 9 #include <openssl/ecdsa.h> |
10 #include <openssl/evp.h> | 10 #include <openssl/evp.h> |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 QuicCompressedCertsCache* compressed_certs_cache, | 285 QuicCompressedCertsCache* compressed_certs_cache, |
286 CryptoHandshakeMessage* out) | 286 CryptoHandshakeMessage* out) |
287 : crypto_config_(crypto_config), | 287 : crypto_config_(crypto_config), |
288 server_ip_(server_ip), | 288 server_ip_(server_ip), |
289 client_addr_(client_addr), | 289 client_addr_(client_addr), |
290 clock_(clock), | 290 clock_(clock), |
291 proof_(proof), | 291 proof_(proof), |
292 compressed_certs_cache_(compressed_certs_cache), | 292 compressed_certs_cache_(compressed_certs_cache), |
293 out_(out) {} | 293 out_(out) {} |
294 | 294 |
295 void RunImpl(const CryptoHandshakeMessage& client_hello, | 295 void Run(std::unique_ptr<ValidateClientHelloResultCallback::Result> result, |
296 const ValidateClientHelloResultCallback::Result& result, | 296 std::unique_ptr<ProofSource::Details> /* details */) override { |
297 std::unique_ptr<ProofSource::Details> /* details */) override { | |
298 QuicCryptoNegotiatedParameters params; | 297 QuicCryptoNegotiatedParameters params; |
299 string error_details; | 298 string error_details; |
300 DiversificationNonce diversification_nonce; | 299 DiversificationNonce diversification_nonce; |
301 CryptoHandshakeMessage rej; | 300 CryptoHandshakeMessage rej; |
302 crypto_config_->ProcessClientHello( | 301 crypto_config_->ProcessClientHello( |
303 result, /*reject_only=*/false, /*connection_id=*/1, server_ip_, | 302 *result, /*reject_only=*/false, /*connection_id=*/1, server_ip_, |
304 client_addr_, AllSupportedVersions().front(), AllSupportedVersions(), | 303 client_addr_, AllSupportedVersions().front(), AllSupportedVersions(), |
305 /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0, | 304 /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0, |
306 clock_, QuicRandom::GetInstance(), compressed_certs_cache_, ¶ms, | 305 clock_, QuicRandom::GetInstance(), compressed_certs_cache_, ¶ms, |
307 proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &rej, | 306 proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &rej, |
308 &diversification_nonce, &error_details); | 307 &diversification_nonce, &error_details); |
309 // Verify output is a REJ or SREJ. | 308 // Verify output is a REJ or SREJ. |
310 EXPECT_THAT(rej.tag(), | 309 EXPECT_THAT(rej.tag(), |
311 testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ))); | 310 testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ))); |
312 | 311 |
313 VLOG(1) << "Extract valid STK and SCID from\n" << rej.DebugString(); | 312 VLOG(1) << "Extract valid STK and SCID from\n" << rej.DebugString(); |
314 StringPiece srct; | 313 StringPiece srct; |
315 ASSERT_TRUE(rej.GetStringPiece(kSourceAddressTokenTag, &srct)); | 314 ASSERT_TRUE(rej.GetStringPiece(kSourceAddressTokenTag, &srct)); |
316 | 315 |
317 StringPiece scfg; | 316 StringPiece scfg; |
318 ASSERT_TRUE(rej.GetStringPiece(kSCFG, &scfg)); | 317 ASSERT_TRUE(rej.GetStringPiece(kSCFG, &scfg)); |
319 std::unique_ptr<CryptoHandshakeMessage> server_config( | 318 std::unique_ptr<CryptoHandshakeMessage> server_config( |
320 CryptoFramer::ParseMessage(scfg)); | 319 CryptoFramer::ParseMessage(scfg)); |
321 | 320 |
322 StringPiece scid; | 321 StringPiece scid; |
323 ASSERT_TRUE(server_config->GetStringPiece(kSCID, &scid)); | 322 ASSERT_TRUE(server_config->GetStringPiece(kSCID, &scid)); |
324 | 323 |
325 *out_ = client_hello; | 324 *out_ = result->client_hello; |
326 out_->SetStringPiece(kSCID, scid); | 325 out_->SetStringPiece(kSCID, scid); |
327 out_->SetStringPiece(kSourceAddressTokenTag, srct); | 326 out_->SetStringPiece(kSourceAddressTokenTag, srct); |
328 uint64_t xlct = CryptoTestUtils::LeafCertHashForTesting(); | 327 uint64_t xlct = CryptoTestUtils::LeafCertHashForTesting(); |
329 out_->SetValue(kXLCT, xlct); | 328 out_->SetValue(kXLCT, xlct); |
330 } | 329 } |
331 | 330 |
332 protected: | 331 protected: |
333 QuicCryptoServerConfig* crypto_config_; | 332 QuicCryptoServerConfig* crypto_config_; |
334 IPAddress server_ip_; | 333 IPAddress server_ip_; |
335 IPEndPoint client_addr_; | 334 IPEndPoint client_addr_; |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 IPAddress server_ip, | 959 IPAddress server_ip, |
961 IPEndPoint client_addr, | 960 IPEndPoint client_addr, |
962 QuicVersion version, | 961 QuicVersion version, |
963 const QuicClock* clock, | 962 const QuicClock* clock, |
964 QuicCryptoProof* proof, | 963 QuicCryptoProof* proof, |
965 QuicCompressedCertsCache* compressed_certs_cache, | 964 QuicCompressedCertsCache* compressed_certs_cache, |
966 CryptoHandshakeMessage* out) { | 965 CryptoHandshakeMessage* out) { |
967 // Pass a inchoate CHLO. | 966 // Pass a inchoate CHLO. |
968 crypto_config->ValidateClientHello( | 967 crypto_config->ValidateClientHello( |
969 inchoate_chlo, client_addr.address(), server_ip, version, clock, proof, | 968 inchoate_chlo, client_addr.address(), server_ip, version, clock, proof, |
970 new FullChloGenerator(crypto_config, server_ip, client_addr, clock, proof, | 969 std::unique_ptr<FullChloGenerator>( |
971 compressed_certs_cache, out)); | 970 new FullChloGenerator(crypto_config, server_ip, client_addr, clock, |
| 971 proof, compressed_certs_cache, out))); |
972 } | 972 } |
973 | 973 |
974 } // namespace test | 974 } // namespace test |
975 } // namespace net | 975 } // namespace net |
OLD | NEW |