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: