Add a non-const tls_connection() getter to TlsHandshaker.

For context: https://github.com/envoyproxy/envoy/pull/42734#discussion_r2948352146

PiperOrigin-RevId: 885760611
diff --git a/quiche/quic/core/tls_client_handshaker.h b/quiche/quic/core/tls_client_handshaker.h
index 07b0966..447f7b6 100644
--- a/quiche/quic/core/tls_client_handshaker.h
+++ b/quiche/quic/core/tls_client_handshaker.h
@@ -93,10 +93,12 @@
   using TlsHandshaker::ssl;
 
  protected:
-  const TlsConnection* tls_connection() const override {
-    return &tls_connection_;
+  const TlsConnection& tls_connection() const override {
+    return tls_connection_;
   }
 
+  TlsConnection& tls_connection() override { return tls_connection_; }
+
   void FinishHandshake() override;
   void OnEnterEarlyData() override;
   void FillNegotiatedParams();
diff --git a/quiche/quic/core/tls_handshaker.h b/quiche/quic/core/tls_handshaker.h
index 605609a..ac7c6c2 100644
--- a/quiche/quic/core/tls_handshaker.h
+++ b/quiche/quic/core/tls_handshaker.h
@@ -122,9 +122,11 @@
   // Returns the PRF used by the cipher suite negotiated in the TLS handshake.
   const EVP_MD* Prf(const SSL_CIPHER* cipher);
 
-  virtual const TlsConnection* tls_connection() const = 0;
+  virtual const TlsConnection& tls_connection() const = 0;
 
-  SSL* ssl() const { return tls_connection()->ssl(); }
+  virtual TlsConnection& tls_connection() = 0;
+
+  SSL* ssl() const { return tls_connection().ssl(); }
 
   QuicCryptoStream* stream() { return stream_; }
   HandshakerDelegateInterface* handshaker_delegate() {
diff --git a/quiche/quic/core/tls_server_handshaker.h b/quiche/quic/core/tls_server_handshaker.h
index cf36829..7267aaf 100644
--- a/quiche/quic/core/tls_server_handshaker.h
+++ b/quiche/quic/core/tls_server_handshaker.h
@@ -141,10 +141,12 @@
 
   virtual bool ValidateHostname(const std::string& hostname) const;
 
-  const TlsConnection* tls_connection() const override {
-    return &tls_connection_;
+  const TlsConnection& tls_connection() const override {
+    return tls_connection_;
   }
 
+  TlsConnection& tls_connection() override { return tls_connection_; }
+
   // Returns true if the handshake should continue. If false is returned, the
   // caller should fail the handshake.
   virtual bool ProcessAdditionalTransportParameters(