| Index: net/quic/core/crypto/quic_crypto_server_config.cc
|
| diff --git a/net/quic/core/crypto/quic_crypto_server_config.cc b/net/quic/core/crypto/quic_crypto_server_config.cc
|
| index c5582fd124d50ed5a8b71084e054fe57d9090790..fe7343d519277099e191663af2fb029e36f893ea 100644
|
| --- a/net/quic/core/crypto/quic_crypto_server_config.cc
|
| +++ b/net/quic/core/crypto/quic_crypto_server_config.cc
|
| @@ -41,7 +41,6 @@
|
| #include "net/quic/platform/api/quic_text_utils.h"
|
| #include "third_party/boringssl/src/include/openssl/sha.h"
|
|
|
| -using base::StringPiece;
|
| using std::string;
|
|
|
| namespace net {
|
| @@ -56,11 +55,12 @@ const size_t kMultiplier = 3;
|
|
|
| const int kMaxTokenAddresses = 4;
|
|
|
| -string DeriveSourceAddressTokenKey(StringPiece source_address_token_secret) {
|
| - crypto::HKDF hkdf(source_address_token_secret, StringPiece() /* no salt */,
|
| - "QUIC source address token key",
|
| - CryptoSecretBoxer::GetKeySize(), 0 /* no fixed IV needed */,
|
| - 0 /* no subkey secret */);
|
| +string DeriveSourceAddressTokenKey(
|
| + QuicStringPiece source_address_token_secret) {
|
| + crypto::HKDF hkdf(
|
| + source_address_token_secret, QuicStringPiece() /* no salt */,
|
| + "QUIC source address token key", CryptoSecretBoxer::GetKeySize(),
|
| + 0 /* no fixed IV needed */, 0 /* no subkey secret */);
|
| return hkdf.server_write_key().as_string();
|
| }
|
|
|
| @@ -148,7 +148,7 @@ QuicCryptoServerConfig::ConfigOptions::ConfigOptions(
|
| QuicCryptoServerConfig::ConfigOptions::~ConfigOptions() {}
|
|
|
| QuicCryptoServerConfig::QuicCryptoServerConfig(
|
| - StringPiece source_address_token_secret,
|
| + QuicStringPiece source_address_token_secret,
|
| QuicRandom* server_nonce_entropy,
|
| std::unique_ptr<ProofSource> proof_source)
|
| : replay_protection_(true),
|
| @@ -189,7 +189,7 @@ QuicCryptoServerConfig::GenerateConfig(QuicRandom* rand,
|
| Curve25519KeyExchange::NewPrivateKey(rand);
|
| std::unique_ptr<Curve25519KeyExchange> curve25519(
|
| Curve25519KeyExchange::New(curve25519_private_key));
|
| - StringPiece curve25519_public_value = curve25519->public_value();
|
| + QuicStringPiece curve25519_public_value = curve25519->public_value();
|
|
|
| string encoded_public_values;
|
| // First three bytes encode the length of the public value.
|
| @@ -208,7 +208,7 @@ QuicCryptoServerConfig::GenerateConfig(QuicRandom* rand,
|
| p256_private_key = P256KeyExchange::NewPrivateKey();
|
| std::unique_ptr<P256KeyExchange> p256(
|
| P256KeyExchange::New(p256_private_key));
|
| - StringPiece p256_public_value = p256->public_value();
|
| + QuicStringPiece p256_public_value = p256->public_value();
|
|
|
| DCHECK_LT(p256_public_value.size(), (1U << 24));
|
| encoded_public_values.push_back(
|
| @@ -247,7 +247,7 @@ QuicCryptoServerConfig::GenerateConfig(QuicRandom* rand,
|
| DCHECK(options.orbit.empty());
|
| rand->RandBytes(orbit_bytes, sizeof(orbit_bytes));
|
| }
|
| - msg.SetStringPiece(kORBT, StringPiece(orbit_bytes, sizeof(orbit_bytes)));
|
| + msg.SetStringPiece(kORBT, QuicStringPiece(orbit_bytes, sizeof(orbit_bytes)));
|
|
|
| if (options.channel_id_enabled) {
|
| msg.SetVector(kPDMD, QuicTagVector{kCHID});
|
| @@ -269,7 +269,7 @@ QuicCryptoServerConfig::GenerateConfig(QuicRandom* rand,
|
| // The SCID is a truncated SHA-256 digest.
|
| static_assert(16 <= SHA256_DIGEST_LENGTH, "SCID length too high.");
|
| msg.SetStringPiece(
|
| - kSCID, StringPiece(reinterpret_cast<const char*>(scid_bytes), 16));
|
| + kSCID, QuicStringPiece(reinterpret_cast<const char*>(scid_bytes), 16));
|
| } else {
|
| msg.SetStringPiece(kSCID, options.id);
|
| }
|
| @@ -440,7 +440,7 @@ void QuicCryptoServerConfig::ValidateClientHello(
|
| new ValidateClientHelloResultCallback::Result(client_hello, client_ip,
|
| now));
|
|
|
| - StringPiece requested_scid;
|
| + QuicStringPiece requested_scid;
|
| client_hello.GetStringPiece(kSCID, &requested_scid);
|
|
|
| QuicReferenceCountedPointer<Config> requested_config;
|
| @@ -640,7 +640,7 @@ void QuicCryptoServerConfig::ProcessClientHello(
|
| return;
|
| }
|
|
|
| - StringPiece requested_scid;
|
| + QuicStringPiece requested_scid;
|
| client_hello.GetStringPiece(kSCID, &requested_scid);
|
| const QuicWallTime now(clock->WallNow());
|
|
|
| @@ -757,7 +757,7 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof(
|
| std::unique_ptr<DiversificationNonce> out_diversification_nonce(
|
| new DiversificationNonce);
|
|
|
| - StringPiece cert_sct;
|
| + QuicStringPiece cert_sct;
|
| if (client_hello.GetStringPiece(kCertificateSCTTag, &cert_sct) &&
|
| cert_sct.empty()) {
|
| params->sct_supported_by_client = true;
|
| @@ -826,7 +826,7 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof(
|
| }
|
| }
|
|
|
| - StringPiece public_value;
|
| + QuicStringPiece public_value;
|
| if (!client_hello.GetStringPiece(kPUBS, &public_value)) {
|
| helper.Fail(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER, "Missing public value");
|
| return;
|
| @@ -863,7 +863,7 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof(
|
| }
|
| hkdf_suffix.append(signed_config->chain->certs.at(0));
|
|
|
| - StringPiece cetv_ciphertext;
|
| + QuicStringPiece cetv_ciphertext;
|
| if (requested_config->channel_id_enabled &&
|
| client_hello.GetStringPiece(kCETV, &cetv_ciphertext)) {
|
| CryptoHandshakeMessage client_hello_copy(client_hello);
|
| @@ -896,21 +896,21 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof(
|
| size_t plaintext_length = 0;
|
| const bool success = crypters.decrypter->DecryptPacket(
|
| QUIC_VERSION_35, 0 /* packet number */,
|
| - StringPiece() /* associated data */, cetv_ciphertext, plaintext,
|
| + QuicStringPiece() /* associated data */, cetv_ciphertext, plaintext,
|
| &plaintext_length, kMaxPacketSize);
|
| if (!success) {
|
| helper.Fail(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER,
|
| "CETV decryption failure");
|
| return;
|
| }
|
| - std::unique_ptr<CryptoHandshakeMessage> cetv(
|
| - CryptoFramer::ParseMessage(StringPiece(plaintext, plaintext_length)));
|
| + std::unique_ptr<CryptoHandshakeMessage> cetv(CryptoFramer::ParseMessage(
|
| + QuicStringPiece(plaintext, plaintext_length)));
|
| if (!cetv.get()) {
|
| helper.Fail(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER, "CETV parse error");
|
| return;
|
| }
|
|
|
| - StringPiece key, signature;
|
| + QuicStringPiece key, signature;
|
| if (cetv->GetStringPiece(kCIDK, &key) &&
|
| cetv->GetStringPiece(kCIDS, &signature)) {
|
| if (!ChannelIDVerifier::Verify(key, hkdf_input, signature)) {
|
| @@ -1005,7 +1005,8 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof(
|
| }
|
|
|
| QuicReferenceCountedPointer<QuicCryptoServerConfig::Config>
|
| -QuicCryptoServerConfig::GetConfigWithScid(StringPiece requested_scid) const {
|
| +QuicCryptoServerConfig::GetConfigWithScid(
|
| + QuicStringPiece requested_scid) const {
|
| configs_lock_.AssertReaderHeld();
|
|
|
| if (!requested_scid.empty()) {
|
| @@ -1207,7 +1208,7 @@ void QuicCryptoServerConfig::EvaluateClientHello(
|
| client_hello.GetStringPiece(kUAID, &info->user_agent_id);
|
|
|
| HandshakeFailureReason source_address_token_error = MAX_FAILURE_REASON;
|
| - StringPiece srct;
|
| + QuicStringPiece srct;
|
| if (client_hello.GetStringPiece(kSourceAddressTokenTag, &srct)) {
|
| Config& config =
|
| requested_config != nullptr ? *requested_config : *primary_config;
|
| @@ -1226,7 +1227,7 @@ void QuicCryptoServerConfig::EvaluateClientHello(
|
| }
|
|
|
| if (!requested_config.get()) {
|
| - StringPiece requested_scid;
|
| + QuicStringPiece requested_scid;
|
| if (client_hello.GetStringPiece(kSCID, &requested_scid)) {
|
| info->reject_reasons.push_back(SERVER_CONFIG_UNKNOWN_CONFIG_FAILURE);
|
| } else {
|
| @@ -1337,7 +1338,7 @@ void QuicCryptoServerConfig::EvaluateClientHelloAfterGetProof(
|
|
|
| void QuicCryptoServerConfig::BuildServerConfigUpdateMessage(
|
| QuicVersion version,
|
| - StringPiece chlo_hash,
|
| + QuicStringPiece chlo_hash,
|
| const SourceAddressTokens& previous_source_address_tokens,
|
| const QuicSocketAddress& server_address,
|
| const QuicIpAddress& client_ip,
|
| @@ -1498,12 +1499,12 @@ void QuicCryptoServerConfig::BuildRejection(
|
| return;
|
| }
|
|
|
| - StringPiece client_common_set_hashes;
|
| + QuicStringPiece client_common_set_hashes;
|
| if (client_hello.GetStringPiece(kCCS, &client_common_set_hashes)) {
|
| params->client_common_set_hashes = client_common_set_hashes.as_string();
|
| }
|
|
|
| - StringPiece client_cached_cert_hashes;
|
| + QuicStringPiece client_cached_cert_hashes;
|
| if (client_hello.GetStringPiece(kCCRT, &client_cached_cert_hashes)) {
|
| params->client_cached_cert_hashes = client_cached_cert_hashes.as_string();
|
| }
|
| @@ -1602,7 +1603,7 @@ QuicCryptoServerConfig::ParseConfigProtobuf(
|
|
|
| config->priority = protobuf->priority();
|
|
|
| - StringPiece scid;
|
| + QuicStringPiece scid;
|
| if (!msg->GetStringPiece(kSCID, &scid)) {
|
| QUIC_LOG(WARNING) << "Server config message is missing SCID";
|
| return nullptr;
|
| @@ -1635,7 +1636,7 @@ QuicCryptoServerConfig::ParseConfigProtobuf(
|
| }
|
| config->tb_key_params = std::vector<QuicTag>(tbkp_tags, tbkp_tags + tbkp_len);
|
|
|
| - StringPiece orbit;
|
| + QuicStringPiece orbit;
|
| if (!msg->GetStringPiece(kORBT, &orbit)) {
|
| QUIC_LOG(WARNING) << "Server config message is missing ORBT";
|
| return nullptr;
|
| @@ -1814,10 +1815,10 @@ int QuicCryptoServerConfig::NumberOfConfigs() const {
|
|
|
| HandshakeFailureReason QuicCryptoServerConfig::ParseSourceAddressToken(
|
| const Config& config,
|
| - StringPiece token,
|
| + QuicStringPiece token,
|
| SourceAddressTokens* tokens) const {
|
| string storage;
|
| - StringPiece plaintext;
|
| + QuicStringPiece plaintext;
|
| if (!config.source_address_token_boxer->Unbox(token, &storage, &plaintext)) {
|
| return SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE;
|
| }
|
| @@ -1907,8 +1908,8 @@ string QuicCryptoServerConfig::NewServerNonce(QuicRandom* rand,
|
| sizeof(server_nonce) - sizeof(timestamp));
|
|
|
| return server_nonce_boxer_.Box(
|
| - rand,
|
| - StringPiece(reinterpret_cast<char*>(server_nonce), sizeof(server_nonce)));
|
| + rand, QuicStringPiece(reinterpret_cast<char*>(server_nonce),
|
| + sizeof(server_nonce)));
|
| }
|
|
|
| bool QuicCryptoServerConfig::ValidateExpectedLeafCertificate(
|
|
|