Update CertificateProviderInstance passing to include certificate name
diff --git a/src/core/ext/xds/xds_api.cc b/src/core/ext/xds/xds_api.cc
index 3182676..6335bac 100644
--- a/src/core/ext/xds/xds_api.cc
+++ b/src/core/ext/xds/xds_api.cc
@@ -1383,6 +1383,19 @@
   return GRPC_ERROR_NONE;
 }
 
+XdsApi::CommonTlsContext::CertificateProviderInstance
+CertificateProviderInstanceParse(
+    const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*
+        certificate_provider_instance_proto) {
+  return {
+      UpbStringToStdString(
+          envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
+              certificate_provider_instance_proto)),
+      UpbStringToStdString(
+          envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(
+              certificate_provider_instance_proto))};
+}
+
 grpc_error* CommonTlsContextParse(
     const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
         common_tls_context_proto,
@@ -1452,19 +1465,18 @@
             combined_validation_context);
     if (validation_context_certificate_provider_instance != nullptr) {
       common_tls_context->combined_validation_context
-          .validation_context_certificate_provider_instance = UpbStringToStdString(
-          envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
-              validation_context_certificate_provider_instance));
+          .validation_context_certificate_provider_instance =
+          CertificateProviderInstanceParse(
+              validation_context_certificate_provider_instance);
     }
   }
   auto* tls_certificate_certificate_provider_instance =
       envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(
           common_tls_context_proto);
   if (tls_certificate_certificate_provider_instance != nullptr) {
-    common_tls_context
-        ->tls_certificate_certificate_provider_instance = UpbStringToStdString(
-        envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
-            tls_certificate_certificate_provider_instance));
+    common_tls_context->tls_certificate_certificate_provider_instance =
+        CertificateProviderInstanceParse(
+            tls_certificate_certificate_provider_instance);
   }
   return GRPC_ERROR_NONE;
 }
diff --git a/src/core/ext/xds/xds_api.h b/src/core/ext/xds/xds_api.h
index cc13c6a..8e7b1f2 100644
--- a/src/core/ext/xds/xds_api.h
+++ b/src/core/ext/xds/xds_api.h
@@ -198,9 +198,20 @@
       }
     };
 
+    struct CertificateProviderInstance {
+      std::string instance_name;
+      std::string certificate_name;
+
+      bool operator==(const CertificateProviderInstance& other) const {
+        return instance_name == other.instance_name &&
+               certificate_name == other.certificate_name;
+      }
+    };
+
     struct CombinedCertificateValidationContext {
       CertificateValidationContext default_validation_context;
-      std::string validation_context_certificate_provider_instance;
+      CertificateProviderInstance
+          validation_context_certificate_provider_instance;
 
       bool operator==(const CombinedCertificateValidationContext& other) const {
         return default_validation_context == other.default_validation_context &&
@@ -209,7 +220,7 @@
       }
     };
 
-    std::string tls_certificate_certificate_provider_instance;
+    CertificateProviderInstance tls_certificate_certificate_provider_instance;
     CombinedCertificateValidationContext combined_validation_context;
 
     bool operator==(const CommonTlsContext& other) const {