From 1b81d4d28479b9572b83f16fbd83dd4d682f31b5 Mon Sep 17 00:00:00 2001 From: John Wu Date: Wed, 2 Mar 2022 14:36:59 -0800 Subject: [PATCH] Remove AndroidKeystore key migration code in framework Since there will be no appId transitions in T, AndroidKeystore keys do not need to be migrated. Also, even in the future when appId transitioning is allowed, key migration will not be needed as it is possible to select a sharedUserInheritor to have its appId persisted, which means keys will also be inherited implicitly. The conclusion is that the functionality of migrating keys across the UID namespace is no longer needed, even in the future. Test: m Bug: 220015249 Change-Id: I6d0976fea095ec67292642d20ef8014172e83b2e --- .../com/android/server/pm/AppDataHelper.java | 21 ------------------- .../server/pm/pkg/parsing/ParsingPackage.java | 3 --- .../pm/pkg/parsing/ParsingPackageImpl.java | 16 ++------------ .../pm/pkg/parsing/ParsingPackageRead.java | 5 ----- .../pm/pkg/parsing/ParsingPackageUtils.java | 4 +--- .../parsing/parcelling/AndroidPackageTest.kt | 5 ----- 6 files changed, 3 insertions(+), 51 deletions(-) diff --git a/services/core/java/com/android/server/pm/AppDataHelper.java b/services/core/java/com/android/server/pm/AppDataHelper.java index 0b0d1458c8de7..6e42e693ea9f4 100644 --- a/services/core/java/com/android/server/pm/AppDataHelper.java +++ b/services/core/java/com/android/server/pm/AppDataHelper.java @@ -36,7 +36,6 @@ import android.os.storage.StorageManagerInternal; import android.os.storage.VolumeInfo; import android.security.AndroidKeyStoreMaintenance; import android.system.keystore2.Domain; -import android.system.keystore2.KeyDescriptor; import android.text.TextUtils; import android.util.Log; import android.util.Slog; @@ -554,26 +553,6 @@ final class AppDataHelper { return prepareAppDataFuture; } - public void migrateKeyStoreData(int previousAppId, int appId) { - // If previous UID is system UID, declaring inheritKeyStoreKeys is not supported. - // Silently ignore the request to migrate keys. - if (previousAppId == Process.SYSTEM_UID) return; - - for (int userId : mPm.resolveUserIds(UserHandle.USER_ALL)) { - int srcUid = UserHandle.getUid(userId, previousAppId); - int destUid = UserHandle.getUid(userId, appId); - final KeyDescriptor[] keys = AndroidKeyStoreMaintenance.listEntries(Domain.APP, srcUid); - if (keys == null) continue; - for (final KeyDescriptor key : keys) { - KeyDescriptor dest = new KeyDescriptor(); - dest.domain = Domain.APP; - dest.nspace = destUid; - dest.alias = key.alias; - AndroidKeyStoreMaintenance.migrateKeyNamespace(key, dest); - } - } - } - void clearAppDataLIF(AndroidPackage pkg, int userId, int flags) { if (pkg == null) { return; diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java index f6f9faf98c40a..cbba346ce7b81 100644 --- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java +++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java @@ -287,9 +287,6 @@ public interface ParsingPackage extends ParsingPackageRead { ParsingPackage setInstallLocation(int installLocation); - /** @see R#styleable.AndroidManifest_inheritKeyStoreKeys */ - ParsingPackage setInheritKeyStoreKeys(boolean inheritKeyStoreKeys); - /** @see R#styleable.AndroidManifest_sharedUserMaxSdkVersion */ ParsingPackage setLeavingSharedUid(boolean leavingSharedUid); diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageImpl.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageImpl.java index 67670272ef8b0..1484df8ece14a 100644 --- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageImpl.java +++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageImpl.java @@ -494,7 +494,6 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden, ATTRIBUTIONS_ARE_USER_VISIBLE, RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED, SDK_LIBRARY, - INHERIT_KEYSTORE_KEYS, }) public @interface Values {} private static final long EXTERNAL_STORAGE = 1L; @@ -547,9 +546,8 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden, private static final long ATTRIBUTIONS_ARE_USER_VISIBLE = 1L << 47; private static final long RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED = 1L << 48; private static final long SDK_LIBRARY = 1L << 49; - private static final long INHERIT_KEYSTORE_KEYS = 1L << 50; - private static final long ENABLE_ON_BACK_INVOKED_CALLBACK = 1L << 51; - private static final long LEAVING_SHARED_UID = 1L << 52; + private static final long ENABLE_ON_BACK_INVOKED_CALLBACK = 1L << 50; + private static final long LEAVING_SHARED_UID = 1L << 51; } private ParsingPackageImpl setBoolean(@Booleans.Values long flag, boolean value) { @@ -2393,11 +2391,6 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden, : mKnownActivityEmbeddingCerts; } - @Override - public boolean shouldInheritKeyStoreKeys() { - return getBoolean(Booleans.INHERIT_KEYSTORE_KEYS); - } - @Override public boolean isOnBackInvokedCallbackEnabled() { return getBoolean(Booleans.ENABLE_ON_BACK_INVOKED_CALLBACK); @@ -2551,11 +2544,6 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden, return this; } - @Override - public ParsingPackageImpl setInheritKeyStoreKeys(boolean value) { - return setBoolean(Booleans.INHERIT_KEYSTORE_KEYS, value); - } - @Override public ParsingPackageImpl setLeavingSharedUid(boolean value) { return setBoolean(Booleans.LEAVING_SHARED_UID, value); diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageRead.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageRead.java index 50033f652bfd1..20b1ed8d0c3e7 100644 --- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageRead.java +++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageRead.java @@ -351,11 +351,6 @@ public interface ParsingPackageRead extends PkgWithoutStateAppInfo, PkgWithoutSt */ int getLocaleConfigRes(); - /** - * @see R.styleable#AndroidManifest_inheritKeyStoreKeys - */ - boolean shouldInheritKeyStoreKeys(); - /** * @see R.styleable.AndroidManifestApplication_enableOnBackInvokedCallback */ diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java index 3eaca9dddcc41..112b9e070d284 100644 --- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java +++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java @@ -894,9 +894,7 @@ public class ParsingPackageUtils { .setTargetSandboxVersion(anInteger(PARSE_DEFAULT_TARGET_SANDBOX, R.styleable.AndroidManifest_targetSandboxVersion, sa)) /* Set the global "on SD card" flag */ - .setExternalStorage((flags & PARSE_EXTERNAL_STORAGE) != 0) - .setInheritKeyStoreKeys(bool(false, - R.styleable.AndroidManifest_inheritKeyStoreKeys, sa)); + .setExternalStorage((flags & PARSE_EXTERNAL_STORAGE) != 0); boolean foundApp = false; final int depth = parser.getDepth(); diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt index 83ccabf039359..8f81e930d0cdc 100644 --- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt +++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt @@ -505,11 +505,6 @@ class AndroidPackageTest : ParcelableComponentTest(AndroidPackage::class, Packag ) } ), - getSetByValue( - AndroidPackage::shouldInheritKeyStoreKeys, - ParsingPackage::setInheritKeyStoreKeys, - true - ), getter(AndroidPackage::getKnownActivityEmbeddingCerts, setOf("TESTEMBEDDINGCERT")), getSetByValue( AndroidPackage::isOnBackInvokedCallbackEnabled,