summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Yonker <dees_troy@teamw.in>2014-12-20 22:38:29 +0100
committermaxwen <max.weninger@gmail.com>2014-12-21 23:30:17 +0100
commitd79d9bceb36cebbcb926e414155489c6ce8fb741 (patch)
tree34a692a812da666be2b2b6dbaace17ce084c48c7
parentMTP add/remove storage instead of disabling MTP (diff)
downloadandroid_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.tar
android_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.tar.gz
android_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.tar.bz2
android_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.tar.lz
android_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.tar.xz
android_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.tar.zst
android_bootable_recovery-d79d9bceb36cebbcb926e414155489c6ce8fb741.zip
-rw-r--r--crypto/lollipop/cryptfs.c2
-rw-r--r--crypto/lollipop/cryptfs.h1
-rw-r--r--gui/devices/landscape/res/landscape.xml29
-rw-r--r--gui/devices/portrait/res/portrait.xml29
-rw-r--r--gui/devices/watch/res/watch.xml29
-rw-r--r--partition.cpp10
6 files changed, 87 insertions, 13 deletions
diff --git a/crypto/lollipop/cryptfs.c b/crypto/lollipop/cryptfs.c
index c6586cc49..496b960ad 100644
--- a/crypto/lollipop/cryptfs.c
+++ b/crypto/lollipop/cryptfs.c
@@ -725,7 +725,7 @@ errout:
return retval;
}
-static int delete_crypto_blk_dev(char *name)
+int delete_crypto_blk_dev(char *name)
{
int fd;
char buffer[DM_CRYPT_BUF_SIZE];
diff --git a/crypto/lollipop/cryptfs.h b/crypto/lollipop/cryptfs.h
index 8cb8a7a32..bc8b463ee 100644
--- a/crypto/lollipop/cryptfs.h
+++ b/crypto/lollipop/cryptfs.h
@@ -213,6 +213,7 @@ extern "C" {
int cryptfs_check_passwd(char *pw);
int cryptfs_verify_passwd(char *newpw);
int cryptfs_get_password_type(void);
+ int delete_crypto_blk_dev(char *name);
#ifdef __cplusplus
}
#endif
diff --git a/gui/devices/landscape/res/landscape.xml b/gui/devices/landscape/res/landscape.xml
index cee7c1553..b8803026a 100644
--- a/gui/devices/landscape/res/landscape.xml
+++ b/gui/devices/landscape/res/landscape.xml
@@ -1057,10 +1057,7 @@
</object>
<object type="button">
- <conditions>
- <condition var1="tw_has_internal" var2="1" />
- <condition var1="tw_has_data_media" var2="1" />
- </conditions>
+ <condition var1="tw_has_data_media" var2="1" />
<highlight color="%highlight_color%" />
<placement x="%col3_x%" y="%wipe_button_y%" />
<font resource="font" color="%button_text_color%" />
@@ -1071,6 +1068,30 @@
</actions>
</object>
+ <object type="button">
+ <conditions>
+ <condition var1="tw_is_encrypted" var2="1" />
+ <condition var1="tw_has_data_media" var2="0" />
+ </conditions>
+ <highlight color="%highlight_color%" />
+ <placement x="%col3_x%" y="%wipe_button_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>Wipe Encryption</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_back=wipe</action>
+ <action function="set">tw_action=wipe</action>
+ <action function="set">tw_action_param=DATAMEDIA</action>
+ <action function="set">tw_has_action2=0</action>
+ <action function="set">tw_text1=Wipe Encryption from Data?</action>
+ <action function="set">tw_text2=</action>
+ <action function="set">tw_action_text1=Formatting Data...</action>
+ <action function="set">tw_complete_text1=Data Format Complete</action>
+ <action function="set">tw_slider_text=Swipe to Format Data</action>
+ <action function="page">confirm_action</action>
+ </actions>
+ </object>
+
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="%center_x%" y="%row12_text_y%" placement="5" />
diff --git a/gui/devices/portrait/res/portrait.xml b/gui/devices/portrait/res/portrait.xml
index 9a9571012..a7fbbf460 100644
--- a/gui/devices/portrait/res/portrait.xml
+++ b/gui/devices/portrait/res/portrait.xml
@@ -769,10 +769,7 @@
</object>
<object type="button">
- <conditions>
- <condition var1="tw_has_internal" var2="1" />
- <condition var1="tw_has_data_media" var2="1" />
- </conditions>
+ <condition var1="tw_has_data_media" var2="1" />
<highlight color="%highlight_color%" />
<placement x="%col2_x%" y="%wipe_button_y%" />
<font resource="font" color="%button_text_color%" />
@@ -783,6 +780,30 @@
</actions>
</object>
+ <object type="button">
+ <conditions>
+ <condition var1="tw_is_encrypted" var2="1" />
+ <condition var1="tw_has_data_media" var2="0" />
+ </conditions>
+ <highlight color="%highlight_color%" />
+ <placement x="%col2_x%" y="%wipe_button_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>Wipe Encryption</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_back=wipe</action>
+ <action function="set">tw_action=wipe</action>
+ <action function="set">tw_action_param=DATAMEDIA</action>
+ <action function="set">tw_has_action2=0</action>
+ <action function="set">tw_text1=Wipe Encryption from Data?</action>
+ <action function="set">tw_text2=</action>
+ <action function="set">tw_action_text1=Formatting Data...</action>
+ <action function="set">tw_complete_text1=Data Format Complete</action>
+ <action function="set">tw_slider_text=Swipe to Format Data</action>
+ <action function="page">confirm_action</action>
+ </actions>
+ </object>
+
<object type="slider">
<placement x="%slider_x%" y="%slider_y%" />
<resource base="slider" used="slider-used" touch="slider-touch" />
diff --git a/gui/devices/watch/res/watch.xml b/gui/devices/watch/res/watch.xml
index d3ddc5417..23795695f 100644
--- a/gui/devices/watch/res/watch.xml
+++ b/gui/devices/watch/res/watch.xml
@@ -712,10 +712,7 @@
</object>
<object type="button">
- <conditions>
- <condition var1="tw_has_internal" var2="1" />
- <condition var1="tw_has_data_media" var2="1" />
- </conditions>
+ <condition var1="tw_has_data_media" var2="1" />
<highlight color="%highlight_color%" />
<placement x="%col2_x%" y="%wipe_button_y%" />
<font resource="font" color="%button_text_color%" />
@@ -726,6 +723,30 @@
</actions>
</object>
+ <object type="button">
+ <conditions>
+ <condition var1="tw_is_encrypted" var2="1" />
+ <condition var1="tw_has_data_media" var2="0" />
+ </conditions>
+ <highlight color="%highlight_color%" />
+ <placement x="%col2_x%" y="%wipe_button_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>Wipe Encryption</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_back=wipe</action>
+ <action function="set">tw_action=wipe</action>
+ <action function="set">tw_action_param=DATAMEDIA</action>
+ <action function="set">tw_has_action2=0</action>
+ <action function="set">tw_text1=Wipe Encryption from Data?</action>
+ <action function="set">tw_text2=</action>
+ <action function="set">tw_action_text1=Formatting Data...</action>
+ <action function="set">tw_complete_text1=Data Format Complete</action>
+ <action function="set">tw_slider_text=Swipe to Format Data</action>
+ <action function="page">confirm_action</action>
+ </actions>
+ </object>
+
<object type="slider">
<placement x="%slider_x%" y="%slider_y%" />
<resource base="slider" used="slider-used" touch="slider-touch" />
diff --git a/partition.cpp b/partition.cpp
index b20367f77..409a688d5 100644
--- a/partition.cpp
+++ b/partition.cpp
@@ -1371,6 +1371,15 @@ bool TWPartition::Wipe_Encryption() {
Has_Data_Media = false;
Decrypted_Block_Device = "";
+#ifdef TW_INCLUDE_CRYPTO
+ if (Is_Decrypted) {
+ if (!UnMount(true))
+ return false;
+ if (delete_crypto_blk_dev("userdata") != 0) {
+ LOGERR("Error deleting crypto block device, continuing anyway.\n");
+ }
+ }
+#endif
Is_Decrypted = false;
Is_Encrypted = false;
Find_Actual_Block_Device();
@@ -1381,6 +1390,7 @@ bool TWPartition::Wipe_Encryption() {
if (Mount(false))
PartitionManager.Add_MTP_Storage(MTP_Storage_ID);
}
+ DataManager::SetValue(TW_IS_ENCRYPTED, 0);
#ifndef TW_OEM_BUILD
gui_print("You may need to reboot recovery to be able to use /data again.\n");
#endif