Merge "Make UiccAccessRule certificate utils accessible." into rvc-dev am: 64d3ed6006
Change-Id: I0f79e33e0cadb87f4f95b32efbd49ba3060e377b
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user