No public description

Startblock:
PiperOrigin-RevId: 874798072
diff --git a/quiche/quic/core/crypto/proof_source.h b/quiche/quic/core/crypto/proof_source.h
index 69c5c60..6391ae2 100644
--- a/quiche/quic/core/crypto/proof_source.h
+++ b/quiche/quic/core/crypto/proof_source.h
@@ -418,7 +418,8 @@
       std::optional<std::string> alps,
       const std::vector<uint8_t>& quic_transport_params,
       const std::optional<std::vector<uint8_t>>& early_data_context,
-      const QuicSSLConfig& ssl_config) = 0;
+      const QuicSSLConfig& ssl_config,
+      bool disable_alps_explicit_codepoint) = 0;
 
   // Starts a compute signature operation. If the operation is not cancelled
   // when it completes, callback()->OnComputeSignatureDone will be invoked.
diff --git a/quiche/quic/core/tls_server_handshaker.cc b/quiche/quic/core/tls_server_handshaker.cc
index 1024b2f..3336648 100644
--- a/quiche/quic/core/tls_server_handshaker.cc
+++ b/quiche/quic/core/tls_server_handshaker.cc
@@ -107,7 +107,8 @@
     std::optional<std::string> /*alps*/,
     const std::vector<uint8_t>& /*quic_transport_params*/,
     const std::optional<std::vector<uint8_t>>& /*early_data_context*/,
-    const QuicSSLConfig& /*ssl_config*/) {
+    const QuicSSLConfig& /*ssl_config*/,
+    bool /*disable_alps_explicit_codepoint*/) {
   if (!handshaker_ || !proof_source_) {
     QUIC_BUG(quic_bug_10341_1)
         << "SelectCertificate called on a detached handle";
@@ -1084,7 +1085,7 @@
       AlpnForVersion(session()->version()), std::move(alps_result.alps_buffer),
       set_transport_params_result.quic_transport_params,
       set_transport_params_result.early_data_context,
-      tls_connection_.ssl_config());
+      tls_connection_.ssl_config(), /*disable_alps_explicit_codepoint=*/false);
 
   QUICHE_DCHECK_EQ(status, *select_cert_status());
 
diff --git a/quiche/quic/core/tls_server_handshaker.h b/quiche/quic/core/tls_server_handshaker.h
index 8ad747d..dccf620 100644
--- a/quiche/quic/core/tls_server_handshaker.h
+++ b/quiche/quic/core/tls_server_handshaker.h
@@ -275,7 +275,8 @@
         std::optional<std::string> alps,
         const std::vector<uint8_t>& quic_transport_params,
         const std::optional<std::vector<uint8_t>>& early_data_context,
-        const QuicSSLConfig& ssl_config) override;
+        const QuicSSLConfig& ssl_config,
+        bool disable_alps_explicit_codepoint) override;
 
     // Delegates to proof_source_->ComputeTlsSignature.
     // Returns QUIC_SUCCESS, QUIC_FAILURE or QUIC_PENDING.
diff --git a/quiche/quic/test_tools/fake_proof_source_handle.cc b/quiche/quic/test_tools/fake_proof_source_handle.cc
index 0d99eaf..fc33158 100644
--- a/quiche/quic/test_tools/fake_proof_source_handle.cc
+++ b/quiche/quic/test_tools/fake_proof_source_handle.cc
@@ -95,14 +95,14 @@
     std::optional<std::string> alps,
     const std::vector<uint8_t>& quic_transport_params,
     const std::optional<std::vector<uint8_t>>& early_data_context,
-    const QuicSSLConfig& ssl_config) {
+    const QuicSSLConfig& ssl_config, bool disable_alps_explicit_codepoint) {
   if (select_cert_action_ != Action::FAIL_SYNC_DO_NOT_CHECK_CLOSED) {
     QUICHE_CHECK(!closed_);
   }
-  all_select_cert_args_.push_back(
-      SelectCertArgs(server_address, client_address, original_connection_id,
-                     ssl_capabilities, hostname, alpn, alps,
-                     quic_transport_params, early_data_context, ssl_config));
+  all_select_cert_args_.push_back(SelectCertArgs(
+      server_address, client_address, original_connection_id, ssl_capabilities,
+      hostname, alpn, alps, quic_transport_params, early_data_context,
+      ssl_config, disable_alps_explicit_codepoint));
 
   if (select_cert_action_ == Action::DELEGATE_ASYNC ||
       select_cert_action_ == Action::FAIL_ASYNC) {
diff --git a/quiche/quic/test_tools/fake_proof_source_handle.h b/quiche/quic/test_tools/fake_proof_source_handle.h
index b9903ad..3347482 100644
--- a/quiche/quic/test_tools/fake_proof_source_handle.h
+++ b/quiche/quic/test_tools/fake_proof_source_handle.h
@@ -62,7 +62,8 @@
       std::optional<std::string> alps,
       const std::vector<uint8_t>& quic_transport_params,
       const std::optional<std::vector<uint8_t>>& early_data_context,
-      const QuicSSLConfig& ssl_config) override;
+      const QuicSSLConfig& ssl_config,
+      bool disable_alps_explicit_codepoint) override;
 
   QuicAsyncStatus ComputeSignature(const QuicSocketAddress& server_address,
                                    const QuicSocketAddress& client_address,
@@ -85,7 +86,8 @@
                    std::string alpn, std::optional<std::string> alps,
                    std::vector<uint8_t> quic_transport_params,
                    std::optional<std::vector<uint8_t>> early_data_context,
-                   QuicSSLConfig ssl_config)
+                   QuicSSLConfig ssl_config,
+                   bool disable_alps_explicit_codepoint)
         : server_address(server_address),
           client_address(client_address),
           original_connection_id(original_connection_id),
@@ -95,7 +97,8 @@
           alps(alps),
           quic_transport_params(quic_transport_params),
           early_data_context(early_data_context),
-          ssl_config(ssl_config) {}
+          ssl_config(ssl_config),
+          disable_alps_explicit_codepoint(disable_alps_explicit_codepoint) {}
 
     QuicSocketAddress server_address;
     QuicSocketAddress client_address;
@@ -107,6 +110,7 @@
     std::vector<uint8_t> quic_transport_params;
     std::optional<std::vector<uint8_t>> early_data_context;
     QuicSSLConfig ssl_config;
+    bool disable_alps_explicit_codepoint;
   };
 
   struct ComputeSignatureArgs {