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

Commit 532b53f1 authored by Reema Bajwa's avatar Reema Bajwa
Browse files

Populate signatures to pass to credential provider

Test: Built & deployed locally
Bug: 264598550

Change-Id: I57ca9647dd315fdc7bc4ba14660f766a18fb66e7
parent 26af2c72
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -39811,10 +39811,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