[automerge] Revert "[DO NOT MERGE]Revert "Relax minimum signature scheme ver..." 2p: 01c3d11b83
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17110028 Bug: 223079119 Change-Id: I57d4e8a542f4bc509c00246a0ec81e9de5ea3fb8
This commit is contained in:
@@ -1401,9 +1401,11 @@ public class PackageParser {
|
|||||||
}
|
}
|
||||||
SigningDetails verified;
|
SigningDetails verified;
|
||||||
if (skipVerify) {
|
if (skipVerify) {
|
||||||
// systemDir APKs are already trusted, save time by not verifying
|
// systemDir APKs are already trusted, save time by not verifying; since the signature
|
||||||
|
// is not verified and some system apps can have their V2+ signatures stripped allow
|
||||||
|
// pulling the certs from the jar signature.
|
||||||
verified = ApkSignatureVerifier.unsafeGetCertsWithoutVerification(
|
verified = ApkSignatureVerifier.unsafeGetCertsWithoutVerification(
|
||||||
apkPath, minSignatureScheme);
|
apkPath, SigningDetails.SignatureSchemeVersion.JAR);
|
||||||
} else {
|
} else {
|
||||||
verified = ApkSignatureVerifier.verify(apkPath, minSignatureScheme);
|
verified = ApkSignatureVerifier.verify(apkPath, minSignatureScheme);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3038,9 +3038,11 @@ public class ParsingPackageUtils {
|
|||||||
SigningDetails verified;
|
SigningDetails verified;
|
||||||
try {
|
try {
|
||||||
if (skipVerify) {
|
if (skipVerify) {
|
||||||
// systemDir APKs are already trusted, save time by not verifying
|
// systemDir APKs are already trusted, save time by not verifying; since the
|
||||||
|
// signature is not verified and some system apps can have their V2+ signatures
|
||||||
|
// stripped allow pulling the certs from the jar signature.
|
||||||
verified = ApkSignatureVerifier.unsafeGetCertsWithoutVerification(
|
verified = ApkSignatureVerifier.unsafeGetCertsWithoutVerification(
|
||||||
baseCodePath, minSignatureScheme);
|
baseCodePath, SigningDetails.SignatureSchemeVersion.JAR);
|
||||||
} else {
|
} else {
|
||||||
verified = ApkSignatureVerifier.verify(baseCodePath, minSignatureScheme);
|
verified = ApkSignatureVerifier.verify(baseCodePath, minSignatureScheme);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15176,15 +15176,17 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the package is signed with at least the minimum signature scheme version
|
// If the package is not on a system partition ensure it is signed with at least the
|
||||||
// required for its target SDK.
|
// minimum signature scheme version required for its target SDK.
|
||||||
int minSignatureSchemeVersion =
|
if ((parseFlags & ParsingPackageUtils.PARSE_IS_SYSTEM_DIR) == 0) {
|
||||||
ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
|
int minSignatureSchemeVersion =
|
||||||
pkg.getTargetSdkVersion());
|
ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
|
||||||
if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) {
|
pkg.getTargetSdkVersion());
|
||||||
throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
|
if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) {
|
||||||
"No signature found in package of version " + minSignatureSchemeVersion
|
throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
|
||||||
+ " or newer for package " + pkg.getPackageName());
|
"No signature found in package of version " + minSignatureSchemeVersion
|
||||||
|
+ " or newer for package " + pkg.getPackageName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user