From 69e129d654ccc2fb9d364d64fe65e7ea7302f85a Mon Sep 17 00:00:00 2001 From: Andy CrossGate Yan Date: Sat, 15 Oct 2022 09:33:56 +0000 Subject: [PATCH 05/11] Revert "Remove more FDE methods from StorageManager" This reverts commit bd13f84152449a3ead6fa8604fd31f48c0224676. Change-Id: Ic394934ec27b1a486c60123130825d44dad73412 --- .../android/os/storage/StorageManager.java | 57 +++++++++++++++++++ .../internal/os/RoSystemProperties.java | 4 ++ 2 files changed, 61 insertions(+) diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index ee387e7c284f..0adc55598d9b 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -1669,6 +1669,15 @@ public class StorageManager { return false; } + /** {@hide} + * Is this device encryptable or already encrypted? + * @return true for encryptable or encrypted + * false not encrypted and not encryptable + */ + public static boolean isEncryptable() { + return RoSystemProperties.CRYPTO_ENCRYPTABLE; + } + /** {@hide} * Is this device encrypted? *

@@ -1702,6 +1711,54 @@ public class StorageManager { return isFileEncrypted(); } + /** {@hide} + * Is this device block encrypted? + * @return true for block encrypted. (Implies isEncrypted() == true) + * false not encrypted or file encrypted + */ + public static boolean isBlockEncrypted() { + return false; + } + + /** {@hide} + * Is this device block encrypted with credentials? + * @return true for crediential block encrypted. + * (Implies isBlockEncrypted() == true) + * false not encrypted, file encrypted or default block encrypted + */ + public static boolean isNonDefaultBlockEncrypted() { + return false; + } + + /** {@hide} + * Is this device in the process of being block encrypted? + * @return true for encrypting. + * false otherwise + * Whether device isEncrypted at this point is undefined + * Note that only system services and CryptKeeper will ever see this return + * true - no app will ever be launched in this state. + * Also note that this state will not change without a teardown of the + * framework, so no service needs to check for changes during their lifespan + */ + public static boolean isBlockEncrypting() { + return false; + } + + /** {@hide} + * Is this device non default block encrypted and in the process of + * prompting for credentials? + * @return true for prompting for credentials. + * (Implies isNonDefaultBlockEncrypted() == true) + * false otherwise + * Note that only system services and CryptKeeper will ever see this return + * true - no app will ever be launched in this state. + * Also note that this state will not change without a teardown of the + * framework, so no service needs to check for changes during their lifespan + */ + public static boolean inCryptKeeperBounce() { + return false; + } + /** {@hide} * @deprecated Use {@link #isFileEncrypted} instead, since emulated FBE is no longer supported. */ diff --git a/core/java/com/android/internal/os/RoSystemProperties.java b/core/java/com/android/internal/os/RoSystemProperties.java index 40d5c4761dff..66288706b0f1 100644 --- a/core/java/com/android/internal/os/RoSystemProperties.java +++ b/core/java/com/android/internal/os/RoSystemProperties.java @@ -68,10 +68,14 @@ public class RoSystemProperties { public static final CryptoProperties.type_values CRYPTO_TYPE = CryptoProperties.type().orElse(CryptoProperties.type_values.NONE); // These are pseudo-properties + public static final boolean CRYPTO_ENCRYPTABLE = + CRYPTO_STATE != CryptoProperties.state_values.UNSUPPORTED; public static final boolean CRYPTO_ENCRYPTED = CRYPTO_STATE == CryptoProperties.state_values.ENCRYPTED; public static final boolean CRYPTO_FILE_ENCRYPTED = CRYPTO_TYPE == CryptoProperties.type_values.FILE; + public static final boolean CRYPTO_BLOCK_ENCRYPTED = + CRYPTO_TYPE == CryptoProperties.type_values.BLOCK; public static final boolean CONTROL_PRIVAPP_PERMISSIONS_LOG = "log".equalsIgnoreCase(CONTROL_PRIVAPP_PERMISSIONS); -- 2.41.0