Merge "Move cert tracing to PackageParser" into nyc-dev
am: 4bb8030
* commit '4bb80305fbb1e9552392b139ba367317d8dffba2':
Move cert tracing to PackageParser
Change-Id: Ieaec4e0eaea93a093b3641a52fd1eaee6d4413d4
This commit is contained in:
@@ -1096,13 +1096,19 @@ public class PackageParser {
|
|||||||
pkg.mSignatures = null;
|
pkg.mSignatures = null;
|
||||||
pkg.mSigningKeys = null;
|
pkg.mSigningKeys = null;
|
||||||
|
|
||||||
collectCertificates(pkg, new File(pkg.baseCodePath), pkg.applicationInfo.flags, parseFlags);
|
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "collectCertificates");
|
||||||
|
try {
|
||||||
|
collectCertificates(
|
||||||
|
pkg, new File(pkg.baseCodePath), pkg.applicationInfo.flags, parseFlags);
|
||||||
|
|
||||||
if (!ArrayUtils.isEmpty(pkg.splitCodePaths)) {
|
if (!ArrayUtils.isEmpty(pkg.splitCodePaths)) {
|
||||||
for (int i = 0; i < pkg.splitCodePaths.length; i++) {
|
for (int i = 0; i < pkg.splitCodePaths.length; i++) {
|
||||||
collectCertificates(pkg, new File(pkg.splitCodePaths[i]), pkg.splitFlags[i],
|
collectCertificates(
|
||||||
parseFlags);
|
pkg, new File(pkg.splitCodePaths[i]), pkg.splitFlags[i], parseFlags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1118,6 +1124,7 @@ public class PackageParser {
|
|||||||
Certificate[][] allSignersCerts = null;
|
Certificate[][] allSignersCerts = null;
|
||||||
Signature[] signatures = null;
|
Signature[] signatures = null;
|
||||||
try {
|
try {
|
||||||
|
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "verifyV2");
|
||||||
allSignersCerts = ApkSignatureSchemeV2Verifier.verify(apkPath);
|
allSignersCerts = ApkSignatureSchemeV2Verifier.verify(apkPath);
|
||||||
signatures = convertToSignatures(allSignersCerts);
|
signatures = convertToSignatures(allSignersCerts);
|
||||||
// APK verified using APK Signature Scheme v2.
|
// APK verified using APK Signature Scheme v2.
|
||||||
@@ -1130,6 +1137,8 @@ public class PackageParser {
|
|||||||
"Failed to collect certificates from " + apkPath
|
"Failed to collect certificates from " + apkPath
|
||||||
+ " using APK Signature Scheme v2",
|
+ " using APK Signature Scheme v2",
|
||||||
e);
|
e);
|
||||||
|
} finally {
|
||||||
|
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verified) {
|
if (verified) {
|
||||||
@@ -1186,7 +1195,7 @@ public class PackageParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// APK's integrity needs to be verified using JAR signature scheme.
|
// APK's integrity needs to be verified using JAR signature scheme.
|
||||||
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "buildVerifyList");
|
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "verifyV1");
|
||||||
final List<ZipEntry> toVerify = new ArrayList<>();
|
final List<ZipEntry> toVerify = new ArrayList<>();
|
||||||
toVerify.add(manifestEntry);
|
toVerify.add(manifestEntry);
|
||||||
|
|
||||||
@@ -1208,7 +1217,6 @@ public class PackageParser {
|
|||||||
toVerify.add(entry);
|
toVerify.add(entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
|
|
||||||
|
|
||||||
if (!codeFound && requireCode) {
|
if (!codeFound && requireCode) {
|
||||||
throw new PackageParserException(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
|
throw new PackageParserException(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
|
||||||
@@ -1218,7 +1226,6 @@ public class PackageParser {
|
|||||||
// Verify that entries are signed consistently with the first entry
|
// Verify that entries are signed consistently with the first entry
|
||||||
// we encountered. Note that for splits, certificates may have
|
// we encountered. Note that for splits, certificates may have
|
||||||
// already been populated during an earlier parse of a base APK.
|
// already been populated during an earlier parse of a base APK.
|
||||||
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "verifyEntries");
|
|
||||||
for (ZipEntry entry : toVerify) {
|
for (ZipEntry entry : toVerify) {
|
||||||
final Certificate[][] entryCerts = loadCertificates(jarFile, entry);
|
final Certificate[][] entryCerts = loadCertificates(jarFile, entry);
|
||||||
if (ArrayUtils.isEmpty(entryCerts)) {
|
if (ArrayUtils.isEmpty(entryCerts)) {
|
||||||
@@ -1300,7 +1307,12 @@ public class PackageParser {
|
|||||||
if ((flags & PARSE_COLLECT_CERTIFICATES) != 0) {
|
if ((flags & PARSE_COLLECT_CERTIFICATES) != 0) {
|
||||||
// TODO: factor signature related items out of Package object
|
// TODO: factor signature related items out of Package object
|
||||||
final Package tempPkg = new Package(null);
|
final Package tempPkg = new Package(null);
|
||||||
collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/, 0 /*flags*/);
|
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "collectCertificates");
|
||||||
|
try {
|
||||||
|
collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/, 0 /*flags*/);
|
||||||
|
} finally {
|
||||||
|
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
|
||||||
|
}
|
||||||
signatures = tempPkg.mSignatures;
|
signatures = tempPkg.mSignatures;
|
||||||
} else {
|
} else {
|
||||||
signatures = null;
|
signatures = null;
|
||||||
@@ -5531,7 +5543,7 @@ public class PackageParser {
|
|||||||
return pi;
|
return pi;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final static class Instrumentation extends Component {
|
public final static class Instrumentation extends Component<IntentInfo> {
|
||||||
public final InstrumentationInfo info;
|
public final InstrumentationInfo info;
|
||||||
|
|
||||||
public Instrumentation(final ParsePackageItemArgs args, final InstrumentationInfo _info) {
|
public Instrumentation(final ParsePackageItemArgs args, final InstrumentationInfo _info) {
|
||||||
|
|||||||
@@ -14266,14 +14266,11 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "collectCertificates");
|
|
||||||
try {
|
try {
|
||||||
PackageParser.collectCertificates(pkg, parseFlags);
|
PackageParser.collectCertificates(pkg, parseFlags);
|
||||||
} catch (PackageParserException e) {
|
} catch (PackageParserException e) {
|
||||||
res.setError("Failed collect during installPackageLI", e);
|
res.setError("Failed collect during installPackageLI", e);
|
||||||
return;
|
return;
|
||||||
} finally {
|
|
||||||
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get rid of all references to package scan path via parser.
|
// Get rid of all references to package scan path via parser.
|
||||||
|
|||||||
Reference in New Issue
Block a user