fscrypt: move fscrypt to android_system_vold
Change-Id: I2cb7385541b8d9c7f1d8de0cef8ed3803b457b8c
diff --git a/partition.cpp b/partition.cpp
index 4854fbe..3bdc6d3 100755
--- a/partition.cpp
+++ b/partition.cpp
@@ -50,10 +50,9 @@
#include "gui/gui.hpp"
#include "adbbu/libtwadbbu.hpp"
#ifdef TW_INCLUDE_CRYPTO
- #include "crypto/fde/cryptfs.h"
+ // #include "crypto/fde/cryptfs.h"
+ #include "cryptfs.h"
#include "Decrypt.h"
-#else
- #define CRYPT_FOOTER_OFFSET 0x4000
#endif
extern "C" {
#include "mtdutils/mtdutils.h"
@@ -76,6 +75,8 @@
#include <sparse_format.h>
#include "progresstracking.hpp"
+#define CRYPT_FOOTER_OFFSET 0x4000
+
using namespace std;
static int auto_index = 0; // v2 fstab allows you to specify a mount point of "auto" with no /. These items are given a mount point of /auto* where * == auto_index
@@ -677,30 +678,10 @@
DataManager::SetValue(TW_IS_ENCRYPTED, 0);
} else if (!Mount(false)) {
if (Is_Present) {
- if (Key_Directory.empty()) {
- set_partition_data(Use_Original_Path ? Original_Path.c_str() : Actual_Block_Device.c_str(), Crypto_Key_Location.c_str(),
- Fstab_File_System.c_str());
- if (cryptfs_check_footer() == 0) {
- Is_Encrypted = true;
- Is_Decrypted = false;
- Can_Be_Mounted = false;
- Current_File_System = "emmc";
- Setup_Image();
- DataManager::SetValue(TW_CRYPTO_PWTYPE, cryptfs_get_password_type());
- DataManager::SetValue("tw_crypto_pwtype_0", cryptfs_get_password_type());
- DataManager::SetValue(TW_CRYPTO_PASSWORD, "");
- DataManager::SetValue("tw_crypto_display", "");
- if (datamedia)
- Setup_Data_Media();
- } else {
- gui_err("mount_data_footer=Could not mount /data and unable to find crypto footer.");
- }
- } else {
- Is_Encrypted = true;
- Is_Decrypted = false;
- if (datamedia)
- Setup_Data_Media();
- }
+ Is_Encrypted = true;
+ Is_Decrypted = false;
+ if (datamedia)
+ Setup_Data_Media();
} else if (Key_Directory.empty()) {
LOGERR("Primary block device '%s' for mount point '%s' is not present!\n",
Primary_Block_Device.c_str(), Mount_Point.c_str());
@@ -774,7 +755,7 @@
ExcludeAll(Mount_Point + "/gsi"); // cow devices
int retry_count = 3;
- while (!Decrypt_DE() && --retry_count)
+ while (!android::keystore::Decrypt_DE() && --retry_count)
usleep(2000);
if (retry_count > 0) {
PartitionManager.Set_Crypto_State();
@@ -782,7 +763,7 @@
Is_Decrypted = false;
DataManager::SetValue(TW_IS_ENCRYPTED, 1);
string filename;
- int pwd_type = Get_Password_Type(0, filename);
+ int pwd_type = android::keystore::Get_Password_Type(0, filename);
if (pwd_type < 0) {
LOGERR("This TWRP does not have synthetic password decrypt support\n");
pwd_type = 0; // default password
@@ -3417,10 +3398,10 @@
thekey.append(buf, n);
}
close(fdkey);
- unsigned char* key = (unsigned char*) thekey.data();
- cryptfs_revert_ext_volume(part_guid);
+ // unsigned char* key = (unsigned char*) thekey.data();
+ // cryptfs_revert_ext_volume(part_guid);
- ret = cryptfs_setup_ext_volume(part_guid, Adopted_Block_Device.c_str(), key, thekey.size(), crypto_blkdev);
+ // ret = cryptfs_setup_ext_volume(part_guid, Adopted_Block_Device.c_str(), key, thekey.size(), crypto_blkdev);
if (ret == 0) {
LOGINFO("adopted storage new block device: '%s'\n", crypto_blkdev);
Decrypted_Block_Device = crypto_blkdev;
@@ -3431,7 +3412,7 @@
LOGERR("Failed to mount decrypted adopted storage device\n");
Is_Decrypted = false;
Is_Encrypted = false;
- cryptfs_revert_ext_volume(part_guid);
+ // cryptfs_revert_ext_volume(part_guid);
ret = 1;
} else {
UnMount(false);
@@ -3476,7 +3457,7 @@
if (!Adopted_GUID.empty()) {
PartitionManager.Remove_MTP_Storage(Mount_Point);
UnMount(false);
- cryptfs_revert_ext_volume(Adopted_GUID.c_str());
+ // cryptfs_revert_ext_volume(Adopted_GUID.c_str());
Is_Adopted_Storage = false;
Is_Encrypted = false;
Is_Decrypted = false;