Merge changes from topic "key-rota-cp" am: a705b8063f
Change-Id: I4c6c6855303ca0fc11838de228f861d1e360e9ce
This commit is contained in:
@@ -114,18 +114,17 @@ public class StagingManager {
|
||||
* Validates the signature used to sign the container of the new apex package
|
||||
*
|
||||
* @param newApexPkg The new apex package that is being installed
|
||||
* @param installFlags flags related to the session
|
||||
* @throws PackageManagerException
|
||||
*/
|
||||
private void validateApexSignature(PackageInfo newApexPkg, int installFlags)
|
||||
private void validateApexSignature(PackageInfo newApexPkg)
|
||||
throws PackageManagerException {
|
||||
// Get signing details of the new package
|
||||
final String apexPath = newApexPkg.applicationInfo.sourceDir;
|
||||
final String packageName = newApexPkg.packageName;
|
||||
|
||||
final SigningDetails signingDetails;
|
||||
final SigningDetails newSigningDetails;
|
||||
try {
|
||||
signingDetails = ApkSignatureVerifier.verify(apexPath, SignatureSchemeVersion.JAR);
|
||||
newSigningDetails = ApkSignatureVerifier.verify(apexPath, SignatureSchemeVersion.JAR);
|
||||
} catch (PackageParserException e) {
|
||||
throw new PackageManagerException(SessionInfo.STAGED_SESSION_VERIFICATION_FAILED,
|
||||
"Failed to parse APEX package " + apexPath, e);
|
||||
@@ -150,16 +149,10 @@ public class StagingManager {
|
||||
}
|
||||
|
||||
// Verify signing details for upgrade
|
||||
if (signingDetails.checkCapability(existingSigningDetails,
|
||||
PackageParser.SigningDetails.CertCapabilities.INSTALLED_DATA)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify signing details for downgrade
|
||||
// Allow downgrading from B to A iff it is possible to upgrade from A to B
|
||||
if (existingApexPkg.getLongVersionCode() > newApexPkg.getLongVersionCode()
|
||||
&& existingSigningDetails.checkCapability(signingDetails,
|
||||
PackageParser.SigningDetails.CertCapabilities.INSTALLED_DATA)) {
|
||||
if (newSigningDetails.checkCapability(existingSigningDetails,
|
||||
SigningDetails.CertCapabilities.INSTALLED_DATA)
|
||||
|| existingSigningDetails.checkCapability(newSigningDetails,
|
||||
SigningDetails.CertCapabilities.ROLLBACK)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -825,8 +818,7 @@ public class StagingManager {
|
||||
final List<PackageInfo> apexPackages =
|
||||
submitSessionToApexService(session);
|
||||
for (PackageInfo apexPackage : apexPackages) {
|
||||
validateApexSignature(
|
||||
apexPackage, session.params.installFlags);
|
||||
validateApexSignature(apexPackage);
|
||||
}
|
||||
} catch (PackageManagerException e) {
|
||||
session.setStagedSessionFailed(e.error, e.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user