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

Commit 8c0b496c authored by Cheonho Park's avatar Cheonho Park Committed by Android (Google) Code Review
Browse files

Merge "Allow signing key rotation" into qt-qpr1-dev

parents 64c2d37d 51586d5e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -578,7 +578,8 @@ public class SubscriptionInfo implements Parcelable {
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packageInfo;
        try {
            packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
            packageInfo = packageManager.getPackageInfo(packageName,
                PackageManager.GET_SIGNING_CERTIFICATES);
        } catch (PackageManager.NameNotFoundException e) {
            Log.d("SubscriptionInfo", "canManageSubscription: Unknown package: " + packageName, e);
            return false;
+2 −1
Original line number Diff line number Diff line
@@ -2612,7 +2612,8 @@ public class SubscriptionManager {
        PackageManager packageManager = mContext.getPackageManager();
        PackageInfo packageInfo;
        try {
            packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
            packageInfo = packageManager.getPackageInfo(packageName,
                PackageManager.GET_SIGNING_CERTIFICATES);
        } catch (PackageManager.NameNotFoundException e) {
            logd("Unknown package: " + packageName);
            return false;
+16 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.content.pm.PackageInfo;
import android.content.pm.Signature;
import android.content.pm.SigningInfo;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
@@ -168,17 +169,28 @@ public final class UiccAccessRule implements Parcelable {
     *
     * @param packageInfo package info fetched from
     *     {@link android.content.pm.PackageManager#getPackageInfo}.
     *     {@link android.content.pm.PackageManager#GET_SIGNATURES} must have been passed in.
     *     {@link android.content.pm.PackageManager#GET_SIGNING_CERTIFICATES} must have been
     *         passed in.
     * @return either {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_HAS_ACCESS} or
     *     {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}.
     */
    public int getCarrierPrivilegeStatus(PackageInfo packageInfo) {
        if (packageInfo.signatures == null || packageInfo.signatures.length == 0) {
        Signature[] signatures = packageInfo.signatures;
        SigningInfo sInfo = packageInfo.signingInfo;

        if (sInfo != null) {
            signatures = sInfo.getSigningCertificateHistory();
            if (sInfo.hasMultipleSigners()) {
                signatures = sInfo.getApkContentsSigners();
            }
        }

        if (signatures == null || signatures.length == 0) {
            throw new IllegalArgumentException(
                    "Must use GET_SIGNATURES when looking up package info");
                    "Must use GET_SIGNING_CERTIFICATES when looking up package info");
        }

        for (Signature sig : packageInfo.signatures) {
        for (Signature sig : signatures) {
            int accessStatus = getCarrierPrivilegeStatus(sig, packageInfo.packageName);
            if (accessStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
                return accessStatus;