| 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 "net/quic/core/crypto/channel_id.h" | 9 #include "net/quic/core/crypto/channel_id.h" |
| 10 #include "net/quic/core/crypto/common_cert_set.h" | 10 #include "net/quic/core/crypto/common_cert_set.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "net/quic/test_tools/quic_framer_peer.h" | 27 #include "net/quic/test_tools/quic_framer_peer.h" |
| 28 #include "net/quic/test_tools/quic_stream_peer.h" | 28 #include "net/quic/test_tools/quic_stream_peer.h" |
| 29 #include "net/quic/test_tools/quic_test_utils.h" | 29 #include "net/quic/test_tools/quic_test_utils.h" |
| 30 #include "net/quic/test_tools/simple_quic_framer.h" | 30 #include "net/quic/test_tools/simple_quic_framer.h" |
| 31 #include "third_party/boringssl/src/include/openssl/bn.h" | 31 #include "third_party/boringssl/src/include/openssl/bn.h" |
| 32 #include "third_party/boringssl/src/include/openssl/ec.h" | 32 #include "third_party/boringssl/src/include/openssl/ec.h" |
| 33 #include "third_party/boringssl/src/include/openssl/ecdsa.h" | 33 #include "third_party/boringssl/src/include/openssl/ecdsa.h" |
| 34 #include "third_party/boringssl/src/include/openssl/obj_mac.h" | 34 #include "third_party/boringssl/src/include/openssl/obj_mac.h" |
| 35 #include "third_party/boringssl/src/include/openssl/sha.h" | 35 #include "third_party/boringssl/src/include/openssl/sha.h" |
| 36 | 36 |
| 37 using base::StringPiece; | |
| 38 using std::string; | 37 using std::string; |
| 39 | 38 |
| 40 namespace net { | 39 namespace net { |
| 41 namespace test { | 40 namespace test { |
| 42 | 41 |
| 43 TestChannelIDKey::TestChannelIDKey(EVP_PKEY* ecdsa_key) | 42 TestChannelIDKey::TestChannelIDKey(EVP_PKEY* ecdsa_key) |
| 44 : ecdsa_key_(ecdsa_key) {} | 43 : ecdsa_key_(ecdsa_key) {} |
| 45 TestChannelIDKey::~TestChannelIDKey() {} | 44 TestChannelIDKey::~TestChannelIDKey() {} |
| 46 | 45 |
| 47 bool TestChannelIDKey::Sign(StringPiece signed_data, | 46 bool TestChannelIDKey::Sign(QuicStringPiece signed_data, |
| 48 string* out_signature) const { | 47 string* out_signature) const { |
| 49 bssl::ScopedEVP_MD_CTX md_ctx; | 48 bssl::ScopedEVP_MD_CTX md_ctx; |
| 50 if (EVP_DigestSignInit(md_ctx.get(), nullptr, EVP_sha256(), nullptr, | 49 if (EVP_DigestSignInit(md_ctx.get(), nullptr, EVP_sha256(), nullptr, |
| 51 ecdsa_key_.get()) != 1) { | 50 ecdsa_key_.get()) != 1) { |
| 52 return false; | 51 return false; |
| 53 } | 52 } |
| 54 | 53 |
| 55 EVP_DigestUpdate(md_ctx.get(), ChannelIDVerifier::kContextStr, | 54 EVP_DigestUpdate(md_ctx.get(), ChannelIDVerifier::kContextStr, |
| 56 strlen(ChannelIDVerifier::kContextStr) + 1); | 55 strlen(ChannelIDVerifier::kContextStr) + 1); |
| 57 EVP_DigestUpdate(md_ctx.get(), ChannelIDVerifier::kClientToServerStr, | 56 EVP_DigestUpdate(md_ctx.get(), ChannelIDVerifier::kClientToServerStr, |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 return std::unique_ptr<ProcessClientHelloCallback>( | 334 return std::unique_ptr<ProcessClientHelloCallback>( |
| 336 new ProcessClientHelloCallback(this)); | 335 new ProcessClientHelloCallback(this)); |
| 337 } | 336 } |
| 338 | 337 |
| 339 void ProcessClientHelloDone(std::unique_ptr<CryptoHandshakeMessage> rej) { | 338 void ProcessClientHelloDone(std::unique_ptr<CryptoHandshakeMessage> rej) { |
| 340 // Verify output is a REJ or SREJ. | 339 // Verify output is a REJ or SREJ. |
| 341 EXPECT_THAT(rej->tag(), | 340 EXPECT_THAT(rej->tag(), |
| 342 testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ))); | 341 testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ))); |
| 343 | 342 |
| 344 VLOG(1) << "Extract valid STK and SCID from\n" << rej->DebugString(); | 343 VLOG(1) << "Extract valid STK and SCID from\n" << rej->DebugString(); |
| 345 StringPiece srct; | 344 QuicStringPiece srct; |
| 346 ASSERT_TRUE(rej->GetStringPiece(kSourceAddressTokenTag, &srct)); | 345 ASSERT_TRUE(rej->GetStringPiece(kSourceAddressTokenTag, &srct)); |
| 347 | 346 |
| 348 StringPiece scfg; | 347 QuicStringPiece scfg; |
| 349 ASSERT_TRUE(rej->GetStringPiece(kSCFG, &scfg)); | 348 ASSERT_TRUE(rej->GetStringPiece(kSCFG, &scfg)); |
| 350 std::unique_ptr<CryptoHandshakeMessage> server_config( | 349 std::unique_ptr<CryptoHandshakeMessage> server_config( |
| 351 CryptoFramer::ParseMessage(scfg)); | 350 CryptoFramer::ParseMessage(scfg)); |
| 352 | 351 |
| 353 StringPiece scid; | 352 QuicStringPiece scid; |
| 354 ASSERT_TRUE(server_config->GetStringPiece(kSCID, &scid)); | 353 ASSERT_TRUE(server_config->GetStringPiece(kSCID, &scid)); |
| 355 | 354 |
| 356 *out_ = result_->client_hello; | 355 *out_ = result_->client_hello; |
| 357 out_->SetStringPiece(kSCID, scid); | 356 out_->SetStringPiece(kSCID, scid); |
| 358 out_->SetStringPiece(kSourceAddressTokenTag, srct); | 357 out_->SetStringPiece(kSourceAddressTokenTag, srct); |
| 359 uint64_t xlct = LeafCertHashForTesting(); | 358 uint64_t xlct = LeafCertHashForTesting(); |
| 360 out_->SetValue(kXLCT, xlct); | 359 out_->SetValue(kXLCT, xlct); |
| 361 } | 360 } |
| 362 | 361 |
| 363 protected: | 362 protected: |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 if (!ok || chain->certs.empty()) { | 578 if (!ok || chain->certs.empty()) { |
| 580 DCHECK(false) << "Proof generation failed"; | 579 DCHECK(false) << "Proof generation failed"; |
| 581 return 0; | 580 return 0; |
| 582 } | 581 } |
| 583 | 582 |
| 584 return QuicUtils::FNV1a_64_Hash(chain->certs.at(0)); | 583 return QuicUtils::FNV1a_64_Hash(chain->certs.at(0)); |
| 585 } | 584 } |
| 586 | 585 |
| 587 class MockCommonCertSets : public CommonCertSets { | 586 class MockCommonCertSets : public CommonCertSets { |
| 588 public: | 587 public: |
| 589 MockCommonCertSets(StringPiece cert, uint64_t hash, uint32_t index) | 588 MockCommonCertSets(QuicStringPiece cert, uint64_t hash, uint32_t index) |
| 590 : cert_(cert.as_string()), hash_(hash), index_(index) {} | 589 : cert_(cert.as_string()), hash_(hash), index_(index) {} |
| 591 | 590 |
| 592 StringPiece GetCommonHashes() const override { | 591 QuicStringPiece GetCommonHashes() const override { |
| 593 CHECK(false) << "not implemented"; | 592 CHECK(false) << "not implemented"; |
| 594 return StringPiece(); | 593 return QuicStringPiece(); |
| 595 } | 594 } |
| 596 | 595 |
| 597 StringPiece GetCert(uint64_t hash, uint32_t index) const override { | 596 QuicStringPiece GetCert(uint64_t hash, uint32_t index) const override { |
| 598 if (hash == hash_ && index == index_) { | 597 if (hash == hash_ && index == index_) { |
| 599 return cert_; | 598 return cert_; |
| 600 } | 599 } |
| 601 return StringPiece(); | 600 return QuicStringPiece(); |
| 602 } | 601 } |
| 603 | 602 |
| 604 bool MatchCert(StringPiece cert, | 603 bool MatchCert(QuicStringPiece cert, |
| 605 StringPiece common_set_hashes, | 604 QuicStringPiece common_set_hashes, |
| 606 uint64_t* out_hash, | 605 uint64_t* out_hash, |
| 607 uint32_t* out_index) const override { | 606 uint32_t* out_index) const override { |
| 608 if (cert != cert_) { | 607 if (cert != cert_) { |
| 609 return false; | 608 return false; |
| 610 } | 609 } |
| 611 | 610 |
| 612 if (common_set_hashes.size() % sizeof(uint64_t) != 0) { | 611 if (common_set_hashes.size() % sizeof(uint64_t) != 0) { |
| 613 return false; | 612 return false; |
| 614 } | 613 } |
| 615 bool client_has_set = false; | 614 bool client_has_set = false; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 630 *out_index = index_; | 629 *out_index = index_; |
| 631 return true; | 630 return true; |
| 632 } | 631 } |
| 633 | 632 |
| 634 private: | 633 private: |
| 635 const string cert_; | 634 const string cert_; |
| 636 const uint64_t hash_; | 635 const uint64_t hash_; |
| 637 const uint32_t index_; | 636 const uint32_t index_; |
| 638 }; | 637 }; |
| 639 | 638 |
| 640 CommonCertSets* MockCommonCertSets(StringPiece cert, | 639 CommonCertSets* MockCommonCertSets(QuicStringPiece cert, |
| 641 uint64_t hash, | 640 uint64_t hash, |
| 642 uint32_t index) { | 641 uint32_t index) { |
| 643 return new class MockCommonCertSets(cert, hash, index); | 642 return new class MockCommonCertSets(cert, hash, index); |
| 644 } | 643 } |
| 645 | 644 |
| 646 void FillInDummyReject(CryptoHandshakeMessage* rej, bool reject_is_stateless) { | 645 void FillInDummyReject(CryptoHandshakeMessage* rej, bool reject_is_stateless) { |
| 647 if (reject_is_stateless) { | 646 if (reject_is_stateless) { |
| 648 rej->set_tag(kSREJ); | 647 rej->set_tag(kSREJ); |
| 649 } else { | 648 } else { |
| 650 rej->set_tag(kREJ); | 649 rej->set_tag(kREJ); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 QuicStreamPeer::session(client)->connection()->alternative_decrypter()); | 692 QuicStreamPeer::session(client)->connection()->alternative_decrypter()); |
| 694 const QuicEncrypter* server_encrypter( | 693 const QuicEncrypter* server_encrypter( |
| 695 QuicFramerPeer::GetEncrypter(server_framer, ENCRYPTION_INITIAL)); | 694 QuicFramerPeer::GetEncrypter(server_framer, ENCRYPTION_INITIAL)); |
| 696 const QuicDecrypter* server_decrypter( | 695 const QuicDecrypter* server_decrypter( |
| 697 QuicStreamPeer::session(server)->connection()->decrypter()); | 696 QuicStreamPeer::session(server)->connection()->decrypter()); |
| 698 const QuicEncrypter* server_forward_secure_encrypter( | 697 const QuicEncrypter* server_forward_secure_encrypter( |
| 699 QuicFramerPeer::GetEncrypter(server_framer, ENCRYPTION_FORWARD_SECURE)); | 698 QuicFramerPeer::GetEncrypter(server_framer, ENCRYPTION_FORWARD_SECURE)); |
| 700 const QuicDecrypter* server_forward_secure_decrypter( | 699 const QuicDecrypter* server_forward_secure_decrypter( |
| 701 QuicStreamPeer::session(server)->connection()->alternative_decrypter()); | 700 QuicStreamPeer::session(server)->connection()->alternative_decrypter()); |
| 702 | 701 |
| 703 StringPiece client_encrypter_key = client_encrypter->GetKey(); | 702 QuicStringPiece client_encrypter_key = client_encrypter->GetKey(); |
| 704 StringPiece client_encrypter_iv = client_encrypter->GetNoncePrefix(); | 703 QuicStringPiece client_encrypter_iv = client_encrypter->GetNoncePrefix(); |
| 705 StringPiece client_decrypter_key = client_decrypter->GetKey(); | 704 QuicStringPiece client_decrypter_key = client_decrypter->GetKey(); |
| 706 StringPiece client_decrypter_iv = client_decrypter->GetNoncePrefix(); | 705 QuicStringPiece client_decrypter_iv = client_decrypter->GetNoncePrefix(); |
| 707 StringPiece client_forward_secure_encrypter_key = | 706 QuicStringPiece client_forward_secure_encrypter_key = |
| 708 client_forward_secure_encrypter->GetKey(); | 707 client_forward_secure_encrypter->GetKey(); |
| 709 StringPiece client_forward_secure_encrypter_iv = | 708 QuicStringPiece client_forward_secure_encrypter_iv = |
| 710 client_forward_secure_encrypter->GetNoncePrefix(); | 709 client_forward_secure_encrypter->GetNoncePrefix(); |
| 711 StringPiece client_forward_secure_decrypter_key = | 710 QuicStringPiece client_forward_secure_decrypter_key = |
| 712 client_forward_secure_decrypter->GetKey(); | 711 client_forward_secure_decrypter->GetKey(); |
| 713 StringPiece client_forward_secure_decrypter_iv = | 712 QuicStringPiece client_forward_secure_decrypter_iv = |
| 714 client_forward_secure_decrypter->GetNoncePrefix(); | 713 client_forward_secure_decrypter->GetNoncePrefix(); |
| 715 StringPiece server_encrypter_key = server_encrypter->GetKey(); | 714 QuicStringPiece server_encrypter_key = server_encrypter->GetKey(); |
| 716 StringPiece server_encrypter_iv = server_encrypter->GetNoncePrefix(); | 715 QuicStringPiece server_encrypter_iv = server_encrypter->GetNoncePrefix(); |
| 717 StringPiece server_decrypter_key = server_decrypter->GetKey(); | 716 QuicStringPiece server_decrypter_key = server_decrypter->GetKey(); |
| 718 StringPiece server_decrypter_iv = server_decrypter->GetNoncePrefix(); | 717 QuicStringPiece server_decrypter_iv = server_decrypter->GetNoncePrefix(); |
| 719 StringPiece server_forward_secure_encrypter_key = | 718 QuicStringPiece server_forward_secure_encrypter_key = |
| 720 server_forward_secure_encrypter->GetKey(); | 719 server_forward_secure_encrypter->GetKey(); |
| 721 StringPiece server_forward_secure_encrypter_iv = | 720 QuicStringPiece server_forward_secure_encrypter_iv = |
| 722 server_forward_secure_encrypter->GetNoncePrefix(); | 721 server_forward_secure_encrypter->GetNoncePrefix(); |
| 723 StringPiece server_forward_secure_decrypter_key = | 722 QuicStringPiece server_forward_secure_decrypter_key = |
| 724 server_forward_secure_decrypter->GetKey(); | 723 server_forward_secure_decrypter->GetKey(); |
| 725 StringPiece server_forward_secure_decrypter_iv = | 724 QuicStringPiece server_forward_secure_decrypter_iv = |
| 726 server_forward_secure_decrypter->GetNoncePrefix(); | 725 server_forward_secure_decrypter->GetNoncePrefix(); |
| 727 | 726 |
| 728 StringPiece client_subkey_secret = | 727 QuicStringPiece client_subkey_secret = |
| 729 client->crypto_negotiated_params().subkey_secret; | 728 client->crypto_negotiated_params().subkey_secret; |
| 730 StringPiece server_subkey_secret = | 729 QuicStringPiece server_subkey_secret = |
| 731 server->crypto_negotiated_params().subkey_secret; | 730 server->crypto_negotiated_params().subkey_secret; |
| 732 | 731 |
| 733 const char kSampleLabel[] = "label"; | 732 const char kSampleLabel[] = "label"; |
| 734 const char kSampleContext[] = "context"; | 733 const char kSampleContext[] = "context"; |
| 735 const size_t kSampleOutputLength = 32; | 734 const size_t kSampleOutputLength = 32; |
| 736 string client_key_extraction; | 735 string client_key_extraction; |
| 737 string server_key_extraction; | 736 string server_key_extraction; |
| 738 string client_tb_ekm; | 737 string client_tb_ekm; |
| 739 string server_tb_ekm; | 738 string server_tb_ekm; |
| 740 EXPECT_TRUE(client->ExportKeyingMaterial(kSampleLabel, kSampleContext, | 739 EXPECT_TRUE(client->ExportKeyingMaterial(kSampleLabel, kSampleContext, |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 845 | 844 |
| 846 for (const auto& tag_and_value : tags_and_values) { | 845 for (const auto& tag_and_value : tags_and_values) { |
| 847 const string& tag = tag_and_value.first; | 846 const string& tag = tag_and_value.first; |
| 848 const string& value = tag_and_value.second; | 847 const string& value = tag_and_value.second; |
| 849 | 848 |
| 850 const QuicTag quic_tag = ParseTag(tag.c_str()); | 849 const QuicTag quic_tag = ParseTag(tag.c_str()); |
| 851 | 850 |
| 852 size_t value_len = value.length(); | 851 size_t value_len = value.length(); |
| 853 if (value_len > 0 && value[0] == '#') { | 852 if (value_len > 0 && value[0] == '#') { |
| 854 // This is ascii encoded hex. | 853 // This is ascii encoded hex. |
| 855 string hex_value = QuicTextUtils::HexDecode(StringPiece(&value[1])); | 854 string hex_value = QuicTextUtils::HexDecode(QuicStringPiece(&value[1])); |
| 856 msg.SetStringPiece(quic_tag, hex_value); | 855 msg.SetStringPiece(quic_tag, hex_value); |
| 857 continue; | 856 continue; |
| 858 } | 857 } |
| 859 msg.SetStringPiece(quic_tag, value); | 858 msg.SetStringPiece(quic_tag, value); |
| 860 } | 859 } |
| 861 | 860 |
| 862 // The CryptoHandshakeMessage needs to be serialized and parsed to ensure | 861 // The CryptoHandshakeMessage needs to be serialized and parsed to ensure |
| 863 // that any padding is included. | 862 // that any padding is included. |
| 864 std::unique_ptr<QuicData> bytes(CryptoFramer::ConstructHandshakeMessage(msg)); | 863 std::unique_ptr<QuicData> bytes(CryptoFramer::ConstructHandshakeMessage(msg)); |
| 865 std::unique_ptr<CryptoHandshakeMessage> parsed( | 864 std::unique_ptr<CryptoHandshakeMessage> parsed( |
| (...skipping 27 matching lines...) Expand all Loading... |
| 893 | 892 |
| 894 size_t index = *inout_packet_index; | 893 size_t index = *inout_packet_index; |
| 895 for (; index < source_conn->encrypted_packets_.size(); index++) { | 894 for (; index < source_conn->encrypted_packets_.size(); index++) { |
| 896 if (!framer.ProcessPacket(*source_conn->encrypted_packets_[index])) { | 895 if (!framer.ProcessPacket(*source_conn->encrypted_packets_[index])) { |
| 897 // The framer will be unable to decrypt forward-secure packets sent after | 896 // The framer will be unable to decrypt forward-secure packets sent after |
| 898 // the handshake is complete. Don't treat them as handshake packets. | 897 // the handshake is complete. Don't treat them as handshake packets. |
| 899 break; | 898 break; |
| 900 } | 899 } |
| 901 | 900 |
| 902 for (const auto& stream_frame : framer.stream_frames()) { | 901 for (const auto& stream_frame : framer.stream_frames()) { |
| 903 ASSERT_TRUE(crypto_framer.ProcessInput( | 902 ASSERT_TRUE(crypto_framer.ProcessInput(QuicStringPiece( |
| 904 StringPiece(stream_frame->data_buffer, stream_frame->data_length))); | 903 stream_frame->data_buffer, stream_frame->data_length))); |
| 905 ASSERT_FALSE(crypto_visitor.error()); | 904 ASSERT_FALSE(crypto_visitor.error()); |
| 906 } | 905 } |
| 907 QuicConnectionPeer::SetCurrentPacket( | 906 QuicConnectionPeer::SetCurrentPacket( |
| 908 dest_conn, source_conn->encrypted_packets_[index]->AsStringPiece()); | 907 dest_conn, source_conn->encrypted_packets_[index]->AsStringPiece()); |
| 909 } | 908 } |
| 910 *inout_packet_index = index; | 909 *inout_packet_index = index; |
| 911 | 910 |
| 912 QuicConnectionPeer::SwapCrypters(dest_conn, framer.framer()); | 911 QuicConnectionPeer::SwapCrypters(dest_conn, framer.framer()); |
| 913 | 912 |
| 914 ASSERT_EQ(0u, crypto_framer.InputBytesRemaining()); | 913 ASSERT_EQ(0u, crypto_framer.InputBytesRemaining()); |
| 915 | 914 |
| 916 for (const CryptoHandshakeMessage& message : crypto_visitor.messages()) { | 915 for (const CryptoHandshakeMessage& message : crypto_visitor.messages()) { |
| 917 dest_stream->OnHandshakeMessage(message); | 916 dest_stream->OnHandshakeMessage(message); |
| 918 } | 917 } |
| 919 QuicConnectionPeer::SetCurrentPacket(dest_conn, StringPiece(nullptr, 0)); | 918 QuicConnectionPeer::SetCurrentPacket(dest_conn, QuicStringPiece(nullptr, 0)); |
| 920 } | 919 } |
| 921 | 920 |
| 922 CryptoHandshakeMessage GenerateDefaultInchoateCHLO( | 921 CryptoHandshakeMessage GenerateDefaultInchoateCHLO( |
| 923 const QuicClock* clock, | 922 const QuicClock* clock, |
| 924 QuicVersion version, | 923 QuicVersion version, |
| 925 QuicCryptoServerConfig* crypto_config) { | 924 QuicCryptoServerConfig* crypto_config) { |
| 926 // clang-format off | 925 // clang-format off |
| 927 return CreateCHLO( | 926 return CreateCHLO( |
| 928 {{"PDMD", "X509"}, | 927 {{"PDMD", "X509"}, |
| 929 {"AEAD", "AESG"}, | 928 {"AEAD", "AESG"}, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 941 QuicCryptoServerConfig::ConfigOptions new_config_options; | 940 QuicCryptoServerConfig::ConfigOptions new_config_options; |
| 942 old_config_options.id = "old-config-id"; | 941 old_config_options.id = "old-config-id"; |
| 943 delete crypto_config->AddDefaultConfig(QuicRandom::GetInstance(), clock, | 942 delete crypto_config->AddDefaultConfig(QuicRandom::GetInstance(), clock, |
| 944 old_config_options); | 943 old_config_options); |
| 945 std::unique_ptr<QuicServerConfigProtobuf> primary_config( | 944 std::unique_ptr<QuicServerConfigProtobuf> primary_config( |
| 946 crypto_config->GenerateConfig(QuicRandom::GetInstance(), clock, | 945 crypto_config->GenerateConfig(QuicRandom::GetInstance(), clock, |
| 947 new_config_options)); | 946 new_config_options)); |
| 948 primary_config->set_primary_time(clock->WallNow().ToUNIXSeconds()); | 947 primary_config->set_primary_time(clock->WallNow().ToUNIXSeconds()); |
| 949 std::unique_ptr<CryptoHandshakeMessage> msg( | 948 std::unique_ptr<CryptoHandshakeMessage> msg( |
| 950 crypto_config->AddConfig(std::move(primary_config), clock->WallNow())); | 949 crypto_config->AddConfig(std::move(primary_config), clock->WallNow())); |
| 951 StringPiece orbit; | 950 QuicStringPiece orbit; |
| 952 CHECK(msg->GetStringPiece(kORBT, &orbit)); | 951 CHECK(msg->GetStringPiece(kORBT, &orbit)); |
| 953 string nonce; | 952 string nonce; |
| 954 CryptoUtils::GenerateNonce( | 953 CryptoUtils::GenerateNonce( |
| 955 clock->WallNow(), QuicRandom::GetInstance(), | 954 clock->WallNow(), QuicRandom::GetInstance(), |
| 956 StringPiece(reinterpret_cast<const char*>(orbit.data()), | 955 QuicStringPiece(reinterpret_cast<const char*>(orbit.data()), |
| 957 sizeof(orbit.size())), | 956 sizeof(orbit.size())), |
| 958 &nonce); | 957 &nonce); |
| 959 return ("#" + QuicTextUtils::HexEncode(nonce)); | 958 return ("#" + QuicTextUtils::HexEncode(nonce)); |
| 960 } | 959 } |
| 961 | 960 |
| 962 string GenerateClientPublicValuesHex() { | 961 string GenerateClientPublicValuesHex() { |
| 963 char public_value[32]; | 962 char public_value[32]; |
| 964 memset(public_value, 42, sizeof(public_value)); | 963 memset(public_value, 42, sizeof(public_value)); |
| 965 return ("#" + QuicTextUtils::HexEncode(public_value, sizeof(public_value))); | 964 return ("#" + QuicTextUtils::HexEncode(public_value, sizeof(public_value))); |
| 966 } | 965 } |
| 967 | 966 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 978 FullChloGenerator generator(crypto_config, server_addr, client_addr, clock, | 977 FullChloGenerator generator(crypto_config, server_addr, client_addr, clock, |
| 979 proof, compressed_certs_cache, out); | 978 proof, compressed_certs_cache, out); |
| 980 crypto_config->ValidateClientHello( | 979 crypto_config->ValidateClientHello( |
| 981 inchoate_chlo, client_addr.host(), server_addr, version, clock, proof, | 980 inchoate_chlo, client_addr.host(), server_addr, version, clock, proof, |
| 982 generator.GetValidateClientHelloCallback()); | 981 generator.GetValidateClientHelloCallback()); |
| 983 } | 982 } |
| 984 | 983 |
| 985 } // namespace crypto_test_utils | 984 } // namespace crypto_test_utils |
| 986 } // namespace test | 985 } // namespace test |
| 987 } // namespace net | 986 } // namespace net |
| OLD | NEW |