Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Unified Diff: net/quic/core/crypto/quic_crypto_server_config.cc

Issue 2907743003: Change CryptoHandshakeMessage::GetTaglist to tag a QuicTagVector* (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 f0f40a0789b838469bff1b2565809c18976ca001..51f7a0506d86b6f8b27b9196a3169e494105c885 100644
--- a/net/quic/core/crypto/quic_crypto_server_config.cc
+++ b/net/quic/core/crypto/quic_crypto_server_config.cc
@@ -694,12 +694,8 @@ void QuicCryptoServerConfig::ProcessClientHello(
// No need to get a new proof if one was already generated.
if (!signed_config->chain) {
- const QuicTag* tag_ptr;
- size_t num_tags;
QuicTagVector connection_options;
- if (client_hello.GetTaglist(kCOPT, &tag_ptr, &num_tags) == QUIC_NO_ERROR) {
- connection_options.assign(tag_ptr, tag_ptr + num_tags);
- }
+ client_hello.GetTaglist(kCOPT, &connection_options);
std::unique_ptr<ProcessClientHelloCallback> cb(
new ProcessClientHelloCallback(
this, validate_chlo_result, reject_only, connection_id,
@@ -790,39 +786,35 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof(
return;
}
- const QuicTag* their_aeads;
- const QuicTag* their_key_exchanges;
- size_t num_their_aeads, num_their_key_exchanges;
- if (client_hello.GetTaglist(kAEAD, &their_aeads, &num_their_aeads) !=
- QUIC_NO_ERROR ||
- client_hello.GetTaglist(kKEXS, &their_key_exchanges,
- &num_their_key_exchanges) != QUIC_NO_ERROR ||
- num_their_aeads != 1 || num_their_key_exchanges != 1) {
+ QuicTagVector their_aeads;
+ QuicTagVector their_key_exchanges;
+ if (client_hello.GetTaglist(kAEAD, &their_aeads) != QUIC_NO_ERROR ||
+ client_hello.GetTaglist(kKEXS, &their_key_exchanges) != QUIC_NO_ERROR ||
+ their_aeads.size() != 1 || their_key_exchanges.size() != 1) {
helper.Fail(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER,
"Missing or invalid AEAD or KEXS");
return;
}
size_t key_exchange_index;
- if (!FindMutualQuicTag(requested_config->aead, their_aeads, num_their_aeads,
- &params->aead, nullptr) ||
- !FindMutualQuicTag(requested_config->kexs, their_key_exchanges,
- num_their_key_exchanges, &params->key_exchange,
+ if (!FindMutualQuicTag(requested_config->aead, their_aeads.data(),
+ their_aeads.size(), &params->aead, nullptr) ||
+ !FindMutualQuicTag(requested_config->kexs, their_key_exchanges.data(),
+ their_key_exchanges.size(), &params->key_exchange,
&key_exchange_index)) {
helper.Fail(QUIC_CRYPTO_NO_SUPPORT, "Unsupported AEAD or KEXS");
return;
}
if (!requested_config->tb_key_params.empty()) {
- const QuicTag* their_tbkps;
- size_t num_their_tbkps;
- switch (client_hello.GetTaglist(kTBKP, &their_tbkps, &num_their_tbkps)) {
+ QuicTagVector their_tbkps;
+ switch (client_hello.GetTaglist(kTBKP, &their_tbkps)) {
case QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND:
break;
case QUIC_NO_ERROR:
- if (FindMutualQuicTag(requested_config->tb_key_params, their_tbkps,
- num_their_tbkps, &params->token_binding_key_param,
- nullptr)) {
+ if (FindMutualQuicTag(requested_config->tb_key_params,
+ their_tbkps.data(), their_tbkps.size(),
+ &params->token_binding_key_param, nullptr)) {
break;
}
default:
@@ -1266,12 +1258,8 @@ void QuicCryptoServerConfig::EvaluateClientHello(
Perspective::IS_SERVER);
bool need_proof = true;
need_proof = !signed_config->chain;
- const QuicTag* tag_ptr;
- size_t num_tags;
QuicTagVector connection_options;
- if (client_hello.GetTaglist(kCOPT, &tag_ptr, &num_tags) == QUIC_NO_ERROR) {
- connection_options.assign(tag_ptr, tag_ptr + num_tags);
- }
+ client_hello.GetTaglist(kCOPT, &connection_options);
if (need_proof) {
// Make an async call to GetProof and setup the callback to trampoline
@@ -1623,31 +1611,24 @@ QuicCryptoServerConfig::ParseConfigProtobuf(
}
config->id = scid.as_string();
- const QuicTag* aead_tags;
- size_t aead_len;
- if (msg->GetTaglist(kAEAD, &aead_tags, &aead_len) != QUIC_NO_ERROR) {
+ if (msg->GetTaglist(kAEAD, &(config->aead)) != QUIC_NO_ERROR) {
Nico 2017/05/27 00:34:32 Nit: no parens
Ryan Hamilton 2017/05/27 00:39:54 Done.
QUIC_LOG(WARNING) << "Server config message is missing AEAD";
return nullptr;
}
- config->aead = std::vector<QuicTag>(aead_tags, aead_tags + aead_len);
- const QuicTag* kexs_tags;
- size_t kexs_len;
- if (msg->GetTaglist(kKEXS, &kexs_tags, &kexs_len) != QUIC_NO_ERROR) {
+ QuicTagVector kexs_tags;
+ if (msg->GetTaglist(kKEXS, &kexs_tags) != QUIC_NO_ERROR) {
QUIC_LOG(WARNING) << "Server config message is missing KEXS";
return nullptr;
}
- const QuicTag* tbkp_tags;
- size_t tbkp_len;
QuicErrorCode err;
- if ((err = msg->GetTaglist(kTBKP, &tbkp_tags, &tbkp_len)) !=
+ if ((err = msg->GetTaglist(kTBKP, &(config->tb_key_params))) !=
Nico 2017/05/27 00:34:32 Ditto
Ryan Hamilton 2017/05/27 00:39:53 Done.
QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND &&
err != QUIC_NO_ERROR) {
QUIC_LOG(WARNING) << "Server config message is missing or has invalid TBKP";
return nullptr;
}
- config->tb_key_params = std::vector<QuicTag>(tbkp_tags, tbkp_tags + tbkp_len);
QuicStringPiece orbit;
if (!msg->GetStringPiece(kORBT, &orbit)) {
@@ -1664,26 +1645,24 @@ QuicCryptoServerConfig::ParseConfigProtobuf(
static_assert(sizeof(config->orbit) == kOrbitSize, "incorrect orbit size");
memcpy(config->orbit, orbit.data(), sizeof(config->orbit));
- if (kexs_len != protobuf->key_size()) {
- QUIC_LOG(WARNING) << "Server config has " << kexs_len
+ if (kexs_tags.size() != protobuf->key_size()) {
+ QUIC_LOG(WARNING) << "Server config has " << kexs_tags.size()
<< " key exchange methods configured, but "
<< protobuf->key_size() << " private keys";
return nullptr;
}
- const QuicTag* proof_demand_tags;
- size_t num_proof_demand_tags;
- if (msg->GetTaglist(kPDMD, &proof_demand_tags, &num_proof_demand_tags) ==
- QUIC_NO_ERROR) {
- for (size_t i = 0; i < num_proof_demand_tags; i++) {
- if (proof_demand_tags[i] == kCHID) {
+ QuicTagVector proof_demand_tags;
+ if (msg->GetTaglist(kPDMD, &proof_demand_tags) == QUIC_NO_ERROR) {
+ for (QuicTag tag : proof_demand_tags) {
+ if (tag == kCHID) {
config->channel_id_enabled = true;
break;
}
}
}
- for (size_t i = 0; i < kexs_len; i++) {
+ for (size_t i = 0; i < kexs_tags.size(); i++) {
const QuicTag tag = kexs_tags[i];
string private_key;
@@ -1941,18 +1920,15 @@ bool QuicCryptoServerConfig::ValidateExpectedLeafCertificate(
bool QuicCryptoServerConfig::ClientDemandsX509Proof(
const CryptoHandshakeMessage& client_hello) const {
- const QuicTag* their_proof_demands;
- size_t num_their_proof_demands;
+ QuicTagVector their_proof_demands;
- if (client_hello.GetTaglist(kPDMD, &their_proof_demands,
- &num_their_proof_demands) != QUIC_NO_ERROR) {
+ if (client_hello.GetTaglist(kPDMD, &their_proof_demands) != QUIC_NO_ERROR) {
return false;
}
- for (size_t i = 0; i < num_their_proof_demands; i++) {
- switch (their_proof_demands[i]) {
- case kX509:
- return true;
+ for (const QuicTag tag : their_proof_demands) {
+ if (tag == kX509) {
+ return true;
}
}
return false;

Powered by Google App Engine
This is Rietveld 408576698