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

Commit 7badb011 authored by Cody Kesting's avatar Cody Kesting Committed by Gerrit Code Review
Browse files

Merge "Make UiccAccessRule certificate utils accessible."

parents 033bccd3 5e3cfee4
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());