diff options
| author | 2022-03-10 00:48:53 +0000 | |
|---|---|---|
| committer | 2022-03-10 00:48:53 +0000 | |
| commit | b56960bc761698b373034cf2922d66c99e71cec5 (patch) | |
| tree | a79094a051c7ad38738118c913bb8decda559f95 | |
| parent | e55bd1600ffbc31c2acac5178ad1fc0f90d8cc09 (diff) | |
| parent | 25bf2f8ae04daebe92ccf255da1c156e9ba7c2ea (diff) | |
Merge changes Ib5bcfb6a,I46c2a472,If0c75774,Iab7ba8d3
* changes:
Stub out some FDE methods in StorageManager
Stop trying to update FDE password from LockSettingsService
Remove clearEncryptionPassword() from LockPatternUtils
Stop trying to get/set fields in FDE footer
6 files changed, 9 insertions, 194 deletions
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 39f87d558098..db724d2de30b 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -82,7 +82,6 @@ import android.os.SystemProperties; import android.os.UserHandle; import android.provider.MediaStore; import android.provider.Settings; -import android.sysprop.VoldProperties; import android.system.ErrnoException; import android.system.Os; import android.system.OsConstants; @@ -1636,10 +1635,7 @@ public class StorageManager { * false not encrypted or file encrypted */ public static boolean isBlockEncrypted() { - if (!isEncrypted()) { - return false; - } - return RoSystemProperties.CRYPTO_BLOCK_ENCRYPTED; + return false; } /** {@hide} @@ -1649,18 +1645,7 @@ public class StorageManager { * false not encrypted, file encrypted or default block encrypted */ public static boolean isNonDefaultBlockEncrypted() { - if (!isBlockEncrypted()) { - return false; - } - - try { - IStorageManager storageManager = IStorageManager.Stub.asInterface( - ServiceManager.getService("mount")); - return storageManager.getPasswordType() != CRYPT_TYPE_DEFAULT; - } catch (RemoteException e) { - Log.e(TAG, "Error getting encryption type"); - return false; - } + return false; } /** {@hide} @@ -1674,8 +1659,7 @@ public class StorageManager { * framework, so no service needs to check for changes during their lifespan */ public static boolean isBlockEncrypting() { - final String state = VoldProperties.encrypt_progress().orElse(""); - return !"".equalsIgnoreCase(state); + return false; } /** {@hide} @@ -1690,8 +1674,7 @@ public class StorageManager { * framework, so no service needs to check for changes during their lifespan */ public static boolean inCryptKeeperBounce() { - final String status = VoldProperties.decrypt().orElse(""); - return "trigger_restart_min_framework".equals(status); + return false; } /** {@hide} */ diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl index d16d9c619403..654b46164dcf 100644 --- a/core/java/com/android/internal/widget/ILockSettings.aidl +++ b/core/java/com/android/internal/widget/ILockSettings.aidl @@ -95,5 +95,4 @@ interface ILockSettings { boolean hasSecureLockScreen(); boolean tryUnlockWithCachedUnifiedChallenge(int userId); void removeCachedUnifiedChallenge(int userId); - void updateEncryptionPassword(int type, in byte[] password); } diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index cd1bbb6bc6fe..408decc9ca56 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -701,38 +701,14 @@ public class LockPatternUtils { return true; } - private void updateCryptoUserInfo(int userId) { - if (userId != UserHandle.USER_SYSTEM) { - return; - } - - final String ownerInfo = isOwnerInfoEnabled(userId) ? getOwnerInfo(userId) : ""; - - IBinder service = ServiceManager.getService("mount"); - if (service == null) { - Log.e(TAG, "Could not find the mount service to update the user info"); - return; - } - - IStorageManager storageManager = IStorageManager.Stub.asInterface(service); - try { - Log.d(TAG, "Setting owner info"); - storageManager.setField(StorageManager.OWNER_INFO_KEY, ownerInfo); - } catch (RemoteException e) { - Log.e(TAG, "Error changing user info", e); - } - } - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public void setOwnerInfo(String info, int userId) { setString(LOCK_SCREEN_OWNER_INFO, info, userId); - updateCryptoUserInfo(userId); } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public void setOwnerInfoEnabled(boolean enabled, int userId) { setBoolean(LOCK_SCREEN_OWNER_INFO_ENABLED, enabled, userId); - updateCryptoUserInfo(userId); } @UnsupportedAppUsage @@ -787,17 +763,6 @@ public class LockPatternUtils { } /** - * Clears the encryption password. - */ - public void clearEncryptionPassword() { - try { - getLockSettings().updateEncryptionPassword(StorageManager.CRYPT_TYPE_DEFAULT, null); - } catch (RemoteException e) { - Log.e(TAG, "Couldn't clear encryption password"); - } - } - - /** * Retrieves the quality mode for {@code userHandle}. * @see DevicePolicyManager#getPasswordQuality(android.content.ComponentName) * @@ -988,24 +953,6 @@ public class LockPatternUtils { */ public void setVisiblePatternEnabled(boolean enabled, int userId) { setBoolean(Settings.Secure.LOCK_PATTERN_VISIBLE, enabled, userId); - - // Update for crypto if owner - if (userId != UserHandle.USER_SYSTEM) { - return; - } - - IBinder service = ServiceManager.getService("mount"); - if (service == null) { - Log.e(TAG, "Could not find the mount service to update the user info"); - return; - } - - IStorageManager storageManager = IStorageManager.Stub.asInterface(service); - try { - storageManager.setField(StorageManager.PATTERN_VISIBLE_KEY, enabled ? "1" : "0"); - } catch (RemoteException e) { - Log.e(TAG, "Error changing pattern visible state", e); - } } public boolean isVisiblePatternEverChosen(int userId) { @@ -1016,23 +963,7 @@ public class LockPatternUtils { * Set whether the visible password is enabled for cryptkeeper screen. */ public void setVisiblePasswordEnabled(boolean enabled, int userId) { - // Update for crypto if owner - if (userId != UserHandle.USER_SYSTEM) { - return; - } - - IBinder service = ServiceManager.getService("mount"); - if (service == null) { - Log.e(TAG, "Could not find the mount service to update the user info"); - return; - } - - IStorageManager storageManager = IStorageManager.Stub.asInterface(service); - try { - storageManager.setField(StorageManager.PASSWORD_VISIBLE_KEY, enabled ? "1" : "0"); - } catch (RemoteException e) { - Log.e(TAG, "Error changing password visible state", e); - } + // No longer does anything. } /** diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 9266bb431aa5..8a83130f50fa 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -75,7 +75,6 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.ProviderInfo; import android.content.pm.UserInfo; -import android.content.res.Configuration; import android.content.res.ObbInfo; import android.database.ContentObserver; import android.net.Uri; @@ -122,7 +121,6 @@ import android.provider.DocumentsContract; import android.provider.Downloads; import android.provider.MediaStore; import android.provider.Settings; -import android.sysprop.VoldProperties; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.ArrayMap; @@ -1380,39 +1378,6 @@ class StorageManagerService extends IStorageManager.Stub private void handleDaemonConnected() { initIfBootedAndConnected(); resetIfBootedAndConnected(); - - // On an encrypted device we can't see system properties yet, so pull - // the system locale out of the mount service. - if ("".equals(VoldProperties.encrypt_progress().orElse(""))) { - copyLocaleFromMountService(); - } - } - - private void copyLocaleFromMountService() { - String systemLocale; - try { - systemLocale = getField(StorageManager.SYSTEM_LOCALE_KEY); - } catch (RemoteException e) { - return; - } - if (TextUtils.isEmpty(systemLocale)) { - return; - } - - Slog.d(TAG, "Got locale " + systemLocale + " from mount service"); - Locale locale = Locale.forLanguageTag(systemLocale); - Configuration config = new Configuration(); - config.setLocale(locale); - try { - ActivityManager.getService().updatePersistentConfigurationWithAttribution(config, - mContext.getOpPackageName(), mContext.getAttributionTag()); - } catch (RemoteException e) { - Slog.e(TAG, "Error setting system locale from mount service", e); - } - - // Temporary workaround for http://b/17945169. - Slog.d(TAG, "Setting system properties to " + systemLocale + " from mount service"); - SystemProperties.set("persist.sys.locale", locale.toLanguageTag()); } private final IVoldListener mListener = new IVoldListener.Stub() { diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 7d5b7e535ca9..45f85edeff7e 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -1761,7 +1761,10 @@ public class LockSettingsService extends ILockSettings.Stub { } private void onPostPasswordChanged(LockscreenCredential newCredential, int userHandle) { - updateEncryptionPasswordIfNeeded(newCredential, userHandle); + if (userHandle == UserHandle.USER_SYSTEM && isDeviceEncryptionEnabled() && + shouldEncryptWithCredentials() && newCredential.isNone()) { + setCredentialRequiredToDecrypt(false); + } if (newCredential.isPattern()) { setBoolean(LockPatternUtils.PATTERN_EVER_CHOSEN_KEY, true, userHandle); } @@ -1770,26 +1773,6 @@ public class LockSettingsService extends ILockSettings.Stub { } /** - * Update device encryption password if calling user is USER_SYSTEM and device supports - * encryption. - */ - private void updateEncryptionPasswordIfNeeded(LockscreenCredential credential, int userHandle) { - // Update the device encryption password. - if (userHandle != UserHandle.USER_SYSTEM || !isDeviceEncryptionEnabled()) { - return; - } - if (!shouldEncryptWithCredentials()) { - updateEncryptionPassword(StorageManager.CRYPT_TYPE_DEFAULT, null); - return; - } - if (credential.isNone()) { - // Set the encryption password to default. - setCredentialRequiredToDecrypt(false); - } - updateEncryptionPassword(credential.getStorageCryptType(), credential.getCredential()); - } - - /** * Store the hash of the *current* password in the password history list, if device policy * enforces password history requirement. */ @@ -1883,34 +1866,6 @@ public class LockSettingsService extends ILockSettings.Stub { } } - /** Update the encryption password if it is enabled **/ - @Override - public void updateEncryptionPassword(final int type, final byte[] password) { - if (!hasSecureLockScreen() && password != null && password.length != 0) { - throw new UnsupportedOperationException( - "This operation requires the lock screen feature."); - } - if (!isDeviceEncryptionEnabled()) { - return; - } - final IBinder service = ServiceManager.getService("mount"); - if (service == null) { - Slog.e(TAG, "Could not find the mount service to update the encryption password"); - return; - } - - // TODO(b/120484642): This is a location where we still use a String for vold - String passwordString = password != null ? new String(password) : null; - mHandler.post(() -> { - IStorageManager storageManager = mInjector.getStorageManager(); - try { - storageManager.changeEncryptionPassword(type, passwordString); - } catch (RemoteException e) { - Slog.e(TAG, "Error changing encryption password", e); - } - }); - } - @VisibleForTesting /** Note: this method is overridden in unit tests */ protected void tieProfileLockToParent(int userId, LockscreenCredential password) { if (DEBUG) Slog.v(TAG, "tieProfileLockToParent for user: " + userId); diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index c8227d953009..dde52c5e33fb 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -203,8 +203,6 @@ import android.os.UpdateLock; import android.os.UserHandle; import android.os.UserManager; import android.os.WorkSource; -import android.os.storage.IStorageManager; -import android.os.storage.StorageManager; import android.provider.Settings; import android.service.dreams.DreamActivity; import android.service.voice.IVoiceInteractionSession; @@ -4209,11 +4207,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { SystemProperties.set("persist.sys.locale", locales.get(bestLocaleIndex).toLanguageTag()); LocaleList.setDefault(locales, bestLocaleIndex); - - final Message m = PooledLambda.obtainMessage( - ActivityTaskManagerService::sendLocaleToMountDaemonMsg, this, - locales.get(bestLocaleIndex)); - mH.sendMessage(m); } mTempConfig.seq = increaseConfigurationSeqLocked(); @@ -4367,17 +4360,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { Settings.System.putConfigurationForUser(resolver, config, userId); } - private void sendLocaleToMountDaemonMsg(Locale l) { - try { - IBinder service = ServiceManager.getService("mount"); - IStorageManager storageManager = IStorageManager.Stub.asInterface(service); - Log.d(TAG, "Storing locale " + l.toLanguageTag() + " for decryption UI"); - storageManager.setField(StorageManager.SYSTEM_LOCALE_KEY, l.toLanguageTag()); - } catch (RemoteException e) { - Log.e(TAG, "Error storing locale for decryption UI", e); - } - } - private void expireStartAsCallerTokenMsg(IBinder permissionToken) { mStartActivitySources.remove(permissionToken); mExpiredStartAsCallerTokens.add(permissionToken); |