diff --git a/partition.cpp b/partition.cpp index 5de102f1..24d57d67 100755 --- a/partition.cpp +++ b/partition.cpp @@ -738,6 +738,7 @@ bool TWPartition::Decrypt_FBE_DE() { if (TWFunc::Path_Exists("/data/unencrypted/key/version")) { DataManager::SetValue(TW_IS_FBE, 1); DataManager::SetValue(TW_CRYPTO_PWTYPE, "0"); // Set initial value so that recovery will not be confused when using unencrypted data or failed to decrypt data + property_set("ro.crypto.type", "file"); LOGINFO("File Based Encryption is present\n"); #ifdef TW_INCLUDE_FBE Is_FBE = true; diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 866abfb3..bd678d48 100755 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -398,7 +398,9 @@ void TWPartitionManager::Decrypt_Data() { #ifdef TW_INCLUDE_CRYPTO TWPartition* Decrypt_Data = Find_Partition_By_Path("/data"); if (Decrypt_Data && Decrypt_Data->Is_Encrypted && !Decrypt_Data->Is_Decrypted) { + property_set("ro.crypto.state", "encrypted"); if (!Decrypt_Data->Key_Directory.empty() && Mount_By_Path(Decrypt_Data->Key_Directory, false)) { + property_set("ro.crypto.type", "file"); #ifdef TW_INCLUDE_FBE_METADATA_DECRYPT #ifdef USE_FSCRYPT if (fscrypt_mount_metadata_encrypted(Decrypt_Data->Actual_Block_Device, Decrypt_Data->Mount_Point, false)) { @@ -410,7 +412,6 @@ void TWPartitionManager::Decrypt_Data() { LOGINFO("Successfully decrypted metadata encrypted data partition with new block device: '%s'\n", Decrypt_Data->Decrypted_Block_Device.c_str()); #endif - property_set("ro.crypto.state", "encrypted"); Decrypt_Data->Is_Decrypted = true; // Needed to make the mount function work correctly int retry_count = 10; while (!Decrypt_Data->Mount(false) && --retry_count)