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

Commit 96b0b5d4 authored by Cody Kesting's avatar Cody Kesting Committed by Automerger Merge Worker
Browse files

Merge "Make UiccAccessRule certificate utils accessible." am: 7badb011 am: 64a717ff

Change-Id: Ia1adf0d590f75060519e7dee6e0280126b437c64
parents 79be36b6 64a717ff
Loading
Loading
Loading
Loading
+25 −12
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
@@ -177,17 +179,8 @@ public final class UiccAccessRule implements Parcelable {
     *     {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}.
     */
    public int getCarrierPrivilegeStatus(PackageInfo packageInfo) {
        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) {
        List<Signature> signatures = getSignatures(packageInfo);
        if (signatures.isEmpty()) {
            throw new IllegalArgumentException(
                    "Must use GET_SIGNING_CERTIFICATES when looking up package info");
        }
@@ -262,10 +255,30 @@ public final class UiccAccessRule implements Parcelable {
        return 0;
    }

    /**
     * Gets all of the Signatures from the given PackageInfo.
     * @hide
     */
    @NonNull
    public static List<Signature> getSignatures(PackageInfo packageInfo) {
        Signature[] signatures = packageInfo.signatures;
        SigningInfo signingInfo = packageInfo.signingInfo;

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

        return (signatures == null) ? Collections.EMPTY_LIST : Arrays.asList(signatures);
    }

    /**
     * Converts a Signature into a Certificate hash usable for comparison.
     * @hide
     */
    private static byte[] getCertHash(Signature signature, String algo) {
    public static byte[] getCertHash(Signature signature, String algo) {
        try {
            MessageDigest md = MessageDigest.getInstance(algo);
            return md.digest(signature.toByteArray());