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

Commit 1b1c5442 authored by Omer Ozer's avatar Omer Ozer Committed by Android (Google) Code Review
Browse files

Merge "Remove capability checks for cred desc apis." into udc-dev

parents 05f4f569 12026451
Loading
Loading
Loading
Loading
+0 −58
Original line number Original line Diff line number Diff line
@@ -33,7 +33,6 @@ import android.content.pm.ServiceInfo;
import android.credentials.ClearCredentialStateRequest;
import android.credentials.ClearCredentialStateRequest;
import android.credentials.CreateCredentialException;
import android.credentials.CreateCredentialException;
import android.credentials.CreateCredentialRequest;
import android.credentials.CreateCredentialRequest;
import android.credentials.CredentialDescription;
import android.credentials.CredentialManager;
import android.credentials.CredentialManager;
import android.credentials.CredentialOption;
import android.credentials.CredentialOption;
import android.credentials.CredentialProviderInfo;
import android.credentials.CredentialProviderInfo;
@@ -296,11 +295,6 @@ public final class CredentialManagerService
                            mContext,
                            mContext,
                            UserHandle.getCallingUserId(),
                            UserHandle.getCallingUserId(),
                            session,
                            session,
                            CredentialProviderInfoFactory.getCredentialProviderFromPackageName(
                                    mContext, UserHandle.getCallingUserId() ,
                                            result.second.mPackageName,
                                            CredentialManager.PROVIDER_FILTER_ALL_PROVIDERS,
                                    new HashSet<>()),
                            session.mClientAppInfo,
                            session.mClientAppInfo,
                            result.second.mPackageName,
                            result.second.mPackageName,
                            result.first));
                            result.first));
@@ -752,44 +746,6 @@ public final class CredentialManagerService


            enforceCallingPackage(callingPackage, Binder.getCallingUid());
            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 session =
                    CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());
                    CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());


@@ -808,20 +764,6 @@ public final class CredentialManagerService


            enforceCallingPackage(callingPackage, Binder.getCallingUid());
            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 session =
                    CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());
                    CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());


+3 −2
Original line number Original line Diff line number Diff line
@@ -72,7 +72,8 @@ public final class ProviderClearSession extends ProviderSession<ClearCredential
            ProviderInternalCallback callbacks,
            ProviderInternalCallback callbacks,
            int userId, RemoteCredentialService remoteCredentialService,
            int userId, RemoteCredentialService remoteCredentialService,
            ClearCredentialStateRequest providerRequest) {
            ClearCredentialStateRequest providerRequest) {
        super(context, info, providerRequest, callbacks, userId, remoteCredentialService);
        super(context, providerRequest, callbacks, info.getComponentName(),
                userId, remoteCredentialService);
        setStatus(Status.PENDING);
        setStatus(Status.PENDING);
    }
    }


@@ -95,7 +96,7 @@ public final class ProviderClearSession extends ProviderSession<ClearCredential
    /** Called when provider service dies. */
    /** Called when provider service dies. */
    @Override // Callback from the remote provider
    @Override // Callback from the remote provider
    public void onProviderServiceDied(RemoteCredentialService service) {
    public void onProviderServiceDied(RemoteCredentialService service) {
        if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
        if (service.getComponentName().equals(mComponentName)) {
            updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
            updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
        } else {
        } else {
            Slog.i(TAG, "Component names different in onProviderServiceDied - "
            Slog.i(TAG, "Component names different in onProviderServiceDied - "
+2 −2
Original line number Original line Diff line number Diff line
@@ -133,7 +133,7 @@ public final class ProviderCreateSession extends ProviderSession<
            @NonNull BeginCreateCredentialRequest beginCreateRequest,
            @NonNull BeginCreateCredentialRequest beginCreateRequest,
            @NonNull CreateCredentialRequest completeCreateRequest,
            @NonNull CreateCredentialRequest completeCreateRequest,
            String hybridService) {
            String hybridService) {
        super(context, info, beginCreateRequest, callbacks, userId,
        super(context, beginCreateRequest, callbacks, info.getComponentName(), userId,
                remoteCredentialService);
                remoteCredentialService);
        mCompleteRequest = completeCreateRequest;
        mCompleteRequest = completeCreateRequest;
        setStatus(Status.PENDING);
        setStatus(Status.PENDING);
@@ -161,7 +161,7 @@ public final class ProviderCreateSession extends ProviderSession<
    /** Called when provider service dies. */
    /** Called when provider service dies. */
    @Override
    @Override
    public void onProviderServiceDied(RemoteCredentialService service) {
    public void onProviderServiceDied(RemoteCredentialService service) {
        if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
        if (service.getComponentName().equals(mComponentName)) {
            updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
            updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
        } else {
        } else {
            Slog.i(TAG, "Component names different in onProviderServiceDied - "
            Slog.i(TAG, "Component names different in onProviderServiceDied - "
+3 −2
Original line number Original line Diff line number Diff line
@@ -169,7 +169,8 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
            CallingAppInfo callingAppInfo,
            CallingAppInfo callingAppInfo,
            Map<String, CredentialOption> beginGetOptionToCredentialOptionMap,
            Map<String, CredentialOption> beginGetOptionToCredentialOptionMap,
            String hybridService) {
            String hybridService) {
        super(context, info, beginGetRequest, callbacks, userId, remoteCredentialService);
        super(context, beginGetRequest, callbacks, info.getComponentName() ,
                userId, remoteCredentialService);
        mCompleteRequest = completeGetRequest;
        mCompleteRequest = completeGetRequest;
        mCallingAppInfo = callingAppInfo;
        mCallingAppInfo = callingAppInfo;
        setStatus(Status.PENDING);
        setStatus(Status.PENDING);
@@ -196,7 +197,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
    /** Called when provider service dies. */
    /** Called when provider service dies. */
    @Override // Callback from the remote provider
    @Override // Callback from the remote provider
    public void onProviderServiceDied(RemoteCredentialService service) {
    public void onProviderServiceDied(RemoteCredentialService service) {
        if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
        if (service.getComponentName().equals(mComponentName)) {
            updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
            updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
        } else {
        } else {
            Slog.i(TAG, "Component names different in onProviderServiceDied - "
            Slog.i(TAG, "Component names different in onProviderServiceDied - "
+4 −5
Original line number Original line Diff line number Diff line
@@ -19,10 +19,10 @@ package com.android.server.credentials;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.annotation.UserIdInt;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.credentials.CredentialOption;
import android.credentials.CredentialOption;
import android.credentials.CredentialProviderInfo;
import android.credentials.GetCredentialException;
import android.credentials.GetCredentialException;
import android.credentials.GetCredentialResponse;
import android.credentials.GetCredentialResponse;
import android.credentials.ui.Entry;
import android.credentials.ui.Entry;
@@ -64,7 +64,6 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
            @NonNull Context context,
            @NonNull Context context,
            @UserIdInt int userId,
            @UserIdInt int userId,
            @NonNull GetRequestSession getRequestSession,
            @NonNull GetRequestSession getRequestSession,
            @NonNull CredentialProviderInfo credentialProviderInfo,
            @NonNull CallingAppInfo callingAppInfo,
            @NonNull CallingAppInfo callingAppInfo,
            @NonNull String credentialProviderPackageName,
            @NonNull String credentialProviderPackageName,
            @NonNull CredentialOption requestOption) {
            @NonNull CredentialOption requestOption) {
@@ -72,7 +71,6 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
                context,
                context,
                userId,
                userId,
                getRequestSession,
                getRequestSession,
                credentialProviderInfo,
                callingAppInfo,
                callingAppInfo,
                credentialProviderPackageName,
                credentialProviderPackageName,
                requestOption);
                requestOption);
@@ -94,11 +92,12 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
    protected ProviderRegistryGetSession(@NonNull Context context,
    protected ProviderRegistryGetSession(@NonNull Context context,
            @NonNull int userId,
            @NonNull int userId,
            @NonNull GetRequestSession session,
            @NonNull GetRequestSession session,
            @NonNull CredentialProviderInfo credentialProviderInfo,
            @NonNull CallingAppInfo callingAppInfo,
            @NonNull CallingAppInfo callingAppInfo,
            @NonNull String servicePackageName,
            @NonNull String servicePackageName,
            @NonNull CredentialOption requestOption) {
            @NonNull CredentialOption requestOption) {
        super(context, credentialProviderInfo, requestOption, session, userId, null);
        super(context, requestOption, session,
                new ComponentName(servicePackageName, servicePackageName) ,
                userId, null);
        mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId);
        mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId);
        mCallingAppInfo = callingAppInfo;
        mCallingAppInfo = callingAppInfo;
        mCredentialProviderPackageName = servicePackageName;
        mCredentialProviderPackageName = servicePackageName;
Loading