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 <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "crypto/openssl_util.h" | 10 #include "crypto/openssl_util.h" |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 } | 323 } |
324 | 324 |
325 class ProcessClientHelloCallback : public ProcessClientHelloResultCallback { | 325 class ProcessClientHelloCallback : public ProcessClientHelloResultCallback { |
326 public: | 326 public: |
327 explicit ProcessClientHelloCallback(FullChloGenerator* generator) | 327 explicit ProcessClientHelloCallback(FullChloGenerator* generator) |
328 : generator_(generator) {} | 328 : generator_(generator) {} |
329 void Run( | 329 void Run( |
330 QuicErrorCode error, | 330 QuicErrorCode error, |
331 const string& error_details, | 331 const string& error_details, |
332 std::unique_ptr<CryptoHandshakeMessage> message, | 332 std::unique_ptr<CryptoHandshakeMessage> message, |
333 std::unique_ptr<DiversificationNonce> diversification_nonce) override { | 333 std::unique_ptr<DiversificationNonce> diversification_nonce, |
| 334 std::unique_ptr<ProofSource::Details> proof_source_details) override { |
334 generator_->ProcessClientHelloDone(std::move(message)); | 335 generator_->ProcessClientHelloDone(std::move(message)); |
335 } | 336 } |
336 | 337 |
337 private: | 338 private: |
338 FullChloGenerator* generator_; | 339 FullChloGenerator* generator_; |
339 }; | 340 }; |
340 | 341 |
341 std::unique_ptr<ProcessClientHelloCallback> GetProcessClientHelloCallback() { | 342 std::unique_ptr<ProcessClientHelloCallback> GetProcessClientHelloCallback() { |
342 return std::unique_ptr<ProcessClientHelloCallback>( | 343 return std::unique_ptr<ProcessClientHelloCallback>( |
343 new ProcessClientHelloCallback(this)); | 344 new ProcessClientHelloCallback(this)); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 new PacketSavingConnection(helper, alarm_factory, Perspective::IS_SERVER, | 395 new PacketSavingConnection(helper, alarm_factory, Perspective::IS_SERVER, |
395 client_conn->supported_versions()); | 396 client_conn->supported_versions()); |
396 | 397 |
397 QuicCryptoServerConfig crypto_config(QuicCryptoServerConfig::TESTING, | 398 QuicCryptoServerConfig crypto_config(QuicCryptoServerConfig::TESTING, |
398 QuicRandom::GetInstance(), | 399 QuicRandom::GetInstance(), |
399 ProofSourceForTesting()); | 400 ProofSourceForTesting()); |
400 QuicCompressedCertsCache compressed_certs_cache( | 401 QuicCompressedCertsCache compressed_certs_cache( |
401 QuicCompressedCertsCache::kQuicCompressedCertsCacheSize); | 402 QuicCompressedCertsCache::kQuicCompressedCertsCacheSize); |
402 SetupCryptoServerConfigForTest(server_conn->clock(), | 403 SetupCryptoServerConfigForTest(server_conn->clock(), |
403 server_conn->random_generator(), | 404 server_conn->random_generator(), |
404 server_quic_config, &crypto_config, options); | 405 &crypto_config, options); |
405 | 406 |
406 TestQuicSpdyServerSession server_session(server_conn, *server_quic_config, | 407 TestQuicSpdyServerSession server_session(server_conn, *server_quic_config, |
407 &crypto_config, | 408 &crypto_config, |
408 &compressed_certs_cache); | 409 &compressed_certs_cache); |
409 | 410 |
410 // The client's handshake must have been started already. | 411 // The client's handshake must have been started already. |
411 CHECK_NE(0u, client_conn->encrypted_packets_.size()); | 412 CHECK_NE(0u, client_conn->encrypted_packets_.size()); |
412 | 413 |
413 CommunicateHandshakeMessages(client_conn, client, server_conn, | 414 CommunicateHandshakeMessages(client_conn, client, server_conn, |
414 server_session.GetCryptoStream()); | 415 server_session.GetCryptoStream()); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 } | 473 } |
473 } | 474 } |
474 | 475 |
475 return client_session.GetCryptoStream()->num_sent_client_hellos(); | 476 return client_session.GetCryptoStream()->num_sent_client_hellos(); |
476 } | 477 } |
477 | 478 |
478 // static | 479 // static |
479 void CryptoTestUtils::SetupCryptoServerConfigForTest( | 480 void CryptoTestUtils::SetupCryptoServerConfigForTest( |
480 const QuicClock* clock, | 481 const QuicClock* clock, |
481 QuicRandom* rand, | 482 QuicRandom* rand, |
482 QuicConfig* config, | |
483 QuicCryptoServerConfig* crypto_config, | 483 QuicCryptoServerConfig* crypto_config, |
484 const FakeServerOptions& fake_options) { | 484 const FakeServerOptions& fake_options) { |
485 QuicCryptoServerConfig::ConfigOptions options; | 485 QuicCryptoServerConfig::ConfigOptions options; |
486 options.channel_id_enabled = true; | 486 options.channel_id_enabled = true; |
487 options.token_binding_params = fake_options.token_binding_params; | 487 options.token_binding_params = fake_options.token_binding_params; |
488 std::unique_ptr<CryptoHandshakeMessage> scfg( | 488 std::unique_ptr<CryptoHandshakeMessage> scfg( |
489 crypto_config->AddDefaultConfig(rand, clock, options)); | 489 crypto_config->AddDefaultConfig(rand, clock, options)); |
490 } | 490 } |
491 | 491 |
492 // static | 492 // static |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 } | 565 } |
566 | 566 |
567 uint64_t CryptoTestUtils::LeafCertHashForTesting() { | 567 uint64_t CryptoTestUtils::LeafCertHashForTesting() { |
568 scoped_refptr<ProofSource::Chain> chain; | 568 scoped_refptr<ProofSource::Chain> chain; |
569 IPAddress server_ip; | 569 IPAddress server_ip; |
570 string sig; | 570 string sig; |
571 string cert_sct; | 571 string cert_sct; |
572 std::unique_ptr<ProofSource> proof_source( | 572 std::unique_ptr<ProofSource> proof_source( |
573 CryptoTestUtils::ProofSourceForTesting()); | 573 CryptoTestUtils::ProofSourceForTesting()); |
574 if (!proof_source->GetProof(server_ip, "", "", AllSupportedVersions().front(), | 574 if (!proof_source->GetProof(server_ip, "", "", AllSupportedVersions().front(), |
575 "", &chain, &sig, &cert_sct) || | 575 "", QuicTagVector(), &chain, &sig, &cert_sct) || |
576 chain->certs.empty()) { | 576 chain->certs.empty()) { |
577 DCHECK(false) << "Proof generation failed"; | 577 DCHECK(false) << "Proof generation failed"; |
578 return 0; | 578 return 0; |
579 } | 579 } |
580 | 580 |
581 return QuicUtils::FNV1a_64_Hash(chain->certs.at(0).c_str(), | 581 return QuicUtils::FNV1a_64_Hash(chain->certs.at(0).c_str(), |
582 chain->certs.at(0).length()); | 582 chain->certs.at(0).length()); |
583 } | 583 } |
584 | 584 |
585 class MockCommonCertSets : public CommonCertSets { | 585 class MockCommonCertSets : public CommonCertSets { |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1012 // Pass a inchoate CHLO. | 1012 // Pass a inchoate CHLO. |
1013 FullChloGenerator generator(crypto_config, server_ip, client_addr, clock, | 1013 FullChloGenerator generator(crypto_config, server_ip, client_addr, clock, |
1014 proof, compressed_certs_cache, out); | 1014 proof, compressed_certs_cache, out); |
1015 crypto_config->ValidateClientHello( | 1015 crypto_config->ValidateClientHello( |
1016 inchoate_chlo, client_addr.address(), server_ip, version, clock, proof, | 1016 inchoate_chlo, client_addr.address(), server_ip, version, clock, proof, |
1017 generator.GetValidateClientHelloCallback()); | 1017 generator.GetValidateClientHelloCallback()); |
1018 } | 1018 } |
1019 | 1019 |
1020 } // namespace test | 1020 } // namespace test |
1021 } // namespace net | 1021 } // namespace net |
OLD | NEW |