Make QuicTransportClientSession implement QuicCryptoClientStream::ProofHandler. This way, we can listen to OnProofVerifyDetailsAvailable() in Chrome, and provide more detailed logging for certificate verification events. PiperOrigin-RevId: 325461898 Change-Id: I5e4dbcc5e058f2bbe8deda79c6d24d985d535ff8
diff --git a/quic/quic_transport/quic_transport_client_session.cc b/quic/quic_transport/quic_transport_client_session.cc index 3a8eba1..f41b403 100644 --- a/quic/quic_transport/quic_transport_client_session.cc +++ b/quic/quic_transport/quic_transport_client_session.cc
@@ -26,20 +26,6 @@ namespace quic { -namespace { -// ProofHandler is primarily used by QUIC crypto to persist QUIC server configs -// and perform some of related debug logging. QuicTransport does not support -// QUIC crypto, so those methods are not called. -class DummyProofHandler : public QuicCryptoClientStream::ProofHandler { - public: - void OnProofValid( - const QuicCryptoClientConfig::CachedState& /*cached*/) override {} - void OnProofVerifyDetailsAvailable( - const ProofVerifyDetails& /*verify_details*/) override {} -}; - -} // namespace - QuicTransportClientSession::QuicTransportClientSession( QuicConnection* connection, Visitor* owner, @@ -61,12 +47,10 @@ QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_TLS1_3) << "QuicTransport requires TLS 1.3 handshake"; } - // ProofHandler API is not used by TLS 1.3. - static DummyProofHandler* proof_handler = new DummyProofHandler(); crypto_stream_ = std::make_unique<QuicCryptoClientStream>( QuicServerId(url.host(), url.EffectiveIntPort()), this, crypto_config->proof_verifier()->CreateDefaultContext(), crypto_config, - proof_handler, /*has_application_state = */ true); + /*proof_handler=*/this, /*has_application_state = */ true); } void QuicTransportClientSession::OnAlpnSelected( @@ -267,4 +251,10 @@ } } +void QuicTransportClientSession::OnProofValid( + const QuicCryptoClientConfig::CachedState& /*cached*/) {} + +void QuicTransportClientSession::OnProofVerifyDetailsAvailable( + const ProofVerifyDetails& /*verify_details*/) {} + } // namespace quic
diff --git a/quic/quic_transport/quic_transport_client_session.h b/quic/quic_transport/quic_transport_client_session.h index 56b29e4..a519d04 100644 --- a/quic/quic_transport/quic_transport_client_session.h +++ b/quic/quic_transport/quic_transport_client_session.h
@@ -31,7 +31,8 @@ // A client session for the QuicTransport protocol. class QUIC_EXPORT_PRIVATE QuicTransportClientSession : public QuicSession, - public QuicTransportSessionInterface { + public QuicTransportSessionInterface, + public QuicCryptoClientStream::ProofHandler { public: class QUIC_EXPORT_PRIVATE ClientVisitor { public: @@ -111,6 +112,11 @@ using QuicSession::datagram_queue; + // QuicCryptoClientStream::ProofHandler implementation. + void OnProofValid(const QuicCryptoClientConfig::CachedState& cached) override; + void OnProofVerifyDetailsAvailable( + const ProofVerifyDetails& verify_details) override; + protected: class QUIC_EXPORT_PRIVATE ClientIndication : public QuicStream { public: