Deprecate --gfe2_reloadable_flag_quic_tls_use_early_select_cert.

PiperOrigin-RevId: 356283635
Change-Id: Ia682dacd1eb6f10a3c2383d578b703af875188f6
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 27f00e2..0ac25a2 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -57,7 +57,6 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_start_peer_migration_earlier, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_testonly_default_false, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_testonly_default_true, true)
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_tls_use_early_select_cert, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_tls_use_per_handshaker_proof_source, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_unified_iw_options, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_update_packet_content_returns_connected, false)
diff --git a/quic/core/tls_server_handshaker.cc b/quic/core/tls_server_handshaker.cc
index f1a2d86..db04545 100644
--- a/quic/core/tls_server_handshaker.cc
+++ b/quic/core/tls_server_handshaker.cc
@@ -385,24 +385,19 @@
   TransportParameters client_params;
   const uint8_t* client_params_bytes;
   size_t params_bytes_len;
-  if (use_early_select_cert_) {
-    // Make sure we use the right TLS extension codepoint.
-    uint16_t extension_type = TLSEXT_TYPE_quic_transport_parameters_standard;
-    if (session()->version().UsesLegacyTlsExtension()) {
-      extension_type = TLSEXT_TYPE_quic_transport_parameters_legacy;
-    }
-    // When using early select cert callback, SSL_get_peer_quic_transport_params
-    // can not be used to retrieve the client's transport parameters, but we can
-    // use SSL_early_callback_ctx_extension_get to do that.
-    if (!SSL_early_callback_ctx_extension_get(client_hello, extension_type,
-                                              &client_params_bytes,
-                                              &params_bytes_len)) {
-      params_bytes_len = 0;
-    }
-  } else {
-    QUICHE_DCHECK_EQ(client_hello, nullptr);
-    SSL_get_peer_quic_transport_params(ssl(), &client_params_bytes,
-                                       &params_bytes_len);
+
+  // Make sure we use the right TLS extension codepoint.
+  uint16_t extension_type = TLSEXT_TYPE_quic_transport_parameters_standard;
+  if (session()->version().UsesLegacyTlsExtension()) {
+    extension_type = TLSEXT_TYPE_quic_transport_parameters_legacy;
+  }
+  // When using early select cert callback, SSL_get_peer_quic_transport_params
+  // can not be used to retrieve the client's transport parameters, but we can
+  // use SSL_early_callback_ctx_extension_get to do that.
+  if (!SSL_early_callback_ctx_extension_get(client_hello, extension_type,
+                                            &client_params_bytes,
+                                            &params_bytes_len)) {
+    params_bytes_len = 0;
   }
 
   if (params_bytes_len == 0) {
@@ -729,12 +724,6 @@
 
 ssl_select_cert_result_t TlsServerHandshaker::EarlySelectCertCallback(
     const SSL_CLIENT_HELLO* client_hello) {
-  if (!use_early_select_cert_) {
-    return ssl_select_cert_success;
-  }
-
-  QUIC_RELOADABLE_FLAG_COUNT(quic_tls_use_early_select_cert);
-
   // EarlySelectCertCallback can be called twice from BoringSSL: If the first
   // call returns ssl_select_cert_retry, when cert selection completes,
   // SSL_do_handshake will call it again.
@@ -880,57 +869,9 @@
   return true;
 }
 
-int TlsServerHandshaker::TlsExtServernameCallback(int* out_alert) {
-  if (use_early_select_cert_) {
-    return SSL_TLSEXT_ERR_OK;
-  }
-
-  const char* hostname = SSL_get_servername(ssl(), TLSEXT_NAMETYPE_host_name);
-  if (hostname) {
-    hostname_ = hostname;
-    crypto_negotiated_params_->sni =
-        QuicHostnameUtils::NormalizeHostname(hostname_);
-    if (!ValidateHostname(hostname_)) {
-      return SSL_TLSEXT_ERR_ALERT_FATAL;
-    }
-  } else {
-    QUIC_LOG(INFO) << "No hostname indicated in SNI";
-  }
-
-  QuicReferenceCountedPointer<ProofSource::Chain> chain =
-      proof_source_->GetCertChain(session()->connection()->self_address(),
-                                  session()->connection()->peer_address(),
-                                  hostname_);
-  if (!chain || chain->certs.empty()) {
-    QUIC_LOG(ERROR) << "No certs provided for host '" << hostname_ << "'";
-    return SSL_TLSEXT_ERR_ALERT_FATAL;
-  }
-
-  if (!pre_shared_key_.empty()) {
-    // TODO(b/154162689) add PSK support to QUIC+TLS.
-    QUIC_BUG << "QUIC server pre-shared keys not yet supported with TLS";
-    return SSL_TLSEXT_ERR_ALERT_FATAL;
-  }
-
-  CryptoBuffers cert_buffers = chain->ToCryptoBuffers();
-  tls_connection_.SetCertChain(cert_buffers.value);
-
-  std::string error_details;
-  if (!ProcessTransportParameters(nullptr, &error_details)) {
-    CloseConnection(QUIC_HANDSHAKE_FAILED, error_details);
-    *out_alert = SSL_AD_INTERNAL_ERROR;
-    return SSL_TLSEXT_ERR_ALERT_FATAL;
-  }
-  OverrideQuicConfigDefaults(session()->config());
-  session()->OnConfigNegotiated();
-
-  if (!SetTransportParameters().success) {
-    QUIC_LOG(ERROR) << "Failed to set transport parameters";
-    return SSL_TLSEXT_ERR_ALERT_FATAL;
-  }
-
-  QUIC_DLOG(INFO) << "Set " << chain->certs.size() << " certs for server "
-                  << "with hostname " << hostname_;
+int TlsServerHandshaker::TlsExtServernameCallback(int* /*out_alert*/) {
+  // SSL_TLSEXT_ERR_OK causes the server_name extension to be acked in
+  // ServerHello.
   return SSL_TLSEXT_ERR_OK;
 }
 
diff --git a/quic/core/tls_server_handshaker.h b/quic/core/tls_server_handshaker.h
index 35c70be..f2c1451 100644
--- a/quic/core/tls_server_handshaker.h
+++ b/quic/core/tls_server_handshaker.h
@@ -324,12 +324,8 @@
   QuicReferenceCountedPointer<QuicCryptoNegotiatedParameters>
       crypto_negotiated_params_;
   TlsServerConnection tls_connection_;
-  const bool use_early_select_cert_ =
-      GetQuicReloadableFlag(quic_tls_use_early_select_cert);
   const bool use_proof_source_handle_ =
-      use_early_select_cert_ &&
       GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source);
-
   const QuicCryptoServerConfig* crypto_config_;  // Unowned.
 };
 
diff --git a/quic/core/tls_server_handshaker_test.cc b/quic/core/tls_server_handshaker_test.cc
index cf1bbc0..8d529a5 100644
--- a/quic/core/tls_server_handshaker_test.cc
+++ b/quic/core/tls_server_handshaker_test.cc
@@ -376,8 +376,7 @@
 }
 
 TEST_P(TlsServerHandshakerTest, HandshakeWithAsyncSelectCertSuccess) {
-  if (!(GetQuicReloadableFlag(quic_tls_use_early_select_cert) &&
-        GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source))) {
+  if (!GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source)) {
     return;
   }
 
@@ -403,8 +402,7 @@
 }
 
 TEST_P(TlsServerHandshakerTest, HandshakeWithAsyncSelectCertFailure) {
-  if (!(GetQuicReloadableFlag(quic_tls_use_early_select_cert) &&
-        GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source))) {
+  if (!GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source)) {
     return;
   }
 
@@ -427,8 +425,7 @@
 }
 
 TEST_P(TlsServerHandshakerTest, HandshakeWithAsyncSelectCertAndSignature) {
-  if (!(GetQuicReloadableFlag(quic_tls_use_early_select_cert) &&
-        GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source))) {
+  if (!GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source)) {
     return;
   }
 
@@ -486,8 +483,7 @@
 }
 
 TEST_P(TlsServerHandshakerTest, CancelPendingSelectCert) {
-  if (!(GetQuicReloadableFlag(quic_tls_use_early_select_cert) &&
-        GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source))) {
+  if (!GetQuicReloadableFlag(quic_tls_use_per_handshaker_proof_source)) {
     return;
   }