Merge "Make UiccAccessRule certificate utils accessible." into rvc-dev am: 64d3ed6006

Change-Id: I0f79e33e0cadb87f4f95b32efbd49ba3060e377b
This commit is contained in:
Cody Kesting
2020-03-31 18:02:57 +00:00
committed by Automerger Merge Worker

View File

@@ -36,6 +36,8 @@ import java.io.IOException;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
@@ -177,17 +179,8 @@ public final class UiccAccessRule implements Parcelable {
* {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}. * {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}.
*/ */
public int getCarrierPrivilegeStatus(PackageInfo packageInfo) { public int getCarrierPrivilegeStatus(PackageInfo packageInfo) {
Signature[] signatures = packageInfo.signatures; List<Signature> signatures = getSignatures(packageInfo);
SigningInfo sInfo = packageInfo.signingInfo; if (signatures.isEmpty()) {
if (sInfo != null) {
signatures = sInfo.getSigningCertificateHistory();
if (sInfo.hasMultipleSigners()) {
signatures = sInfo.getApkContentsSigners();
}
}
if (signatures == null || signatures.length == 0) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Must use GET_SIGNING_CERTIFICATES when looking up package info"); "Must use GET_SIGNING_CERTIFICATES when looking up package info");
} }
@@ -263,9 +256,29 @@ public final class UiccAccessRule implements Parcelable {
} }
/** /**
* Converts a Signature into a Certificate hash usable for comparison. * Gets all of the Signatures from the given PackageInfo.
* @hide
*/ */
private static byte[] getCertHash(Signature signature, String algo) { @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
*/
public static byte[] getCertHash(Signature signature, String algo) {
try { try {
MessageDigest md = MessageDigest.getInstance(algo); MessageDigest md = MessageDigest.getInstance(algo);
return md.digest(signature.toByteArray()); return md.digest(signature.toByteArray());