Add support for multi-user decryption
* Add CLI support using the command "twrp decrypt <PASSWORD> [USER ID]"
* Add GUI support using the menu Advanced --> Decrypt User
Change-Id: Id2681bc2b1012a0571417f7a6e0b980b1b25c61c
(cherry picked from commit 5a79f67a1b1bd1bcadeca0a4896a871646652534)
diff --git a/gui/theme/common/portrait.xml b/gui/theme/common/portrait.xml
index 64b8776..a14fc43 100755
--- a/gui/theme/common/portrait.xml
+++ b/gui/theme/common/portrait.xml
@@ -710,6 +710,7 @@
<action function="set">tw_cancel_param=</action>
<action function="set">tw_show_exclamation=0</action>
<action function="set">tw_show_reboot=0</action>
+ <action function="set">tw_crypto_user_id=</action>
<action function="page">%tw_clear_destination%</action>
</action>
</page>
@@ -1013,8 +1014,13 @@
</text>
<text style="text_m_accent">
- <condition var1="tw_has_data_media" var2="1"/>
<placement x="%center_x%" y="%row3_y%" placement="5"/>
+ <text>{@factory_reset5=(not including users/lockscreen)}</text>
+ </text>
+
+ <text style="text_m_accent">
+ <condition var1="tw_has_data_media" var2="1"/>
+ <placement x="%center_x%" y="%row4_y%" placement="5"/>
<text>{@factory_reset2=(not including internal storage)}</text>
</text>
@@ -2673,6 +2679,10 @@
</conditions>
<placement x="%center_x%" y="%row18a_y%"/>
<text>{@decrypt_data_btn=Decrypt Data}</text>
+ <action function="set">tw_crypto_user_id=0</action>
+ <action function="set">tw_crypto_password=</action>
+ <action function="set">tw_password_fail=0</action>
+ <action function="set">tw_crypto_pwtype=%tw_crypto_pwtype_0%</action>
<action function="page">decrypt</action>
</button>
@@ -3543,6 +3553,16 @@
<listbox style="advanced_listbox">
<placement x="%indent%" y="%row13a_y%" w="%content_width%" h="%listbox_advanced_height%"/>
+ <listitem name="{@decrypt_users=Decrypt Users}">
+ <conditions>
+ <condition var1="tw_is_fbe" var2="1"/>
+ <condition var1="tw_all_users_decrypted" var2="0"/>
+ </conditions>
+ <actions>
+ <action function="set">tw_crypto_user_id=</action>
+ <action function="page">decrypt_users</action>
+ </actions>
+ </listitem>
<listitem name="{@reload_theme_btn=Reload Theme}">
<action function="reload"/>
</listitem>
@@ -4557,10 +4577,17 @@
</text>
<text style="text_m_accent">
+ <condition var1="tw_is_fbe" op="!=" var2="1"/>
<placement x="%center_x%" y="%row2_y%" placement="5"/>
<text>{@decrypt_data_enter_pass=Enter Password:}</text>
</text>
+ <text style="text_m_accent">
+ <condition var1="tw_is_fbe" var2="1"/>
+ <placement x="%center_x%" y="%row2_y%" placement="5"/>
+ <text>{@decrypt_data_enter_pass_fbe=Enter Password for User [%tw_crypto_user_id%]}</text>
+ </text>
+
<input>
<placement x="%indent%" y="%row3_input_y%" w="%content_width%" h="%input_height%"/>
<text>%tw_crypto_display%</text>
@@ -4616,10 +4643,17 @@
</text>
<text style="text_m_accent">
+ <condition var1="tw_is_fbe" op="!=" var2="1"/>
<placement x="%center_x%" y="%row2_y%" placement="5"/>
<text>{@decrypt_data_enter_pattern=Enter Pattern.}</text>
</text>
+ <text style="text_m_accent">
+ <condition var1="tw_is_fbe" var2="1"/>
+ <placement x="%center_x%" y="%row2_y%" placement="5"/>
+ <text>{@decrypt_data_enter_pattern_fbe=Enter Pattern for User [%tw_crypto_user_id%]}</text>
+ </text>
+
<text style="text_m_fail">
<condition var1="tw_password_fail" var2="1"/>
<placement x="%center_x%" y="%row3_y%" placement="5"/>
@@ -5139,5 +5173,44 @@
<action function="screenshot"/>
</action>
</page>
+
+ <page name="decrypt_users">
+ <template name="page"/>
+
+ <text style="text_l">
+ <placement x="%col1_x_header%" y="%row3_header_y%"/>
+ <text>{@decrypt_users=Decrypt Users}</text>
+ </text>
+
+ <text style="text_m_accent">
+ <placement x="%center_x%" y="%row2_y%" placement="5"/>
+ <text>{@decrypt_users_selection=Select a user ID to decrypt}</text>
+ </text>
+
+ <listbox>
+ <placement x="%indent%" y="%row3_y%" w="%content_width%" h="%listbox_advanced_height%"/>
+ <text>{@select_user=Select User}</text>
+ <icon selected="radio_true" unselected="radio_false" />
+ <data name="tw_crypto_user_id" />
+ </listbox>
+
+ <button style="main_button_half_height">
+ <placement x="%center_x%" y="%row21a_y%"/>
+ <text>{@decrypt_users=Decrypt Users}</text>
+ <action function="set">tw_crypto_password=</action>
+ <action function="set">tw_password_fail=0</action>
+ <action function="page">decrypt</action>
+ </button>
+
+ <action>
+ <touch key="home"/>
+ <action function="page">main</action>
+ </action>
+
+ <action>
+ <touch key="back"/>
+ <action function="page">advanced</action>
+ </action>
+ </page>
</pages>
</recovery>