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 106a6eed9d209c10f301b139f0966490517e6256..543a7debd6758e39c7a2f25de4225bdc6755c818 100644 |
--- a/net/quic/core/crypto/quic_crypto_server_config.cc |
+++ b/net/quic/core/crypto/quic_crypto_server_config.cc |
@@ -557,14 +557,16 @@ class ProcessClientHelloHelper { |
} |
void Fail(QuicErrorCode error, const string& error_details) { |
- (*done_cb_)->Run(error, error_details, nullptr, nullptr); |
+ (*done_cb_)->Run(error, error_details, nullptr, nullptr, nullptr); |
DetachCallback(); |
} |
void Succeed(std::unique_ptr<CryptoHandshakeMessage> message, |
- std::unique_ptr<DiversificationNonce> diversification_nonce) { |
+ std::unique_ptr<DiversificationNonce> diversification_nonce, |
+ std::unique_ptr<ProofSource::Details> proof_source_details) { |
(*done_cb_)->Run(QUIC_NO_ERROR, string(), std::move(message), |
- std::move(diversification_nonce)); |
+ std::move(diversification_nonce), |
+ std::move(proof_source_details)); |
DetachCallback(); |
} |
@@ -632,9 +634,9 @@ class QuicCryptoServerConfig::ProcessClientHelloCallback |
crypto_proof_->cert_sct = leaf_cert_sct; |
} |
config_->ProcessClientHelloAfterGetProof( |
- !ok, *validate_chlo_result_, reject_only_, connection_id_, |
- client_address_, version_, supported_versions_, use_stateless_rejects_, |
- server_designated_connection_id_, clock_, rand_, |
+ !ok, std::move(details), *validate_chlo_result_, reject_only_, |
+ connection_id_, client_address_, version_, supported_versions_, |
+ use_stateless_rejects_, server_designated_connection_id_, clock_, rand_, |
compressed_certs_cache_, params_, crypto_proof_, |
total_framing_overhead_, chlo_packet_size_, requested_config_, |
primary_config_, std::move(done_cb_)); |
@@ -777,15 +779,17 @@ void QuicCryptoServerConfig::ProcessClientHello( |
helper.DetachCallback(); |
ProcessClientHelloAfterGetProof( |
- /* found_error = */ false, *validate_chlo_result, reject_only, |
- connection_id, client_address, version, supported_versions, |
- use_stateless_rejects, server_designated_connection_id, clock, rand, |
- compressed_certs_cache, params, crypto_proof, total_framing_overhead, |
- chlo_packet_size, requested_config, primary_config, std::move(done_cb)); |
+ /* found_error = */ false, /* proof_source_details = */ nullptr, |
+ *validate_chlo_result, reject_only, connection_id, client_address, |
+ version, supported_versions, use_stateless_rejects, |
+ server_designated_connection_id, clock, rand, compressed_certs_cache, |
+ params, crypto_proof, total_framing_overhead, chlo_packet_size, |
+ requested_config, primary_config, std::move(done_cb)); |
} |
void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof( |
bool found_error, |
+ std::unique_ptr<ProofSource::Details> proof_source_details, |
const ValidateClientHelloResultCallback::Result& validate_chlo_result, |
bool reject_only, |
QuicConnectionId connection_id, |
@@ -834,12 +838,14 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof( |
rejection_observer_ != nullptr) { |
rejection_observer_->OnRejectionBuilt(info.reject_reasons, out.get()); |
} |
- helper.Succeed(std::move(out), std::move(out_diversification_nonce)); |
+ helper.Succeed(std::move(out), std::move(out_diversification_nonce), |
+ std::move(proof_source_details)); |
return; |
} |
if (reject_only) { |
- helper.Succeed(std::move(out), std::move(out_diversification_nonce)); |
+ helper.Succeed(std::move(out), std::move(out_diversification_nonce), |
+ std::move(proof_source_details)); |
return; |
} |
@@ -1067,7 +1073,8 @@ void QuicCryptoServerConfig::ProcessClientHelloAfterGetProof( |
out->SetStringPiece(kCADR, address_coder.Encode()); |
out->SetStringPiece(kPUBS, forward_secure_public_value); |
- helper.Succeed(std::move(out), std::move(out_diversification_nonce)); |
+ helper.Succeed(std::move(out), std::move(out_diversification_nonce), |
+ std::move(proof_source_details)); |
} |
scoped_refptr<QuicCryptoServerConfig::Config> |