Merge "Allow signing key rotation" into qt-qpr1-dev
This commit is contained in:
@@ -578,7 +578,8 @@ public class SubscriptionInfo implements Parcelable {
|
|||||||
PackageManager packageManager = context.getPackageManager();
|
PackageManager packageManager = context.getPackageManager();
|
||||||
PackageInfo packageInfo;
|
PackageInfo packageInfo;
|
||||||
try {
|
try {
|
||||||
packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
|
packageInfo = packageManager.getPackageInfo(packageName,
|
||||||
|
PackageManager.GET_SIGNING_CERTIFICATES);
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
Log.d("SubscriptionInfo", "canManageSubscription: Unknown package: " + packageName, e);
|
Log.d("SubscriptionInfo", "canManageSubscription: Unknown package: " + packageName, e);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -2612,7 +2612,8 @@ public class SubscriptionManager {
|
|||||||
PackageManager packageManager = mContext.getPackageManager();
|
PackageManager packageManager = mContext.getPackageManager();
|
||||||
PackageInfo packageInfo;
|
PackageInfo packageInfo;
|
||||||
try {
|
try {
|
||||||
packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
|
packageInfo = packageManager.getPackageInfo(packageName,
|
||||||
|
PackageManager.GET_SIGNING_CERTIFICATES);
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
logd("Unknown package: " + packageName);
|
logd("Unknown package: " + packageName);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import android.annotation.Nullable;
|
|||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.Signature;
|
import android.content.pm.Signature;
|
||||||
|
import android.content.pm.SigningInfo;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -168,17 +169,28 @@ public final class UiccAccessRule implements Parcelable {
|
|||||||
*
|
*
|
||||||
* @param packageInfo package info fetched from
|
* @param packageInfo package info fetched from
|
||||||
* {@link android.content.pm.PackageManager#getPackageInfo}.
|
* {@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
|
* @return either {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_HAS_ACCESS} or
|
||||||
* {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}.
|
* {@link TelephonyManager#CARRIER_PRIVILEGE_STATUS_NO_ACCESS}.
|
||||||
*/
|
*/
|
||||||
public int getCarrierPrivilegeStatus(PackageInfo packageInfo) {
|
public int getCarrierPrivilegeStatus(PackageInfo packageInfo) {
|
||||||
if (packageInfo.signatures == null || packageInfo.signatures.length == 0) {
|
Signature[] signatures = packageInfo.signatures;
|
||||||
throw new IllegalArgumentException(
|
SigningInfo sInfo = packageInfo.signingInfo;
|
||||||
"Must use GET_SIGNATURES when looking up package info");
|
|
||||||
|
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);
|
int accessStatus = getCarrierPrivilegeStatus(sig, packageInfo.packageName);
|
||||||
if (accessStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
|
if (accessStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
|
||||||
return accessStatus;
|
return accessStatus;
|
||||||
|
|||||||
Reference in New Issue
Block a user