summaryrefslogtreecommitdiff
path: root/core/java/android/app/ApplicationPackageManager.java
diff options
context:
space:
mode:
authorAlex Buynytskyy <alexbuy@google.com>2020-09-23 11:13:50 -0700
committerAlex Buynytskyy <alexbuy@google.com>2020-10-05 20:39:39 -0700
commitc40b4f285144d6fd4f49aa31a1a77b966eaa658a (patch)
tree371320125b372f5eb0b2a872ad2ee4d93bd0acd7 /core/java/android/app/ApplicationPackageManager.java
parent587ecc88b8306f518fd1cf7beef56b7949ae606a (diff)
Addressing API review comments.
Fixes: 169153620 Fixes: 168601298 Test: atest ChecksumsTest Change-Id: Ibe593ccd388ad56f01ba0e3f58fb5a17c86e5e5c
Diffstat (limited to 'core/java/android/app/ApplicationPackageManager.java')
-rw-r--r--core/java/android/app/ApplicationPackageManager.java42
1 files changed, 26 insertions, 16 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 3d966c7fbc38..7b25e25f3ff4 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -16,13 +16,13 @@
package android.app;
-import static android.content.pm.Checksum.PARTIAL_MERKLE_ROOT_1M_SHA256;
-import static android.content.pm.Checksum.PARTIAL_MERKLE_ROOT_1M_SHA512;
-import static android.content.pm.Checksum.WHOLE_MD5;
-import static android.content.pm.Checksum.WHOLE_MERKLE_ROOT_4K_SHA256;
-import static android.content.pm.Checksum.WHOLE_SHA1;
-import static android.content.pm.Checksum.WHOLE_SHA256;
-import static android.content.pm.Checksum.WHOLE_SHA512;
+import static android.content.pm.Checksum.TYPE_PARTIAL_MERKLE_ROOT_1M_SHA256;
+import static android.content.pm.Checksum.TYPE_PARTIAL_MERKLE_ROOT_1M_SHA512;
+import static android.content.pm.Checksum.TYPE_WHOLE_MD5;
+import static android.content.pm.Checksum.TYPE_WHOLE_MERKLE_ROOT_4K_SHA256;
+import static android.content.pm.Checksum.TYPE_WHOLE_SHA1;
+import static android.content.pm.Checksum.TYPE_WHOLE_SHA256;
+import static android.content.pm.Checksum.TYPE_WHOLE_SHA512;
import android.annotation.DrawableRes;
import android.annotation.NonNull;
@@ -117,7 +117,6 @@ import dalvik.system.VMRuntime;
import libcore.util.EmptyArray;
-import java.io.IOException;
import java.lang.ref.WeakReference;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
@@ -150,10 +149,11 @@ public class ApplicationPackageManager extends PackageManager {
private static final int sDefaultFlags = GET_SHARED_LIBRARY_FILES;
/** Default set of checksums - includes all available checksums.
- * @see PackageManager#getChecksums */
+ * @see PackageManager#requestChecksums */
private static final int DEFAULT_CHECKSUMS =
- WHOLE_MERKLE_ROOT_4K_SHA256 | WHOLE_MD5 | WHOLE_SHA1 | WHOLE_SHA256 | WHOLE_SHA512
- | PARTIAL_MERKLE_ROOT_1M_SHA256 | PARTIAL_MERKLE_ROOT_1M_SHA512;
+ TYPE_WHOLE_MERKLE_ROOT_4K_SHA256 | TYPE_WHOLE_MD5 | TYPE_WHOLE_SHA1 | TYPE_WHOLE_SHA256
+ | TYPE_WHOLE_SHA512 | TYPE_PARTIAL_MERKLE_ROOT_1M_SHA256
+ | TYPE_PARTIAL_MERKLE_ROOT_1M_SHA512;
// Name of the resource which provides background permission button string
public static final String APP_PERMISSION_BUTTON_ALLOW_ALWAYS =
@@ -994,14 +994,24 @@ public class ApplicationPackageManager extends PackageManager {
}
@Override
- public void getChecksums(@NonNull String packageName, boolean includeSplits,
- @Checksum.Kind int required, @Nullable List<Certificate> trustedInstallers,
+ public void requestChecksums(@NonNull String packageName, boolean includeSplits,
+ @Checksum.Type int required, @NonNull List<Certificate> trustedInstallers,
@NonNull IntentSender statusReceiver)
- throws CertificateEncodingException, IOException, NameNotFoundException {
+ throws CertificateEncodingException, NameNotFoundException {
Objects.requireNonNull(packageName);
Objects.requireNonNull(statusReceiver);
- try {
- mPM.getChecksums(packageName, includeSplits, DEFAULT_CHECKSUMS, required,
+ Objects.requireNonNull(trustedInstallers);
+ try {
+ if (trustedInstallers == TRUST_ALL) {
+ trustedInstallers = null;
+ } else if (trustedInstallers == TRUST_NONE) {
+ trustedInstallers = Collections.emptyList();
+ } else if (trustedInstallers.isEmpty()) {
+ throw new IllegalArgumentException(
+ "trustedInstallers has to be one of TRUST_ALL/TRUST_NONE or a non-empty "
+ + "list of certificates.");
+ }
+ mPM.requestChecksums(packageName, includeSplits, DEFAULT_CHECKSUMS, required,
encodeCertificates(trustedInstallers), statusReceiver, getUserId());
} catch (ParcelableException e) {
e.maybeRethrow(PackageManager.NameNotFoundException.class);