diff options
| author | Alex Buynytskyy <alexbuy@google.com> | 2020-09-23 11:13:50 -0700 |
|---|---|---|
| committer | Alex Buynytskyy <alexbuy@google.com> | 2020-10-05 20:39:39 -0700 |
| commit | c40b4f285144d6fd4f49aa31a1a77b966eaa658a (patch) | |
| tree | 371320125b372f5eb0b2a872ad2ee4d93bd0acd7 /core/java/android/app/ApplicationPackageManager.java | |
| parent | 587ecc88b8306f518fd1cf7beef56b7949ae606a (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.java | 42 |
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); |
