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

This commit is contained in:
Cheonho Park
2019-09-18 05:04:12 +00:00
committed by Android (Google) Code Review
3 changed files with 21 additions and 7 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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) {
throw new IllegalArgumentException(
"Must use GET_SIGNATURES when looking up package info");
Signature[] signatures = packageInfo.signatures;
SigningInfo sInfo = packageInfo.signingInfo;
if (sInfo != null) {
signatures = sInfo.getSigningCertificateHistory();
if (sInfo.hasMultipleSigners()) {
signatures = sInfo.getApkContentsSigners();
}
}
for (Signature sig : packageInfo.signatures) {
if (signatures == null || signatures.length == 0) {
throw new IllegalArgumentException(
"Must use GET_SIGNING_CERTIFICATES when looking up package info");
}
for (Signature sig : signatures) {
int accessStatus = getCarrierPrivilegeStatus(sig, packageInfo.packageName);
if (accessStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
return accessStatus;