diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
index 6e998c4ef1957efe2824d5814e5b2bc35c83f02d..55973fa41ab6857e70f5fb365ce3ac2b3ccdb307 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
@@ -33,7 +33,6 @@ import android.content.pm.ServiceInfo;
 import android.credentials.ClearCredentialStateRequest;
 import android.credentials.CreateCredentialException;
 import android.credentials.CreateCredentialRequest;
-import android.credentials.CredentialDescription;
 import android.credentials.CredentialManager;
 import android.credentials.CredentialOption;
 import android.credentials.CredentialProviderInfo;
@@ -296,11 +295,6 @@ public final class CredentialManagerService
                             mContext,
                             UserHandle.getCallingUserId(),
                             session,
-                            CredentialProviderInfoFactory.getCredentialProviderFromPackageName(
-                                    mContext, UserHandle.getCallingUserId() ,
-                                            result.second.mPackageName,
-                                            CredentialManager.PROVIDER_FILTER_ALL_PROVIDERS,
-                                    new HashSet<>()),
                             session.mClientAppInfo,
                             result.second.mPackageName,
                             result.first));
@@ -752,44 +746,6 @@ public final class CredentialManagerService
 
             enforceCallingPackage(callingPackage, Binder.getCallingUid());
 
-            List<CredentialProviderInfo> services =
-                    getServicesForCredentialDescription(UserHandle.getCallingUserId());
-
-            List<String> providers =
-                    services.stream()
-                            .map(
-                                    credentialProviderInfo ->
-                                            credentialProviderInfo.getServiceInfo().packageName)
-                            .toList();
-
-            if (!providers.contains(callingPackage)) {
-                throw new NonCredentialProviderCallerException(callingPackage);
-            }
-
-            List<CredentialProviderInfo> matchingService =
-                    services.stream()
-                            .filter(
-                                    credentialProviderInfo ->
-                                            credentialProviderInfo
-                                                    .getServiceInfo()
-                                                    .packageName
-                                                    .equals(callingPackage))
-                            .toList();
-
-            CredentialProviderInfo credentialProviderInfo = matchingService.get(0);
-
-            Set<String> supportedTypes =
-                    request.getCredentialDescriptions().stream()
-                            .map(CredentialDescription::getType)
-                            .filter(credentialProviderInfo::hasCapability)
-                            .collect(Collectors.toSet());
-
-            if (supportedTypes.size() != request.getCredentialDescriptions().size()) {
-                throw new IllegalArgumentException(
-                        "CredentialProvider does not support one or more"
-                                + "of the registered types. Check your XML entry.");
-            }
-
             CredentialDescriptionRegistry session =
                     CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());
 
@@ -808,20 +764,6 @@ public final class CredentialManagerService
 
             enforceCallingPackage(callingPackage, Binder.getCallingUid());
 
-            List<CredentialProviderInfo> services =
-                    getServicesForCredentialDescription(UserHandle.getCallingUserId());
-
-            List<String> providers =
-                    services.stream()
-                            .map(
-                                    credentialProviderInfo ->
-                                            credentialProviderInfo.getServiceInfo().packageName)
-                            .toList();
-
-            if (!providers.contains(callingPackage)) {
-                throw new NonCredentialProviderCallerException(callingPackage);
-            }
-
             CredentialDescriptionRegistry session =
                     CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());
 
diff --git a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
index b7a4cd581a1a061d2f19bdfec7079f9b5bc24a09..ab29acc72a53693b873cafdc256adfebaaf41990 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
@@ -72,7 +72,8 @@ public final class  ProviderClearSession extends ProviderSession<ClearCredential
             ProviderInternalCallback callbacks,
             int userId, RemoteCredentialService remoteCredentialService,
             ClearCredentialStateRequest providerRequest) {
-        super(context, info, providerRequest, callbacks, userId, remoteCredentialService);
+        super(context, providerRequest, callbacks, info.getComponentName(),
+                userId, remoteCredentialService);
         setStatus(Status.PENDING);
     }
 
@@ -95,7 +96,7 @@ public final class  ProviderClearSession extends ProviderSession<ClearCredential
     /** Called when provider service dies. */
     @Override // Callback from the remote provider
     public void onProviderServiceDied(RemoteCredentialService service) {
-        if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
+        if (service.getComponentName().equals(mComponentName)) {
             updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
         } else {
             Slog.i(TAG, "Component names different in onProviderServiceDied - "
diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
index 640cc3331b1a0729e3fb4d4f20a0a308a0e68f17..8c9c6cfe24da0cb8fb837a85e7b4a7f9dd1896f2 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
@@ -133,7 +133,7 @@ public final class ProviderCreateSession extends ProviderSession<
             @NonNull BeginCreateCredentialRequest beginCreateRequest,
             @NonNull CreateCredentialRequest completeCreateRequest,
             String hybridService) {
-        super(context, info, beginCreateRequest, callbacks, userId,
+        super(context, beginCreateRequest, callbacks, info.getComponentName(), userId,
                 remoteCredentialService);
         mCompleteRequest = completeCreateRequest;
         setStatus(Status.PENDING);
@@ -161,7 +161,7 @@ public final class ProviderCreateSession extends ProviderSession<
     /** Called when provider service dies. */
     @Override
     public void onProviderServiceDied(RemoteCredentialService service) {
-        if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
+        if (service.getComponentName().equals(mComponentName)) {
             updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
         } else {
             Slog.i(TAG, "Component names different in onProviderServiceDied - "
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
index 07e2f877bfc04a9a7e43f88e5814ac827556e7f4..851ccb33aa43e78de85f91083724a8b09329626a 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
@@ -169,7 +169,8 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
             CallingAppInfo callingAppInfo,
             Map<String, CredentialOption> beginGetOptionToCredentialOptionMap,
             String hybridService) {
-        super(context, info, beginGetRequest, callbacks, userId, remoteCredentialService);
+        super(context, beginGetRequest, callbacks, info.getComponentName() ,
+                userId, remoteCredentialService);
         mCompleteRequest = completeGetRequest;
         mCallingAppInfo = callingAppInfo;
         setStatus(Status.PENDING);
@@ -196,7 +197,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
     /** Called when provider service dies. */
     @Override // Callback from the remote provider
     public void onProviderServiceDied(RemoteCredentialService service) {
-        if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
+        if (service.getComponentName().equals(mComponentName)) {
             updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
         } else {
             Slog.i(TAG, "Component names different in onProviderServiceDied - "
diff --git a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java
index 457806de7c9fe829a72c7e827b68d2513d867c57..a5196c5197401546c2f5c05b6ab10a16bb1d68cf 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java
@@ -19,10 +19,10 @@ package com.android.server.credentials;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.credentials.CredentialOption;
-import android.credentials.CredentialProviderInfo;
 import android.credentials.GetCredentialException;
 import android.credentials.GetCredentialResponse;
 import android.credentials.ui.Entry;
@@ -64,7 +64,6 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
             @NonNull Context context,
             @UserIdInt int userId,
             @NonNull GetRequestSession getRequestSession,
-            @NonNull CredentialProviderInfo credentialProviderInfo,
             @NonNull CallingAppInfo callingAppInfo,
             @NonNull String credentialProviderPackageName,
             @NonNull CredentialOption requestOption) {
@@ -72,7 +71,6 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
                 context,
                 userId,
                 getRequestSession,
-                credentialProviderInfo,
                 callingAppInfo,
                 credentialProviderPackageName,
                 requestOption);
@@ -94,11 +92,12 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
     protected ProviderRegistryGetSession(@NonNull Context context,
             @NonNull int userId,
             @NonNull GetRequestSession session,
-            @NonNull CredentialProviderInfo credentialProviderInfo,
             @NonNull CallingAppInfo callingAppInfo,
             @NonNull String servicePackageName,
             @NonNull CredentialOption requestOption) {
-        super(context, credentialProviderInfo, requestOption, session, userId, null);
+        super(context, requestOption, session,
+                new ComponentName(servicePackageName, servicePackageName) ,
+                userId, null);
         mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId);
         mCallingAppInfo = callingAppInfo;
         mCredentialProviderPackageName = servicePackageName;
diff --git a/services/credentials/java/com/android/server/credentials/ProviderSession.java b/services/credentials/java/com/android/server/credentials/ProviderSession.java
index 3a72dbc440073fa817a427010e335eaa139e422e..03e2a3264a9e2ac3620bf4bdb36ff78d536272bd 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderSession.java
@@ -114,17 +114,18 @@ public abstract class ProviderSession<T, R>
                 @Nullable String message);
     }
 
-    protected ProviderSession(@NonNull Context context, @Nullable CredentialProviderInfo info,
+    protected ProviderSession(@NonNull Context context,
             @NonNull T providerRequest,
             @Nullable ProviderInternalCallback callbacks,
+            @NonNull ComponentName componentName,
             @NonNull int userId,
             @Nullable RemoteCredentialService remoteCredentialService) {
         mContext = context;
-        mProviderInfo = info;
+        mProviderInfo = null;
         mProviderRequest = providerRequest;
         mCallbacks = callbacks;
         mUserId = userId;
-        mComponentName = info.getServiceInfo().getComponentName();
+        mComponentName = componentName;
         mRemoteCredentialService = remoteCredentialService;
         mCandidateProviderMetric = new CandidatePhaseMetric();
         mProviderSessionUid = MetricUtilities.getPackageUid(mContext, mComponentName);
diff --git a/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java b/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java
index 3d52ac558605af9118249563736abcf292114a56..4c8e70ae5109d4442dfb3e2d6ebcc899528765d4 100644
--- a/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java
+++ b/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java
@@ -36,7 +36,6 @@ import android.content.pm.SigningDetails;
 import android.content.pm.SigningInfo;
 import android.credentials.Credential;
 import android.credentials.CredentialOption;
-import android.credentials.CredentialProviderInfo;
 import android.credentials.GetCredentialException;
 import android.credentials.GetCredentialResponse;
 import android.credentials.ui.GetCredentialProviderData;
@@ -45,7 +44,6 @@ import android.net.Uri;
 import android.os.Bundle;
 import android.service.credentials.CallingAppInfo;
 import android.service.credentials.CredentialEntry;
-import android.service.credentials.CredentialProviderInfoFactory;
 import android.service.credentials.CredentialProviderService;
 import android.service.credentials.GetCredentialRequest;
 
@@ -61,7 +59,6 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
 import java.security.cert.CertificateException;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -89,7 +86,6 @@ public class ProviderRegistryGetSessionTest {
     @Mock private GetRequestSession mGetRequestSession;
     private CredentialOption mGetCredentialOption;
     @Mock private ServiceInfo mServiceInfo;
-    private CredentialProviderInfo mCredentialProviderInfo;
     private CallingAppInfo mCallingAppInfo;
     @Mock private CredentialDescriptionRegistry mCredentialDescriptionRegistry;
     private Bundle mRetrievalData;
@@ -111,12 +107,6 @@ public class ProviderRegistryGetSessionTest {
         mGetCredentialOption = new CredentialOption(CREDENTIAL_TYPE, mRetrievalData,
                 new Bundle(), false);
         when(mServiceInfo.getComponentName()).thenReturn(CREDENTIAL_PROVIDER_COMPONENT);
-        mCredentialProviderInfo = CredentialProviderInfoFactory
-                .createForTests(mServiceInfo,
-                        /* overrideLabel= */ "test",
-                        /* isSystemProvider= */ false,
-                        /* isEnabled= */ true,
-                        /* capabilities= */ Collections.EMPTY_LIST);
         CredentialDescriptionRegistry.setSession(USER_ID_1, mCredentialDescriptionRegistry);
         mResponse = new HashSet<>();
         mSlice = createSlice();
@@ -130,7 +120,7 @@ public class ProviderRegistryGetSessionTest {
         when(mCredentialDescriptionRegistry.getFilteredResultForProvider(anyString(), anyString()))
                 .thenReturn(mResponse);
         mProviderRegistryGetSession = ProviderRegistryGetSession
-                .createNewSession(context, USER_ID_1, mGetRequestSession, mCredentialProviderInfo,
+                .createNewSession(context, USER_ID_1, mGetRequestSession,
                         mCallingAppInfo,
                         CALLING_PACKAGE_NAME,
                         mGetCredentialOption);