Add an optional `ProofVerifier` parameter to `QuicServer` constructors.

The `ProofVerifier` will then be supplied to the `QuicCryptoServerConfig`.

PiperOrigin-RevId: 797797277
diff --git a/quiche/quic/masque/masque_server.cc b/quiche/quic/masque/masque_server.cc
index 96d47aa..7741789 100644
--- a/quiche/quic/masque/masque_server.cc
+++ b/quiche/quic/masque/masque_server.cc
@@ -19,8 +19,8 @@
 
 MasqueServer::MasqueServer(MasqueMode masque_mode,
                            MasqueServerBackend* masque_server_backend)
-    : QuicServer(CreateDefaultProofSource(), masque_server_backend,
-                 MasqueSupportedVersions()),
+    : QuicServer(CreateDefaultProofSource(), /*proof_verifier=*/nullptr,
+                 masque_server_backend, MasqueSupportedVersions()),
       masque_mode_(masque_mode),
       masque_server_backend_(masque_server_backend) {}
 
diff --git a/quiche/quic/moqt/tools/moqt_server.cc b/quiche/quic/moqt/tools/moqt_server.cc
index 80efc0d..b919cd4 100644
--- a/quiche/quic/moqt/tools/moqt_server.cc
+++ b/quiche/quic/moqt/tools/moqt_server.cc
@@ -41,6 +41,6 @@
 MoqtServer::MoqtServer(std::unique_ptr<quic::ProofSource> proof_source,
                        MoqtIncomingSessionCallback callback)
     : backend_(CreateWebTransportCallback(std::move(callback), &server_)),
-      server_(std::move(proof_source), &backend_) {}
+      server_(std::move(proof_source), /*proof_verifier=*/nullptr, &backend_) {}
 
 }  // namespace moqt
diff --git a/quiche/quic/qbone/qbone_client_test.cc b/quiche/quic/qbone/qbone_client_test.cc
index d986477..a5706fd 100644
--- a/quiche/quic/qbone/qbone_client_test.cc
+++ b/quiche/quic/qbone/qbone_client_test.cc
@@ -135,7 +135,8 @@
  public:
   explicit QboneTestServer(std::unique_ptr<ProofSource> proof_source,
                            quic::QuicMemoryCacheBackend* response_cache)
-      : QuicServer(std::move(proof_source), response_cache) {}
+      : QuicServer(std::move(proof_source), /*proof_verifier=*/nullptr,
+                   response_cache) {}
   QuicDispatcher* CreateQuicDispatcher() override {
     return new QuicQboneDispatcher(
         &config(), &crypto_config(), version_manager(),
diff --git a/quiche/quic/test_tools/quic_test_server.cc b/quiche/quic/test_tools/quic_test_server.cc
index 09795f7..d5c364d 100644
--- a/quiche/quic/test_tools/quic_test_server.cc
+++ b/quiche/quic/test_tools/quic_test_server.cc
@@ -162,7 +162,8 @@
 QuicTestServer::QuicTestServer(
     std::unique_ptr<ProofSource> proof_source,
     QuicSimpleServerBackend* quic_simple_server_backend)
-    : QuicServer(std::move(proof_source), quic_simple_server_backend) {}
+    : QuicServer(std::move(proof_source), /*proof_verifier=*/nullptr,
+                 quic_simple_server_backend) {}
 
 QuicTestServer::QuicTestServer(
     std::unique_ptr<ProofSource> proof_source, const QuicConfig& config,
@@ -177,7 +178,7 @@
     const ParsedQuicVersionVector& supported_versions,
     QuicSimpleServerBackend* quic_simple_server_backend,
     uint8_t expected_server_connection_id_length)
-    : QuicServer(std::move(proof_source), config,
+    : QuicServer(std::move(proof_source), /*proof_verifier=*/nullptr, config,
                  QuicCryptoServerConfig::ConfigOptions(), supported_versions,
                  quic_simple_server_backend,
                  expected_server_connection_id_length) {}
diff --git a/quiche/quic/tools/quic_server.cc b/quiche/quic/tools/quic_server.cc
index 1578161..1d82f62 100644
--- a/quiche/quic/tools/quic_server.cc
+++ b/quiche/quic/tools/quic_server.cc
@@ -48,19 +48,23 @@
 }  // namespace
 
 QuicServer::QuicServer(std::unique_ptr<ProofSource> proof_source,
+                       std::unique_ptr<ProofVerifier> proof_verifier,
                        QuicSimpleServerBackend* quic_simple_server_backend)
-    : QuicServer(std::move(proof_source), quic_simple_server_backend,
-                 AllSupportedVersions()) {}
+    : QuicServer(std::move(proof_source), std::move(proof_verifier),
+                 quic_simple_server_backend, AllSupportedVersions()) {}
 
 QuicServer::QuicServer(std::unique_ptr<ProofSource> proof_source,
+                       std::unique_ptr<ProofVerifier> proof_verifier,
                        QuicSimpleServerBackend* quic_simple_server_backend,
                        const ParsedQuicVersionVector& supported_versions)
-    : QuicServer(std::move(proof_source), QuicConfig(),
-                 QuicCryptoServerConfig::ConfigOptions(), supported_versions,
-                 quic_simple_server_backend, kQuicDefaultConnectionIdLength) {}
+    : QuicServer(std::move(proof_source), std::move(proof_verifier),
+                 QuicConfig(), QuicCryptoServerConfig::ConfigOptions(),
+                 supported_versions, quic_simple_server_backend,
+                 kQuicDefaultConnectionIdLength) {}
 
 QuicServer::QuicServer(
-    std::unique_ptr<ProofSource> proof_source, const QuicConfig& config,
+    std::unique_ptr<ProofSource> proof_source,
+    std::unique_ptr<ProofVerifier> proof_verifier, const QuicConfig& config,
     const QuicCryptoServerConfig::ConfigOptions& crypto_config_options,
     const ParsedQuicVersionVector& supported_versions,
     QuicSimpleServerBackend* quic_simple_server_backend,
@@ -68,7 +72,8 @@
     : silent_close_(false),
       config_(config),
       crypto_config_(kSourceAddressTokenSecret, QuicRandom::GetInstance(),
-                     std::move(proof_source), KeyExchangeSource::Default()),
+                     std::move(proof_source), KeyExchangeSource::Default(),
+                     std::move(proof_verifier)),
       crypto_config_options_(crypto_config_options),
       version_manager_(supported_versions),
       quic_simple_server_backend_(quic_simple_server_backend),
diff --git a/quiche/quic/tools/quic_server.h b/quiche/quic/tools/quic_server.h
index 15d0280..56fb461 100644
--- a/quiche/quic/tools/quic_server.h
+++ b/quiche/quic/tools/quic_server.h
@@ -17,6 +17,7 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/quic/core/connection_id_generator.h"
+#include "quiche/quic/core/crypto/proof_verifier.h"
 #include "quiche/quic/core/crypto/quic_crypto_server_config.h"
 #include "quiche/quic/core/deterministic_connection_id_generator.h"
 #include "quiche/quic/core/io/quic_event_loop.h"
@@ -46,11 +47,14 @@
  public:
   // `quic_simple_server_backend` must outlive the created QuicServer.
   QuicServer(std::unique_ptr<ProofSource> proof_source,
+             std::unique_ptr<ProofVerifier> proof_verifier,
              QuicSimpleServerBackend* quic_simple_server_backend);
   QuicServer(std::unique_ptr<ProofSource> proof_source,
+             std::unique_ptr<ProofVerifier> proof_verifier,
              QuicSimpleServerBackend* quic_simple_server_backend,
              const ParsedQuicVersionVector& supported_versions);
   QuicServer(std::unique_ptr<ProofSource> proof_source,
+             std::unique_ptr<ProofVerifier> proof_verifier,
              const QuicConfig& config,
              const QuicCryptoServerConfig::ConfigOptions& crypto_config_options,
              const ParsedQuicVersionVector& supported_versions,
diff --git a/quiche/quic/tools/quic_server_factory.cc b/quiche/quic/tools/quic_server_factory.cc
index c044c21..3c56440 100644
--- a/quiche/quic/tools/quic_server_factory.cc
+++ b/quiche/quic/tools/quic_server_factory.cc
@@ -15,7 +15,8 @@
     quic::QuicSimpleServerBackend* backend,
     std::unique_ptr<quic::ProofSource> proof_source,
     const quic::ParsedQuicVersionVector& supported_versions) {
-  return std::make_unique<quic::QuicServer>(std::move(proof_source), backend,
+  return std::make_unique<quic::QuicServer>(std::move(proof_source),
+                                            /*proof_verifier=*/nullptr, backend,
                                             supported_versions);
 }
 
diff --git a/quiche/quic/tools/quic_server_test.cc b/quiche/quic/tools/quic_server_test.cc
index 1abb75c..2707cb1 100644
--- a/quiche/quic/tools/quic_server_test.cc
+++ b/quiche/quic/tools/quic_server_test.cc
@@ -63,7 +63,7 @@
   explicit TestQuicServer(QuicEventLoopFactory* event_loop_factory,
                           QuicMemoryCacheBackend* quic_simple_server_backend)
       : QuicServer(crypto_test_utils::ProofSourceForTesting(),
-                   quic_simple_server_backend),
+                   /*proof_verifier=*/nullptr, quic_simple_server_backend),
         quic_simple_server_backend_(quic_simple_server_backend),
         event_loop_factory_(event_loop_factory) {}
 
diff --git a/quiche/quic/tools/web_transport_test_server.cc b/quiche/quic/tools/web_transport_test_server.cc
index 359021e..7c27156 100644
--- a/quiche/quic/tools/web_transport_test_server.cc
+++ b/quiche/quic/tools/web_transport_test_server.cc
@@ -83,7 +83,8 @@
       quiche::QuicheParseCommandLineFlags(usage, argc, argv);
 
   WebTransportOnlyBackend backend(ProcessRequest);
-  QuicServer server(quiche::CreateDefaultProofSource(), &backend);
+  QuicServer server(quiche::CreateDefaultProofSource(),
+                    /*proof_verifier=*/nullptr, &backend);
   quic::QuicSocketAddress addr(quic::QuicIpAddress::Any6(),
                                quiche::GetQuicheCommandLineFlag(FLAGS_port));
   if (!server.CreateUDPSocketAndListen(addr)) {