Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12026451 authored by Omer Ozer's avatar Omer Ozer
Browse files

Remove capability checks for cred desc apis.

With the addition of a permission. Such checks
will no longer be viable or necessary.

Bug: 267805891
Test: manual
Change-Id: I9ddd2fbe8bdabb5900881b211ed1e169dbadb214
parent 3fd4802d
Loading
Loading
Loading
Loading
+0 −58
Original line number Diff line number Diff line
@@ -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());

+3 −2
Original line number Diff line number Diff line
@@ -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 - "
+2 −2
Original line number Diff line number Diff line
@@ -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 - "
+3 −2
Original line number Diff line number Diff line
@@ -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 - "
+4 −5
Original line number Diff line number Diff line
@@ -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;
Loading