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

Commit d53be76a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Populate signatures to pass to credential provider"

parents b3bdf658 532b53f1
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -39834,10 +39834,10 @@ package android.service.credentials {
  }
  public final class CallingAppInfo implements android.os.Parcelable {
    ctor public CallingAppInfo(@NonNull String, @NonNull java.util.Set<android.content.pm.Signature>);
    ctor public CallingAppInfo(@NonNull String, @NonNull android.content.pm.SigningInfo);
    method public int describeContents();
    method @NonNull public String getPackageName();
    method @NonNull public java.util.Set<android.content.pm.Signature> getSignatures();
    method @NonNull public android.content.pm.SigningInfo getSigningInfo();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.CallingAppInfo> CREATOR;
  }
+24 −24
Original line number Diff line number Diff line
@@ -17,15 +17,9 @@
package android.service.credentials;

import android.annotation.NonNull;
import android.content.pm.Signature;
import android.content.pm.SigningInfo;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArraySet;

import com.android.internal.util.Preconditions;

import java.util.Objects;
import java.util.Set;

/**
 * Information pertaining to the calling application, including the package name and a list of
@@ -33,26 +27,23 @@ import java.util.Set;
 */
public final class CallingAppInfo implements Parcelable {
    @NonNull private final String mPackageName;
    @NonNull private final Set<Signature> mSignatures;
    @NonNull private final SigningInfo mSigningInfo;

    /**
     * Constructs a new instance.
     *
     * @throws IllegalArgumentException If {@code packageName} is null or empty.
     * @throws NullPointerException If {@code signatures} is null.
     * @throws NullPointerException If {@code signingInfo} is null.
     */
    public CallingAppInfo(@NonNull String packageName,
            @NonNull Set<Signature> signatures) {
        mPackageName = Preconditions.checkStringNotEmpty(packageName,
                "packageName must not be null or empty");
        mSignatures = Objects.requireNonNull(signatures);
            @NonNull SigningInfo signingInfo) {
        mPackageName = packageName;
        mSigningInfo = signingInfo;
    }

    private CallingAppInfo(@NonNull Parcel in) {
        final ClassLoader boot = Object.class.getClassLoader();
        mPackageName = in.readString8();
        ArraySet<Signature> signatures = (ArraySet<Signature>) in.readArraySet(boot);
        mSignatures = signatures == null ? new ArraySet<>() : signatures;
        mSigningInfo = in.readTypedObject(SigningInfo.CREATOR);
    }

    public static final @NonNull Creator<CallingAppInfo> CREATOR = new Creator<CallingAppInfo>() {
@@ -72,9 +63,12 @@ public final class CallingAppInfo implements Parcelable {
        return mPackageName;
    }

    /** Returns the Set of signatures belonging to the app */
    @NonNull public Set<Signature> getSignatures() {
        return mSignatures;
    /**
     * Returns the SigningInfo object that contains an array of
     * {@link android.content.pm.Signature} belonging to the app.
     */
    @NonNull public SigningInfo getSigningInfo() {
        return mSigningInfo;
    }

    @Override
@@ -85,14 +79,20 @@ public final class CallingAppInfo implements Parcelable {
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeString8(mPackageName);
        dest.writeArraySet(new ArraySet<>(mSignatures));
        dest.writeTypedObject(mSigningInfo, flags);
    }

    @Override
    public String toString() {
        return "CallingAppInfo {"
                + "packageName= " + mPackageName
                + ", No. of signatures: " + mSignatures.size()
                + " }";
        StringBuilder builder =  new StringBuilder("CallingAppInfo {"
                + "packageName= " + mPackageName);
        if (mSigningInfo != null) {
            builder.append(", mSigningInfo : No. of signatures: " + mSigningInfo
                    .getApkContentsSigners().length);
        } else {
            builder.append(", mSigningInfo: null");
        }
        builder.append(" }");
        return builder.toString();
    }
}
+5 −6
Original line number Diff line number Diff line
@@ -16,14 +16,14 @@

package com.android.credentialmanager

import android.credentials.Credential.TYPE_PASSWORD_CREDENTIAL
import android.app.PendingIntent
import android.app.slice.Slice
import android.app.slice.SliceSpec
import android.content.Context
import android.content.Intent
import android.content.pm.Signature
import android.content.pm.SigningInfo
import android.credentials.CreateCredentialRequest
import android.credentials.Credential.TYPE_PASSWORD_CREDENTIAL
import android.credentials.GetCredentialOption
import android.credentials.GetCredentialRequest
import android.credentials.ui.Constants
@@ -41,10 +41,9 @@ import android.os.Binder
import android.os.Bundle
import android.os.ResultReceiver
import android.service.credentials.CredentialProviderService
import android.util.ArraySet
import com.android.credentialmanager.createflow.RequestDisplayInfo
import com.android.credentialmanager.createflow.EnabledProviderInfo
import com.android.credentialmanager.createflow.DisabledProviderInfo
import com.android.credentialmanager.createflow.EnabledProviderInfo
import com.android.credentialmanager.createflow.RequestDisplayInfo
import com.android.credentialmanager.getflow.GetCredentialUiState
import com.android.credentialmanager.jetpack.developer.CreatePasswordRequest.Companion.toBundle
import com.android.credentialmanager.jetpack.developer.CreatePublicKeyCredentialRequest
@@ -351,7 +350,7 @@ class CredentialManagerRepo(
                or PendingIntent.FLAG_ONE_SHOT))
        val createPasswordRequest = android.service.credentials.CreateCredentialRequest(
                android.service.credentials.CallingAppInfo(
                        context.applicationInfo.packageName, ArraySet<Signature>()),
                        context.applicationInfo.packageName, SigningInfo()),
                TYPE_PASSWORD_CREDENTIAL,
                toBundle("beckett-bakert@gmail.com", "password123")
        )
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.credentials.IClearCredentialStateCallback;
import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo;
import android.os.RemoteException;
import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;

@@ -40,8 +41,8 @@ public final class ClearRequestSession extends RequestSession<ClearCredentialSta

    public ClearRequestSession(Context context, int userId,
            IClearCredentialStateCallback callback, ClearCredentialStateRequest request,
            String callingPackage) {
        super(context, userId, request, callback, RequestInfo.TYPE_UNDEFINED, callingPackage);
            CallingAppInfo callingAppInfo) {
        super(context, userId, request, callback, RequestInfo.TYPE_UNDEFINED, callingAppInfo);
    }

    /**
+5 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.credentials.ICreateCredentialCallback;
import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo;
import android.os.RemoteException;
import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;

@@ -45,8 +46,8 @@ public final class CreateRequestSession extends RequestSession<CreateCredentialR
    CreateRequestSession(@NonNull Context context, int userId,
            CreateCredentialRequest request,
            ICreateCredentialCallback callback,
            String callingPackage) {
        super(context, userId, request, callback, RequestInfo.TYPE_CREATE, callingPackage);
            CallingAppInfo callingAppInfo) {
        super(context, userId, request, callback, RequestInfo.TYPE_CREATE, callingAppInfo);
    }

    /**
@@ -75,7 +76,8 @@ public final class CreateRequestSession extends RequestSession<CreateCredentialR
        try {
            mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent(
                    RequestInfo.newCreateRequestInfo(
                            mRequestId, mClientRequest, mClientCallingPackage),
                            mRequestId, mClientRequest,
                            mClientAppInfo.getPackageName()),
                    providerDataList));
        } catch (RemoteException e) {
            Log.i(TAG, "Issue with invoking pending intent: " + e.getMessage());
Loading