Merge "Key rotation support when updating an app on IncFS." into sc-dev am: befe7710e1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15264144

Change-Id: I4177e5e05160b95f7e9ff1d917028fd5b3d98393
This commit is contained in:
TreeHugger Robot
2021-07-14 00:22:31 +00:00
committed by Automerger Merge Worker

View File

@@ -198,6 +198,7 @@ public class ApkSignatureVerifier {
ApkSignatureSchemeV4Verifier.extractCertificates(apkPath);
Certificate[][] signerCerts = new Certificate[][]{vSigner.certs};
Signature[] signerSigs = convertToSignatures(signerCerts);
Signature[] pastSignerSigs = null;
if (verifyFull) {
Map<Integer, byte[]> nonstreamingDigests;
@@ -210,6 +211,15 @@ public class ApkSignatureVerifier {
ApkSignatureSchemeV3Verifier.unsafeGetCertsWithoutVerification(apkPath);
nonstreamingDigests = v3Signer.contentDigests;
nonstreamingCerts = new Certificate[][]{v3Signer.certs};
if (v3Signer.por != null) {
// populate proof-of-rotation information
pastSignerSigs = new Signature[v3Signer.por.certs.size()];
for (int i = 0; i < pastSignerSigs.length; i++) {
pastSignerSigs[i] = new Signature(
v3Signer.por.certs.get(i).getEncoded());
pastSignerSigs[i].setFlags(v3Signer.por.flagsList.get(i));
}
}
} catch (SignatureNotFoundException e) {
try {
ApkSignatureSchemeV2Verifier.VerifiedSigner v2Signer =
@@ -250,7 +260,8 @@ public class ApkSignatureVerifier {
}
return new SigningDetailsWithDigests(new PackageParser.SigningDetails(signerSigs,
SignatureSchemeVersion.SIGNING_BLOCK_V4), vSigner.contentDigests);
SignatureSchemeVersion.SIGNING_BLOCK_V4, pastSignerSigs),
vSigner.contentDigests);
} catch (SignatureNotFoundException e) {
throw e;
} catch (Exception e) {