Expose ProofSource::Details on QuicCryptoServerStream

Move ProofSource::Details caching from GfeQuicCryptoServerStream to parent class, not flag protected

PiperOrigin-RevId: 325537643
Change-Id: Idc71b12e1b7a2945e170c972e12a45707ec82457
diff --git a/quic/core/quic_crypto_server_stream.cc b/quic/core/quic_crypto_server_stream.cc
index 6c84067..2b0b3e8 100644
--- a/quic/core/quic_crypto_server_stream.cc
+++ b/quic/core/quic_crypto_server_stream.cc
@@ -157,11 +157,12 @@
         const std::string& error_details,
         std::unique_ptr<CryptoHandshakeMessage> reply,
         std::unique_ptr<DiversificationNonce> diversification_nonce,
-        std::unique_ptr<ProofSource::Details> /*proof_source_details*/) {
+        std::unique_ptr<ProofSource::Details> proof_source_details) {
   // Clear the callback that got us here.
   DCHECK(process_client_hello_cb_ != nullptr);
   DCHECK(validate_client_hello_cb_ == nullptr);
   process_client_hello_cb_ = nullptr;
+  proof_source_details_ = std::move(proof_source_details);
 
   const CryptoHandshakeMessage& message = result.client_hello;
   if (error != QUIC_NO_ERROR) {
@@ -338,6 +339,10 @@
   return signed_config_->proof.send_expect_ct_header;
 }
 
+const ProofSource::Details* QuicCryptoServerStream::ProofSourceDetails() const {
+  return proof_source_details_.get();
+}
+
 bool QuicCryptoServerStream::GetBase64SHA256ClientChannelID(
     std::string* output) const {
   if (!encryption_established() ||
@@ -390,8 +395,9 @@
 void QuicCryptoServerStream::ProcessClientHello(
     QuicReferenceCountedPointer<ValidateClientHelloResultCallback::Result>
         result,
-    std::unique_ptr<ProofSource::Details> /*proof_source_details*/,
+    std::unique_ptr<ProofSource::Details> proof_source_details,
     std::unique_ptr<ProcessClientHelloResultCallback> done_cb) {
+  proof_source_details_ = std::move(proof_source_details);
   const CryptoHandshakeMessage& message = result->client_hello;
   std::string error_details;
   if (!helper_->CanAcceptClientHello(