Merge "[DO NOT MERGE]Revert "Relax minimum signature scheme version for apps on system partition"" into sc-v2-dev

This commit is contained in:
Michael Groover
2022-03-05 00:02:48 +00:00
committed by Android (Google) Code Review
3 changed files with 13 additions and 19 deletions

View File

@@ -1401,11 +1401,9 @@ public class PackageParser {
} }
SigningDetails verified; SigningDetails verified;
if (skipVerify) { if (skipVerify) {
// systemDir APKs are already trusted, save time by not verifying; since the signature // systemDir APKs are already trusted, save time by not verifying
// 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, SigningDetails.SignatureSchemeVersion.JAR); apkPath, minSignatureScheme);
} else { } else {
verified = ApkSignatureVerifier.verify(apkPath, minSignatureScheme); verified = ApkSignatureVerifier.verify(apkPath, minSignatureScheme);
} }

View File

@@ -3038,11 +3038,9 @@ public class ParsingPackageUtils {
SigningDetails verified; SigningDetails verified;
try { try {
if (skipVerify) { if (skipVerify) {
// systemDir APKs are already trusted, save time by not verifying; since the // systemDir APKs are already trusted, save time by not verifying
// 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, SigningDetails.SignatureSchemeVersion.JAR); baseCodePath, minSignatureScheme);
} else { } else {
verified = ApkSignatureVerifier.verify(baseCodePath, minSignatureScheme); verified = ApkSignatureVerifier.verify(baseCodePath, minSignatureScheme);
} }

View File

@@ -15193,17 +15193,15 @@ public class PackageManagerService extends IPackageManager.Stub
} }
} }
// If the package is not on a system partition ensure it is signed with at least the // Ensure the package is signed with at least the minimum signature scheme version
// minimum signature scheme version required for its target SDK. // required for its target SDK.
if ((parseFlags & ParsingPackageUtils.PARSE_IS_SYSTEM_DIR) == 0) { int minSignatureSchemeVersion =
int minSignatureSchemeVersion = ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk( pkg.getTargetSdkVersion());
pkg.getTargetSdkVersion()); if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) {
if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) { throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES, "No signature found in package of version " + minSignatureSchemeVersion
"No signature found in package of version " + minSignatureSchemeVersion + " or newer for package " + pkg.getPackageName());
+ " or newer for package " + pkg.getPackageName());
}
} }
} }
} }