From aa25f94291458e6d22c9585e7b229209fb83f26a Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Mon, 24 Jun 2013 21:02:30 -0700 Subject: [PATCH] Enhanced import/export support. 1) Allow imports from the stock SMS database at any time. 2) Provide plaintext export support, in a format compatible with the "SMS Backup And Restore" app. 3) Fix the DB weirdness on encrypted restore that previously required killing the app. --- AndroidManifest.xml | 7 +- res/drawable-hdpi/card.9.png | Bin 0 -> 266 bytes res/drawable-hdpi/encrypted_backup.png | Bin 0 -> 1384 bytes res/drawable-hdpi/plaintext_backup.png | Bin 0 -> 1363 bytes res/drawable-hdpi/stock_sms.png | Bin 0 -> 1289 bytes res/drawable-mdpi/card.9.png | Bin 0 -> 266 bytes res/drawable-mdpi/encrypted_backup.png | Bin 0 -> 1263 bytes res/drawable-mdpi/plaintext_backup.png | Bin 0 -> 1254 bytes res/drawable-mdpi/stock_sms.png | Bin 0 -> 1201 bytes res/drawable-xhdpi/card.9.png | Bin 0 -> 315 bytes res/drawable-xhdpi/encrypted_backup.png | Bin 0 -> 1542 bytes res/drawable-xhdpi/plaintext_backup.png | Bin 0 -> 1414 bytes res/drawable-xhdpi/stock_sms.png | Bin 0 -> 1374 bytes res/drawable/clickable_card.xml | 6 + res/layout/export_fragment.xml | 98 +++++++ res/layout/import_export_activity.xml | 6 + res/layout/import_fragment.xml | 136 ++++++++++ res/menu/text_secure_normal.xml | 13 - res/values/strings.xml | 77 +++++- res/values/themes.xml | 3 +- .../securesms/ApplicationExportManager.java | 147 ----------- .../securesms/ConversationListActivity.java | 25 +- .../securesms/DatabaseMigrationActivity.java | 5 + .../securesms/ExportFragment.java | 197 ++++++++++++++ .../securesms/ImportExportActivity.java | 109 ++++++++ .../securesms/ImportFragment.java | 248 ++++++++++++++++++ .../database/CanonicalAddressDatabase.java | 9 +- .../securesms/database/Database.java | 6 +- .../securesms/database/DatabaseFactory.java | 22 +- ...rter.java => EncryptedBackupExporter.java} | 6 +- .../database/EncryptingSmsDatabase.java | 5 + .../securesms/database/MmsSmsColumns.java | 12 + .../database/PlaintextBackupExporter.java | 66 +++++ .../database/PlaintextBackupImporter.java | 126 +++++++++ .../securesms/database/SmsDatabase.java | 25 ++ .../securesms/database/SmsMigrator.java | 4 +- .../securesms/database/XmlBackup.java | 184 +++++++++++++ 37 files changed, 1343 insertions(+), 199 deletions(-) create mode 100644 res/drawable-hdpi/card.9.png create mode 100644 res/drawable-hdpi/encrypted_backup.png create mode 100644 res/drawable-hdpi/plaintext_backup.png create mode 100644 res/drawable-hdpi/stock_sms.png create mode 100644 res/drawable-mdpi/card.9.png create mode 100644 res/drawable-mdpi/encrypted_backup.png create mode 100644 res/drawable-mdpi/plaintext_backup.png create mode 100644 res/drawable-mdpi/stock_sms.png create mode 100644 res/drawable-xhdpi/card.9.png create mode 100644 res/drawable-xhdpi/encrypted_backup.png create mode 100644 res/drawable-xhdpi/plaintext_backup.png create mode 100644 res/drawable-xhdpi/stock_sms.png create mode 100644 res/drawable/clickable_card.xml create mode 100644 res/layout/export_fragment.xml create mode 100644 res/layout/import_export_activity.xml create mode 100644 res/layout/import_fragment.xml delete mode 100644 src/org/thoughtcrime/securesms/ApplicationExportManager.java create mode 100644 src/org/thoughtcrime/securesms/ExportFragment.java create mode 100644 src/org/thoughtcrime/securesms/ImportExportActivity.java create mode 100644 src/org/thoughtcrime/securesms/ImportFragment.java rename src/org/thoughtcrime/securesms/database/{ApplicationExporter.java => EncryptedBackupExporter.java} (95%) create mode 100644 src/org/thoughtcrime/securesms/database/PlaintextBackupExporter.java create mode 100644 src/org/thoughtcrime/securesms/database/PlaintextBackupImporter.java create mode 100644 src/org/thoughtcrime/securesms/database/XmlBackup.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 4353ed97ec..d42ff626ac 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -68,12 +68,15 @@ - + + + - + d8G!u{EJu|AxH7PT4QyZo8`!`G zHn4#WY~cTcU6$Z^o<~%y*f!u8;|mqcw)+O$_x&}5@aAbIpqrhT~ZPnz}=+@{`KUN_1YATMgga_|8A9dA&l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi-#MQ{r)X>b-$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq}SBM$imFo0H^x=oo!a)FMSSObD2MKumbT1#;j?KQ#}S-iv?>$!MIV{?BW7PTz*798+n(n^v)39sSi~SXHbn5#B+~u*M z0^)hxO$$6&#kZ;T9{Yb_zr>M@HIl(EIco&e(kFeM>yy@YjrZ_{pXb|GGifaVp?b9d zt*MV%QV*KUU}VmzW-Naox2LYWIclw#_40i!+(9h66L@>P8*k`^W;JLR@X1ZCN|?m- zsfzD_NJf3oOV$lMWd}M%tUBA%guLP=SurIq;JoL+$1_Rh_N<l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVip!qnK<%-q7%$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1O_pUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1> zG!Lpb1-Dzwaq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zzH)T)Jq8BGqn<8~ zAr-gY%slVKY$$Nd{I@%+qvIC^jYmf(a~%4`(e!}3;tONdr?ihc9qtFk1?8P?O#ZJo_rvhrGr6G;lnik--kEp zgg;Dn&5YZ-YSp_)#s#^J-(Kzx`DE~=k~fL{ghQ|wgJdK8HjY_uMQP959xh-ac;-qBa&ZlX0!+NNl!1=ARIu-a<7y5(m)`r%#<4qm37%XX|1 Y40F@7E0uk>UIGzopr08J0$VE_OC literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/stock_sms.png b/res/drawable-hdpi/stock_sms.png new file mode 100644 index 0000000000000000000000000000000000000000..db0c7ac720b017f6ae3522cb238093cb4f9b4d30 GIT binary patch literal 1289 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGX)r)My8IIt`??F1}=t%u7;K-hL)}-PR@>Q zriSJwPKGeOF8Rr&xv6<2Fuf@Vy_Pujf)Yb+0nlcb)S}F?)D*X({9FaFr>!!vxy8)U z)yc)&1*dsXy(!q-0@3S=Q?EYIG5VmWMT%;e5HS6KnDB%PE9xq)3!A^ zhc_P)o28e_9~x@=pNm28fZ(5#{70uX9{<2n_jV0~{e-SMwfckIw>T4``)2-;syTb| zy0g`hw^P@*UuivZQva6IXNB1FuF7}%MAB7!?mlb-ESm1*~a22A_C8#I{;_hx`hff5+QaUPbuj)lKDh?mUn1U&{3T wgZGm8p*;8ZAMri>qCN#4E?gh_8TYYBFsRl0D;I?Kr-2G5Pgg&ebxsLQ0Gi6hivR!s literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/card.9.png b/res/drawable-mdpi/card.9.png new file mode 100644 index 0000000000000000000000000000000000000000..65419e83a826a6cbd3e29ab72bd9194a3aa77b35 GIT binary patch literal 266 zcmV+l0rmcgP)d8G!u{EJu|AxH7PT4QyZo8`!`G zHn4#WY~cTcU6$Z^o<~%y*f!u8;|mqcw)+O$_x&}5@aAbIpqrhT~ZPnz}=+@{`KUN_1YATMgga_|8A9dA&l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi-)Wpcb%-Pt~$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1ObbUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnqfX zG!Lpb1-Dy_aO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zzG$M6$-uyv=;`7Z zQgQ3e^u1n397I~nzww6)xU9VrwB-YPOT-J~8|#+tYwSo=tnQdU|{=leS@GK+z1B3O3C0-@n@0fPKob`cYF3(=& zwJUENx?RA-v&TW-`Msy{t4W7=|2$hb@lStqhvC9Y->-h|e0Ju=_QF-cQ>STMoBR7! z_5$A7UP0HbZr9nL=*-thW4@O9fT^#R*JRFRJyEyL&)4o9yE0|>Qki?+36pEna#lTI z|Ge+{vWJB-JS@zMw=4|w|1GuFa{1Efjg4{Je<|O2k|4r7y?w~#$o^f literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/plaintext_backup.png b/res/drawable-mdpi/plaintext_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..ec6a2bf8f7938d21ad0a5bac1d31ddd771166108 GIT binary patch literal 1254 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 Ya7?&u>z&2fVW5)P)78&qol`;+0JO0*n*aa+ literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/plaintext_backup.png b/res/drawable-xhdpi/plaintext_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a156a94b63b427208a85313a1ea2b8abb78852 GIT binary patch literal 1414 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=Gg{iTznYoFnlYxt&p{t>#iJ_&diIcOV zo2j9>iIX8ruSMv>2~2MaLa!-Ky`aR9TL84#CABECEH%ZgC_h&L>}jh^Y;G}k zv2b-YcEV{MRBsA4w?Ond;YcXl+5EIl@j(ASs3dgoUj;Pp0(EZFFCyQf;61{Oq~7M|;Z+-IEx28W;^2*bXpAFfb=D z{F9vPm(DLgJHYa3`i$1NO*+*Q&rfHz+S@htEnKh3oZ)0X!J@(L3+K~dHUo}qN$s?l zCy5M6>=TR*Phons^G-Xr15+)FDii;HjV2aGZ)t|8D}Eln`WyatYq>x06g{Y<5hb3%@r{wi>N-n<&P&l( zoQx4qS24#hocQ%_p|&D}$%MTZwy{2INn?6q!F?;sL9lN{t|Ei?t#eFUW{7Q3Ole+v zbAgj|4p&Lz;uEH+2Qt_^_&(^cJWyD1WeTJJg~b95VH&%%7=BD(-EF_7;F8{jYcH5$ z)y;)VVpzAYGk4AjI~~a^c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=mnWL+di@B4jlYxt&p{t>#iJ_&diIcOV zo2j9>iIX8ruSMv>2~2MaLa#GUy`aR9TL84#CABECEH%ZgC_h&L>}jh^+-|YN zX&zK>3U0SJ;?%1Tbc{YIYLTKECIn1BASOKF0y*%cpPC0u??u3bz3J{-X9fnw3!W~H zAr-gY%-ZjF*g)XeWV59TW-SeV9&Zjzn(ChL%(Oym9;2gVMRS*WM@xe!Be!(VpOp%R z=`Vv^nVfRoSe5OYY!?|SeDwS0x#y>wi8;B%Zj%6KHVh(d+On5&yxL0+70ZizY>%84 z`}a#~Q1N54%*j)#U+qZv|D@voZP!wUFi+)6%a=1$+02`ySIXdV+}?)u!t*P#lhsPa z)fnGpKRq>ng5JMf7A6d}a>sq=@bflYI@QkRQ2ErEIpBrGdgg?Pg}J-Z_GjMP?O}Dj zFpkyX%#`(>`qMs@w?E|S{ZN0Qb^{kfrIL-ZZ4}qz#ivf5EmNt#Z5ev#Y#VRv^uA?g zTTS{`YBTscyBA2Eu!-Gl(9fvfmSN1W^QKJ18m9HRYyq>*KJ!R5{8VYbMW=Za)1J@i z;kNtkbX@mc+LI+|qjuNQ?rZKuKGX9&|NR5$fz5&ZZ1_n=8KbLh*2~7a5 Cw%Jku literal 0 HcmV?d00001 diff --git a/res/drawable/clickable_card.xml b/res/drawable/clickable_card.xml new file mode 100644 index 0000000000..b7ddb1d8aa --- /dev/null +++ b/res/drawable/clickable_card.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/res/layout/export_fragment.xml b/res/layout/export_fragment.xml new file mode 100644 index 0000000000..8056164f58 --- /dev/null +++ b/res/layout/export_fragment.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/import_export_activity.xml b/res/layout/import_export_activity.xml new file mode 100644 index 0000000000..e4f29211d5 --- /dev/null +++ b/res/layout/import_export_activity.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/res/layout/import_fragment.xml b/res/layout/import_fragment.xml new file mode 100644 index 0000000000..f405a29487 --- /dev/null +++ b/res/layout/import_fragment.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/menu/text_secure_normal.xml b/res/menu/text_secure_normal.xml index 4cc966d07e..64c5e32d11 100644 --- a/res/menu/text_secure_normal.xml +++ b/res/menu/text_secure_normal.xml @@ -13,19 +13,6 @@ android:id="@+id/menu_mark_all_read" android:icon="@android:drawable/ic_menu_set_as" /> - - - - - - - - diff --git a/res/values/strings.xml b/res/values/strings.xml index bc83efa01c..dadc864e1c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -104,7 +104,62 @@ Key exchange message... - + + + Export To SD Card? + This + will export your encrypted keys, settings, and messages to the SD card. + + Export + Export Plaintext To SD Card? + Warning, this will + export the plaintext contents of your TextSecure messages to the SD card. + + Cancel + Exporting + Exporting plaintext to SD card... + + Error, unable to write to SD + card! + + Error while writing to SD card. + + Success! + Exporting encrypted keys, + settings, and messages... + + + + Import System SMS Database? + This will import + messages from the system\'s default SMS database to TextSecure. If you\'ve previously + imported the system\'s SMS database, importing again will result in duplicated messages. + + Import + Cancel + Restore Encrypted Backup? + + Restoring an encrypted backup will completely replace your existing keys, preferences, and + messages. You will lose any information that\'s in your current TextSecure install but not + in the backup. + + Restore + Import Plaintext Backup? + This will import + messages from a plaintext backup. If you\'ve previously imported the system\'s SMS database, + importing again will result in duplicated messages. + + Importing + Import plaintext backup... + No plaintext backup found! + Error importing backup! + Import complete! + Restoring + Restoring encrypted backup... + No encrypted backup found! + Restore complete! + + No scanned key found! @@ -322,6 +377,26 @@ Updating Database... + Export Encrypted Backup + Export an encrypted + backup to the SD card. + + Export Plaintext Backup + + Export a plaintext backup compatible with \'SMSBackup And Restore\' to the SD card. + Import System SMS Database + Import the database + from the default system messenger app. + + Import Encrypted Backup + + Restore a previously exported encrypted TextSecure backup. + + Import Plaintext Backup + + Import a plaintext backup file. Compatible with \'SMSBackup And Restore.\' + + TEXTSECURE PASSPHRASE Unlock diff --git a/res/values/themes.xml b/res/values/themes.xml index eda774b4b5..e406496bd9 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -20,8 +20,8 @@