From b6e84b66fd72e2dd86caae00cb3788036fd12008 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Wed, 23 Aug 2017 15:52:14 +0200 Subject: [PATCH] First release of E2E --- build.gradle | 5 +- drawable_resources/decrypt.svg | 1 + drawable_resources/encrypt.svg | 1 + .../ic_list_encrypted_folder.svg | 1 + lint.xml | 1 + settings.gradle | 2 +- src/androidTest/assets/decrypted.json | 42 + src/androidTest/assets/encrypted.json | 26 + .../assets/encrypted/ia7OEEEyXMoRa1QWQk8r | Bin 0 -> 9347 bytes .../assets/encrypted/n9WXAIXO2wRY4R8nXwmo | Bin 0 -> 59994 bytes src/androidTest/assets/ia7OEEEyXMoRa1QWQk8r | 103 + src/androidTest/assets/n9WXAIXO2wRY4R8nXwmo | Bin 0 -> 59978 bytes src/androidTest/assets/srEPevoPqPZpPEaeDnS3 | Bin 0 -> 59978 bytes .../AuthenticatorActivityTest.java | 9 +- .../android/datamodel/OCFileUnitTest.java | 2 +- .../datamodel/UploadStorageManagerTest.java | 7 +- .../android/uiautomator/InitialTest.java | 0 .../android/util/EncryptionTestIT.java | 357 +++ src/gplay/AndroidManifest.xml | 4 +- src/main/AndroidManifest.xml | 4 +- .../java/com/owncloud/android/MainApp.java | 7 +- .../datamodel/DecryptedFolderMetadata.java | 77 + .../datamodel/EncryptedFolderMetadata.java | 46 + .../datamodel/EncryptedSerializer.java | 22 + .../datamodel/FileDataStorageManager.java | 11 +- .../owncloud/android/datamodel/OCFile.java | 70 +- .../com/owncloud/android/db/ProviderMeta.java | 6 +- .../android/files/FileMenuFilter.java | 56 +- .../android/files/services/FileUploader.java | 21 +- .../operations/CreateFolderOperation.java | 16 +- .../operations/DownloadFileOperation.java | 38 +- .../operations/RefreshFolderOperation.java | 223 +- .../operations/RemoveFileOperation.java | 32 +- .../RemoveRemoteEncryptedFileOperation.java | 174 ++ .../UploadEncryptedFileOperation.java | 880 +++++++ .../operations/UploadFileOperation.java | 502 +++- .../providers/FileContentProvider.java | 344 ++- .../android/services/OperationsService.java | 16 +- .../ui/activity/FileDisplayActivity.java | 4 +- .../ui/adapter/ActivityListAdapter.java | 2 +- .../ui/adapter/FileListListAdapter.java | 25 +- .../android/ui/adapter/UploaderAdapter.java | 2 +- .../dialog/SetupEncryptionDialogFragment.java | 352 +++ .../android/ui/events/EncryptionEvent.java | 37 + .../ui/fragment/OCFileListFragment.java | 129 +- .../ui/helpers/FileOperationsHelper.java | 7 + .../ui/preview/PreviewImageActivity.java | 9 +- .../com/owncloud/android/utils/CsrHelper.java | 65 + .../android/utils/EncryptionUtils.java | 621 +++++ .../android/utils/FileStorageUtils.java | 3 +- .../owncloud/android/utils/MimeTypeUtil.java | 12 +- .../ic_list_encrypted_folder.png | Bin 0 -> 1963 bytes .../ic_list_encrypted_folder.png | Bin 0 -> 1405 bytes .../ic_list_encrypted_folder.png | Bin 0 -> 2671 bytes .../ic_list_encrypted_folder.png | Bin 0 -> 4032 bytes .../ic_list_encrypted_folder.png | Bin 0 -> 5501 bytes src/main/res/drawable/e2e_border.xml | 29 + .../res/layout/setup_encryption_dialog.xml | 59 + src/main/res/menu/file_actions_menu.xml | 12 + src/main/res/raw/encryption_key_words.txt | 2048 +++++++++++++++++ src/main/res/values-de/strings.xml | 18 +- src/main/res/values/colors.xml | 1 + src/main/res/values/strings.xml | 15 + src/modified/AndroidManifest.xml | 4 +- .../android/utils/EncryptionTest.java | 152 ++ .../utils/ErrorMessageAdapterUnitTest.java | 6 +- 66 files changed, 6505 insertions(+), 213 deletions(-) create mode 100644 drawable_resources/decrypt.svg create mode 100644 drawable_resources/encrypt.svg create mode 100644 drawable_resources/ic_list_encrypted_folder.svg create mode 100644 src/androidTest/assets/decrypted.json create mode 100644 src/androidTest/assets/encrypted.json create mode 100644 src/androidTest/assets/encrypted/ia7OEEEyXMoRa1QWQk8r create mode 100644 src/androidTest/assets/encrypted/n9WXAIXO2wRY4R8nXwmo create mode 100644 src/androidTest/assets/ia7OEEEyXMoRa1QWQk8r create mode 100644 src/androidTest/assets/n9WXAIXO2wRY4R8nXwmo create mode 100644 src/androidTest/assets/srEPevoPqPZpPEaeDnS3 rename {androidTest => src/androidTest}/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java (99%) rename {androidTest => src/androidTest}/java/com/owncloud/android/datamodel/OCFileUnitTest.java (98%) rename {androidTest => src/androidTest}/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java (86%) rename {androidTest => src/androidTest}/java/com/owncloud/android/uiautomator/InitialTest.java (100%) create mode 100644 src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java create mode 100644 src/main/java/com/owncloud/android/datamodel/DecryptedFolderMetadata.java create mode 100644 src/main/java/com/owncloud/android/datamodel/EncryptedFolderMetadata.java create mode 100644 src/main/java/com/owncloud/android/datamodel/EncryptedSerializer.java create mode 100644 src/main/java/com/owncloud/android/operations/RemoveRemoteEncryptedFileOperation.java create mode 100644 src/main/java/com/owncloud/android/operations/UploadEncryptedFileOperation.java create mode 100644 src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java create mode 100644 src/main/java/com/owncloud/android/ui/events/EncryptionEvent.java create mode 100644 src/main/java/com/owncloud/android/utils/CsrHelper.java create mode 100644 src/main/java/com/owncloud/android/utils/EncryptionUtils.java create mode 100644 src/main/res/drawable-hdpi/ic_list_encrypted_folder.png create mode 100644 src/main/res/drawable-mdpi/ic_list_encrypted_folder.png create mode 100644 src/main/res/drawable-xhdpi/ic_list_encrypted_folder.png create mode 100644 src/main/res/drawable-xxhdpi/ic_list_encrypted_folder.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_list_encrypted_folder.png create mode 100644 src/main/res/drawable/e2e_border.xml create mode 100644 src/main/res/layout/setup_encryption_dialog.xml create mode 100644 src/main/res/raw/encryption_key_words.txt create mode 100644 src/test/java/com/owncloud/android/utils/EncryptionTest.java diff --git a/build.gradle b/build.gradle index 6a6db47660..2e6f812538 100644 --- a/build.gradle +++ b/build.gradle @@ -212,6 +212,9 @@ dependencies { implementation 'org.greenrobot:eventbus:3.0.0' implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.2' implementation 'org.lukhnos:nnio:0.2' + + compile 'com.madgag.spongycastle:pkix:1.54.0.0' + // uncomment for gplay, modified // implementation "com.google.firebase:firebase-messaging:${googleLibraryVersion}" // implementation "com.google.android.gms:play-services-base:${googleLibraryVersion}" @@ -236,7 +239,7 @@ dependencies { androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1' // UIAutomator - for cross-app UI tests, and to grant screen is turned on in Espresso tests - //androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' + androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' // fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details //androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}" implementation 'org.jetbrains:annotations:15.0' diff --git a/drawable_resources/decrypt.svg b/drawable_resources/decrypt.svg new file mode 100644 index 0000000000..c66a9a9bcd --- /dev/null +++ b/drawable_resources/decrypt.svg @@ -0,0 +1 @@ + diff --git a/drawable_resources/encrypt.svg b/drawable_resources/encrypt.svg new file mode 100644 index 0000000000..3d161917f6 --- /dev/null +++ b/drawable_resources/encrypt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/drawable_resources/ic_list_encrypted_folder.svg b/drawable_resources/ic_list_encrypted_folder.svg new file mode 100644 index 0000000000..e2b62a99b0 --- /dev/null +++ b/drawable_resources/ic_list_encrypted_folder.svg @@ -0,0 +1 @@ + diff --git a/lint.xml b/lint.xml index 3d202e0e1a..9791cbefc5 100644 --- a/lint.xml +++ b/lint.xml @@ -3,6 +3,7 @@ + diff --git a/settings.gradle b/settings.gradle index 6a2e4c284a..cb1608d965 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':' \ No newline at end of file +include ':nextcloud-android-library' \ No newline at end of file diff --git a/src/androidTest/assets/decrypted.json b/src/androidTest/assets/decrypted.json new file mode 100644 index 0000000000..8aa7f4a2cf --- /dev/null +++ b/src/androidTest/assets/decrypted.json @@ -0,0 +1,42 @@ +{ + "metadata":{ + "encrypted":{ + "metadataKeys":{ + "0":"s4k4LPDpxoO53TKwem3Lo1", + "2":"…", + "3":"NEWESTMETADATAKEY" + } + }, + "initializationVector":"kahzfT4u86Knc+e3", + "sharing":{ + "recipient":{ + "blah@schiessle.org":"PUBLIC KEY", + "bjoern@schiessle.org":"PUBLIC KEY" + }, + "signature":"HMACOFRECIPIENTANDNEWESTMETADATAKEY" + }, + "version":1 + }, + "files":{ + "ia7OEEEyXMoRa1QWQk8r":{ + "encrypted":{ + "key":"jtboLmgGR1OQf2uneqCVHpklQLlIwWL5TXAQ0keK", + "filename":"test.txt", + "authenticationTag":"HMAC of file", + "version":1 + }, + "metadataKey":0, + "initializationVector":"+mHu52HyZq+pAAIN" + }, + "n9WXAIXO2wRY4R8nXwmo":{ + "encrypted":{ + "key":"s4k4LPDpxoO53TKwem3Lo1yJnbNUYH2KLrSFT8Ea", + "filename":"test2.txt", + "authenticationTag":"HMAC of file", + "version":1 + }, + "metadataKey":0, + "initializationVector":"sOFd17hCKWIv0gyB" + } + } +} diff --git a/src/androidTest/assets/encrypted.json b/src/androidTest/assets/encrypted.json new file mode 100644 index 0000000000..c865d4cedf --- /dev/null +++ b/src/androidTest/assets/encrypted.json @@ -0,0 +1,26 @@ +{ + "metadata":{ + "encrypted":"L01QcEZlcnBGbGJYZk0zQVRpME5venpiMlorZkVKNEo0YXFyV0Vla25Ed0kzOWtFYUg3V0Y3RVRKdDYrOWc0Y095bmhJU1hCRDlVVWkvdFJTa2swa1NTcXlPTEFiRmhVUDZFSzRzUXhiYWkrRkRPQ3VuNk1PakVxNDlBSUhWYUZucUJIZWhyeWNQZzF2d1d0VHh0cFhud3FacE55TmZOaFRRaVA2Zz09", + "initializationVector":"kahzfT4u86Knc+e3", + "sharing":{ + "recipient":{ + "blah@schiessle.org":"PUBLIC KEY", + "bjoern@schiessle.org":"PUBLIC KEY" + }, + "signature":"HMACOFRECIPIENTANDNEWESTMETADATAKEY" + }, + "version":1 + }, + "files":{ + "ia7OEEEyXMoRa1QWQk8r":{ + "encrypted":"a2xMcFI0cERHa2lCM3U1ajR5UXdnLzNmN0dCK2xnSmk5ck93bHhYTTI2ZmdQQlNaLzkxOTRJK3pHTlJzSjhoTTNjdlBhb2VVaEhHdGtBd0MvVUJlbWd1VFlvZDFKM2hLSkNmZWhoNlhIclBJaGU3ZllQY3lnMHprV1M1QUpIOCs2aUE5Tno2ZkZtRHpYMExabXRZcUpyZnk5Y2hyUTEyL2M4RDE1VmliR1ltbUxqKzBTUlJyc2ZCdTRwenZiR1hCVjk5OTA5UDVjb0llUCtPcjhVM1VBL1ZUNkpPaDYvSlpSaHlHTkVDbEpDRT0\\u003d", + "metadataKey":0, + "initializationVector":"+mHu52HyZq+pAAIN" + }, + "n9WXAIXO2wRY4R8nXwmo":{ + "encrypted":"VncyZU4yZStaRmFqeXJEQkpZNlNZa09yL3FIbVNNVW1wVDFWTENJN0pnSVBkdzIySUlrRnFDMGdzcTMwdHZneFlweEJjeGt5Z0crSVlUUkdGVk5iUzlBczJaejFlNTZzeEQrTUVHVldjRGQ4VDVIN0p6ZFFlRWsvRkN4M2FoQXlFOHpXOHQ5TnhXQUYycmpvNE5xNVowUStPTGZPc0hqaVdpUUR3dm9TV0hPS3JSaVd5c1YwSEhOYmVzZkZQaEF4Mk0rLzdDU05jK2dmNmdqb2ZndzIwOC91YXNlQUlPb2FnV3k0dWd0SFAvYz0\\u003d", + "metadataKey":0, + "initializationVector":"sOFd17hCKWIv0gyB" + } + } +} \ No newline at end of file diff --git a/src/androidTest/assets/encrypted/ia7OEEEyXMoRa1QWQk8r b/src/androidTest/assets/encrypted/ia7OEEEyXMoRa1QWQk8r new file mode 100644 index 0000000000000000000000000000000000000000..566f365aef0ea28521d2850b7aaf0cda9c7cbeb6 GIT binary patch literal 9347 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 literal 0 HcmV?d00001 diff --git a/src/androidTest/assets/encrypted/n9WXAIXO2wRY4R8nXwmo b/src/androidTest/assets/encrypted/n9WXAIXO2wRY4R8nXwmo new file mode 100644 index 0000000000000000000000000000000000000000..f1673ec0628131d4c35800ba482b8f093214fd15 GIT binary patch literal 59994 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 Llyq)D(vga0-g20= literal 0 HcmV?d00001 diff --git a/src/androidTest/assets/ia7OEEEyXMoRa1QWQk8r b/src/androidTest/assets/ia7OEEEyXMoRa1QWQk8r new file mode 100644 index 0000000000..628c953700 --- /dev/null +++ b/src/androidTest/assets/ia7OEEEyXMoRa1QWQk8r @@ -0,0 +1,103 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/src/androidTest/assets/n9WXAIXO2wRY4R8nXwmo b/src/androidTest/assets/n9WXAIXO2wRY4R8nXwmo new file mode 100644 index 0000000000000000000000000000000000000000..c16ef846c2b2d33ea56c100e713767fc135a15f9 GIT binary patch literal 59978 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≫oTR5t6u0pfg5;{nstc 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

AP@2{nD5EXoHET0AZmF zO^mGX*nxqeuwk+ixbiXbljwBOICSZ0>XI<>K&37AT$Zb?Ux1*pdya=p7_WQyd=!D6 z?7WK7ZN~2HB2Mh|-qR>B6&U?-dF(js=6R-`FockDlz`^>SE3I&WmVzp`p{9;+w+DN zTf-6*__{+8_@3~0;EZUSW&QN(jY2H_?O_{%sSH)JFrJ9hHZOgf`g$Y=1_rfOL0Uqq z1TC(!eS$~Ghih=6hdIM_=_d}G;kN1?Ld4e-jC@r-;H@cq&Pc80H8+~s%!0}9wP!GU z^^q=7VUWwu+v`l15@{4;DTuG~yLL>&aY->HgPBzj;PqK7=JlCk;Op^-Pq27h!moXt z6uof7mb7L36CS0nR7?!j!d3DiV<*4HIEx5SlhdJ{;-dOj$fwvtv#VrAnhGYvzBrG> z?L?ohQLIYVwnNlNQXG}<>U?!BM+?@u|0}6x$M3`8ki8R}HGx+;K^sTBl!}oyH(8fN zIq<}_*oM}IfE{k*%)0rpojk~U1{7aE}>^Xfs zN~2vCOMhR6GY^WxCC1KMX>Fu_UakF6u-NOt7+Q;_RjEYhB_JKc*i3;m6=6nUhs|5> z$NG3)2gUr29RoN}>_U2+2WfG8Kv-&S%kj25^}6Jrbs-rD;`78za028IRZ;PPtKr^& zcO2)N4JJMXl^&vgdHn~RxZ1UXB?V0maI{%+COdI@S=?+tYX%*>gfwRb?O;5IrD+A3 zG8uLH5~+Q2)o|%*hCG5_gG?ko?uoS!m1oJJUY%Ib2eP%KbX?jYEPan73CU47=F8s` z1bM3Y_S}jw6lU4`BQd6Gp@$Y-;BSg~ZuDTkci0w0Vrz)>k^?wzW$Bzu{;gJbgRb5> zunCI*=Cy141(;J2!ZQDwS9L}h0v$)6qo*ex40w42 z=sYhl9gHH|QM{2}yop7KzM;@fr2pcioV-Cr5LC8n>HnA)joAphNn?mJMT%?w!0`*B z3-S*?5hu&&K}IWmCg!RnBw)&F0oJBJYf~Cefkw*F#?h~0deZ|Du2!s`QOx1(6=78l6NfYe|baziJm`h^gL&8(Md;G`EA0)jJMhJ zXJFKz%QH7k=J=+!CO}?^LOHfP0uvE0%g$(2p92%z#BwT54CSk;rNRgyx_gD%!rCk# z?oN33;cyw-{hwu$j?o3mhUiB(i*kF8yO1}n{^7qDfueW_gO;g^!ICwzWQ%%7ip@xe&gN^Uo7UwP&Zuaa7;YvQ^N&m8lIjJU_>CY zsd2R}q?H{DA?=-Yn#SReqt~3Jxb?d37C|w$8O#v_H4$|Z-}f-z9dnP~@nE_I*BTcj zC7svCgGd}J61$LK8+0%wx~HW|sSCxwrCVD89OiPNY+MF~wG^>Bp>bU}hG+fX&pY;; z+cH3T#_x!hczRG??I* zqBrl6+wFv%?LlrwpUV|HN8p4=1)Kb+6kOgd*NrQxdX=U98LMm1&;73m>pE0b7 z;-mJJo*0);8*SQR;PpwfdHAY0@Ya)5)F0R`jAn`NcfE+1ym%r*IITdXDrWQ!#EKd> zLsjM7M8O49jG6@B%N*8_D4nS+CnN(vDb95|D6>zVl#1j|Gyzhba_&lV1=|D8CHl;% zbe1IkKR!=HX?(UwK8r*>`obZGE3cK~K)Dxn0&xSD#zpjc;1Nu({(Cf^Qs-Te`05b_ zDRE(fXWA#NU`|0IFLFijM=>0El{#76?#G1I6zv0ryPx5hhg{#GAqcD?hGy?np{~W} ze`5!%kC0cuO|h~XCe#=N4|B8#slhA~?5zK$~W|0b*K`4PxTo3jJO5yTNpebjBWCmJjH`!%DPGk&H&D^l!X^!7gT~0>lh8BGhb=$ zk2nr8d}l-hkU_7g4O?*R$3LbKCdAdH&9J=IEWkA<$*zo2Cb{}PooOTAnl!^c$%nVw z6e`N?x~2w$fOD1j47CGflO@*KmJ!rA?tS_FvEJFMf6&{e3gqH@w#tm}y$N;9Q2Yxu z?0ZXB= zPfx`VOlp~7IU>W0MypiTtTx%On2@tGP1|Ald*}h&c7NcxScb6 zj~EA=ZYqhXGi+~l$qRSh0TK{gMjctPgw|)<$)YH@^`aM;d18$^syVZ1v51dd#q)t* z=F_5Kta3;)#L8cqh8ZU0im@s@A%)@@X?yC%D5<2g;F*40u(jnfG1#orMi=TG@zn!k z-;K|s6r)DOzyX`CLEVf>gS(9J`#x~c9dAMC$Rk6P4%zA^z zmRXgAe^M}o-{!M%P)qi@@kQjZ@~wXuMUBCbH?NX!$y@H^C4l=krNpau+ycZMRVV)l v+5IKA`bYD+74j&y%gMI?e_5X&pF&_w8=MdwzJJ1n`8WzPD$;e5X5s$>e!ryK literal 0 HcmV?d00001 diff --git a/src/androidTest/assets/srEPevoPqPZpPEaeDnS3 b/src/androidTest/assets/srEPevoPqPZpPEaeDnS3 new file mode 100644 index 0000000000000000000000000000000000000000..c16ef846c2b2d33ea56c100e713767fc135a15f9 GIT binary patch literal 59978 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≫oTR5t6u0pfg5;{nstc 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

AP@2{nD5EXoHET0AZmF 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 literal 0 HcmV?d00001 diff --git a/androidTest/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java b/src/androidTest/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java similarity index 99% rename from androidTest/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java rename to src/androidTest/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java index d367976d8f..9a63e9a981 100644 --- a/androidTest/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java +++ b/src/androidTest/java/com/owncloud/android/authentication/AuthenticatorActivityTest.java @@ -19,6 +19,7 @@ package com.owncloud.android.authentication; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -29,7 +30,6 @@ import android.support.test.runner.AndroidJUnit4; import android.support.test.uiautomator.UiDevice; import android.test.suitebuilder.annotation.LargeTest; -import static org.junit.Assert.assertTrue; import com.owncloud.android.R; import org.junit.Before; @@ -39,18 +39,15 @@ import org.junit.runner.RunWith; import java.lang.reflect.Field; -import android.app.Activity; - import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard; import static android.support.test.espresso.action.ViewActions.typeText; - +import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isEnabled; import static android.support.test.espresso.matcher.ViewMatchers.withId; - -import static android.support.test.espresso.assertion.ViewAssertions.matches; import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertTrue; @RunWith(AndroidJUnit4.class) @LargeTest diff --git a/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java b/src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java similarity index 98% rename from androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java rename to src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java index 725f855553..c2277144b7 100644 --- a/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java +++ b/src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java @@ -120,7 +120,7 @@ public class OCFileUnitTest { ); assertThat(fileReadFromParcel.getLastSyncDateForProperties(), is(LAST_SYNC_DATE_FOR_PROPERTIES)); assertThat(fileReadFromParcel.getLastSyncDateForData(), is(LAST_SYNC_DATE_FOR_DATA)); - assertThat(fileReadFromParcel.setAvailableOffline(), is(true)); + assertThat(fileReadFromParcel.isAvailableOffline(), is(true)); assertThat(fileReadFromParcel.getEtag(), is(ETAG)); assertThat(fileReadFromParcel.isSharedViaLink(), is(true)); assertThat(fileReadFromParcel.isSharedWithSharee(), is(true)); diff --git a/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java b/src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java similarity index 86% rename from androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java rename to src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java index 0cf7304284..f59a5bc00f 100644 --- a/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java +++ b/src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java @@ -10,7 +10,6 @@ import android.support.test.runner.AndroidJUnit4; import com.owncloud.android.db.OCUpload; import org.junit.After; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -40,14 +39,14 @@ public class UploadStorageManagerTest { public void testDeleteAllUploads() { //Clean for (Account account : Accounts) { - uploadsStorageManager.removeAccountUploads(account); +// uploadsStorageManager.removeAccountUploads(account); } int accountRowsA = 3; int accountRowsB = 4; insertUploads(Accounts[0], accountRowsA); insertUploads(Accounts[1], accountRowsB); - Assert.assertTrue("Expected 4 removed uploads files", uploadsStorageManager.removeAccountUploads(Accounts[1]) == 4); +// Assert.assertTrue("Expected 4 removed uploads files", uploadsStorageManager.removeAccountUploads(Accounts[1]) == 4); } private void insertUploads(Account account, int rowsToInsert) { @@ -66,7 +65,7 @@ public class UploadStorageManagerTest { @After public void tearDown() { for (Account account : Accounts) { - uploadsStorageManager.removeAccountUploads(account); +// uploadsStorageManager.removeAccountUploads(account); } } } diff --git a/androidTest/java/com/owncloud/android/uiautomator/InitialTest.java b/src/androidTest/java/com/owncloud/android/uiautomator/InitialTest.java similarity index 100% rename from androidTest/java/com/owncloud/android/uiautomator/InitialTest.java rename to src/androidTest/java/com/owncloud/android/uiautomator/InitialTest.java diff --git a/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java b/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java new file mode 100644 index 0000000000..5a89250672 --- /dev/null +++ b/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java @@ -0,0 +1,357 @@ +/* + * Nextcloud Android client application + * + * @author Tobias Kaminsky + * Copyright (C) 2017 Tobias Kaminsky + * Copyright (C) 2017 Nextcloud GmbH. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.owncloud.android.util; + +import android.os.Build; +import android.support.annotation.RequiresApi; +import android.support.test.runner.AndroidJUnit4; + +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; +import com.owncloud.android.datamodel.DecryptedFolderMetadata; +import com.owncloud.android.datamodel.EncryptedFolderMetadata; +import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.utils.CsrHelper; +import com.owncloud.android.utils.EncryptionUtils; + +import org.apache.commons.io.FileUtils; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.PrivateKey; +import java.security.SecureRandom; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +import static android.support.test.InstrumentationRegistry.getInstrumentation; +import static com.owncloud.android.utils.EncryptionUtils.decodeStringToBase64Bytes; +import static com.owncloud.android.utils.EncryptionUtils.encodeBytesToBase64String; +import static com.owncloud.android.utils.EncryptionUtils.generateIV; +import static com.owncloud.android.utils.EncryptionUtils.generateKey; +import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertEquals; + +@RequiresApi(api = Build.VERSION_CODES.KITKAT) +@RunWith(AndroidJUnit4.class) +public class EncryptionTestIT { + private static String TAG = EncryptionTestIT.class.getSimpleName(); + + private String privateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAo" + + "IBAQDsn0JKS/THu328z1IgN0VzYU53HjSX03WJIgWkmyTaxbiKpoJaKbksXmfSpgzV" + + "GzKFvGfZ03fwFrN7Q8P8R2e8SNiell7mh1TDw9/0P7Bt/ER8PJrXORo+GviKHxaLr7" + + "Y0BJX9i/nW/L0L/VaE8CZTAqYBdcSJGgHJjY4UMf892ZPTa9T2Dl3ggdMZ7BQ2kiCi" + + "CC3qV99b0igRJGmmLQaGiAflhFzuDQPMifUMq75wI8RSRPdxUAtjTfkl68QHu7Umye" + + "yy33OQgdUKaTl5zcS3VSQbNjveVCNM4RDH1RlEc+7Wf1BY8APqT6jbiBcROJD2CeoL" + + "H2eiIJCi+61ZkSGfAgMBAAECggEBALFStCHrhBf+GL9a+qer4/8QZ/X6i91PmaBX/7" + + "SYk2jjjWVSXRNmex+V6+Y/jBRT2mvAgm8J+7LPwFdatE+lz0aZrMRD2gCWYF6Itpda" + + "90OlLkmQPVWWtGTgX2ta2tF5r2iSGzk0IdoL8zw98Q2UzpOcw30KnWtFMxuxWk0mHq" + + "pgp00g80cDWg3+RPbWOhdLp5bflQ36fKDfmjq05cGlIk6unnVyC5HXpvh4d4k2EWlX" + + "rjGsndVBPCjGkZePlLRgDHxT06r+5XdJ+1CBDZgCsmjGz3M8uOHyCfVW0WhB7ynzDT" + + "agVgz0iqpuhAi9sPt6iWWwpAnRw8cQgqEKw9bvKKECgYEA/WPi2PJtL6u/xlysh/H7" + + "A717CId6fPHCMDace39ZNtzUzc0nT5BemlcF0wZ74NeJSur3Q395YzB+eBMLs5p8mA" + + "95wgGvJhM65/J+HX+k9kt6Z556zLMvtG+j1yo4D0VEwm3xahB4SUUP+1kD7dNvo4+8" + + "xeSCyjzNllvYZZC0DrECgYEA7w8pEqhHHn0a+twkPCZJS+gQTB9Rm+FBNGJqB3XpWs" + + "TeLUxYRbVGk0iDve+eeeZ41drxcdyWP+WcL34hnrjgI1Fo4mK88saajpwUIYMy6+qM" + + "LY+jC2NRSBox56eH7nsVYvQQK9eKqv9wbB+PF9SwOIvuETN7fd8mAY02UnoaaU8CgY" + + "BoHRKocXPLkpZJuuppMVQiRUi4SHJbxDo19Tp2w+y0TihiJ1lvp7I3WGpcOt3LlMQk" + + "tEbExSvrRZGxZKH6Og/XqwQsYuTEkEIz679F/5yYVosE6GkskrOXQAfh8Mb3/04xVV" + + "tMaVgDQw0+CWVD4wyL+BNofGwBDNqsXTCdCsfxAQKBgQCDv2EtbRw0y1HRKv21QIxo" + + "ju5cZW4+cDfVPN+eWPdQFOs1H7wOPsc0aGRiiupV2BSEF3O1ApKziEE5U1QH+29bR4" + + "R8L1pemeGX8qCNj5bCubKjcWOz5PpouDcEqimZ3q98p3E6GEHN15UHoaTkx0yO/V8o" + + "j6zhQ9fYRxDHB5ACtQKBgQCOO7TJUO1IaLTjcrwS4oCfJyRnAdz49L1AbVJkIBK0fh" + + "JLecOFu3ZlQl/RStQb69QKb5MNOIMmQhg8WOxZxHcpmIDbkDAm/J/ovJXFSoBdOr5o" + + "uQsYsDZhsWW97zvLMzg5pH9/3/1BNz5q3Vu4HgfBSwWGt4E2NENj+XA+QAVmGA=="; + + private String cert = "-----BEGIN CERTIFICATE-----\n" + + "MIIDpzCCAo+gAwIBAgIBADANBgkqhkiG9w0BAQUFADBuMRowGAYDVQQDDBF3d3cu\n" + + "bmV4dGNsb3VkLmNvbTESMBAGA1UECgwJTmV4dGNsb3VkMRIwEAYDVQQHDAlTdHV0\n" + + "dGdhcnQxGzAZBgNVBAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzELMAkGA1UEBhMCREUw\n" + + "HhcNMTcwOTI2MTAwNDMwWhcNMzcwOTIxMTAwNDMwWjBuMRowGAYDVQQDDBF3d3cu\n" + + "bmV4dGNsb3VkLmNvbTESMBAGA1UECgwJTmV4dGNsb3VkMRIwEAYDVQQHDAlTdHV0\n" + + "dGdhcnQxGzAZBgNVBAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzELMAkGA1UEBhMCREUw\n" + + "ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDsn0JKS/THu328z1IgN0Vz\n" + + "YU53HjSX03WJIgWkmyTaxbiKpoJaKbksXmfSpgzVGzKFvGfZ03fwFrN7Q8P8R2e8\n" + + "SNiell7mh1TDw9/0P7Bt/ER8PJrXORo+GviKHxaLr7Y0BJX9i/nW/L0L/VaE8CZT\n" + + "AqYBdcSJGgHJjY4UMf892ZPTa9T2Dl3ggdMZ7BQ2kiCiCC3qV99b0igRJGmmLQaG\n" + + "iAflhFzuDQPMifUMq75wI8RSRPdxUAtjTfkl68QHu7Umyeyy33OQgdUKaTl5zcS3\n" + + "VSQbNjveVCNM4RDH1RlEc+7Wf1BY8APqT6jbiBcROJD2CeoLH2eiIJCi+61ZkSGf\n" + + "AgMBAAGjUDBOMB0GA1UdDgQWBBTFrXz2tk1HivD9rQ75qeoyHrAgIjAfBgNVHSME\n" + + "GDAWgBTFrXz2tk1HivD9rQ75qeoyHrAgIjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3\n" + + "DQEBBQUAA4IBAQARQTX21QKO77gAzBszFJ6xVnjfa23YZF26Z4X1KaM8uV8TGzuN\n" + + "JA95XmReeP2iO3r8EWXS9djVCD64m2xx6FOsrUI8HZaw1JErU8mmOaLAe8q9RsOm\n" + + "9Eq37e4vFp2YUEInYUqs87ByUcA4/8g3lEYeIUnRsRsWsA45S3wD7wy07t+KAn7j\n" + + "yMmfxdma6hFfG9iN/egN6QXUAyIPXvUvlUuZ7/BhWBj/3sHMrF9quy9Q2DOI8F3t\n" + + "1wdQrkq4BtStKhciY5AIXz9SqsctFHTv4Lwgtkapoel4izJnO0ZqYTXVe7THwri9\n" + + "H/gua6uJDWH9jk2/CiZDWfsyFuNUuXvDSp05\n" + + "-----END CERTIFICATE-----"; + + @Test + public void encryptStringAsymmetric() throws Exception { + byte[] key1 = EncryptionUtils.generateKey(); + String base64encodedKey = encodeBytesToBase64String(key1); + + String encryptedString = EncryptionUtils.encryptStringAsymmetric(base64encodedKey, cert); + String decryptedString = EncryptionUtils.decryptStringAsymmetric(encryptedString, privateKey); + + byte[] key2 = EncryptionUtils.decodeStringToBase64Bytes(decryptedString); + + assertTrue(Arrays.equals(key1, key2)); + } + + @Test + public void encryptStringSymmetric() throws Exception { + byte[] key = generateKey(); + + String encryptedString = EncryptionUtils.encryptStringSymmetric(privateKey, key); + String decryptedString = EncryptionUtils.decryptStringSymmetric(encryptedString, key); + + assertEquals(privateKey, decryptedString); + } + + @Test + public void encryptPrivateKey() throws Exception { + String keyPhrase = "moreovertelevisionfactorytendencyindependenceinternationalintellectualimpress" + + "interestvolunteer"; + KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); + keyGen.initialize(4096, new SecureRandom()); + KeyPair keyPair = keyGen.generateKeyPair(); + PrivateKey privateKey = keyPair.getPrivate(); + byte[] privateKeyBytes = privateKey.getEncoded(); + String privateKeyString = encodeBytesToBase64String(privateKeyBytes); + + String encryptedString = EncryptionUtils.encryptPrivateKey(privateKeyString, keyPhrase); + String decryptedString = EncryptionUtils.decryptPrivateKey(encryptedString, keyPhrase); + + assertEquals(privateKeyString, decryptedString); + } + + @Test + public void generateCSR() throws Exception { + KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); + keyGen.initialize(2048, new SecureRandom()); + KeyPair keyPair = keyGen.generateKeyPair(); + + String string = CsrHelper.generateCsrPemEncodedString(keyPair); + String urlEncoded = URLEncoder.encode("-----BEGIN CERTIFICATE REQUEST-----\n" + string + + "\n-----END CERTIFICATE REQUEST-----", "UTF-8"); + + Log_OC.d(TAG, "public: " + encodeBytesToBase64String(keyPair.getPublic().getEncoded())); + Log_OC.d(TAG, "csrPEM: " + string); + Log_OC.d(TAG, "csrPEM: " + urlEncoded); + } + + /** + * DecryptedFolderMetadata -> EncryptedFolderMetadata -> JSON -> encrypt + * -> decrypt -> JSON -> EncryptedFolderMetadata -> DecryptedFolderMetadata + */ + @Test + public void encryptionMetadata() throws Exception { + DecryptedFolderMetadata decryptedFolderMetadata1 = generateFolderMetadata(); + + // encrypt + EncryptedFolderMetadata encryptedFolderMetadata1 = EncryptionUtils.encryptFolderMetadata( + decryptedFolderMetadata1, privateKey); + + // serialize + String encryptedJson = EncryptionUtils.serializeJSON(encryptedFolderMetadata1); + + // de-serialize + EncryptedFolderMetadata encryptedFolderMetadata2 = EncryptionUtils.deserializeJSON(encryptedJson, + new TypeToken() { + }); + + // decrypt + DecryptedFolderMetadata decryptedFolderMetadata2 = EncryptionUtils.decryptFolderMetaData( + encryptedFolderMetadata2, privateKey); + + // compare + assertTrue(compareJsonStrings(EncryptionUtils.serializeJSON(decryptedFolderMetadata1), + EncryptionUtils.serializeJSON(decryptedFolderMetadata2))); + } + + @Test + public void testCryptFileWithoutMetadata() throws Exception { + byte[] key = EncryptionUtils.decodeStringToBase64Bytes("WANM0gRv+DhaexIsI0T3Lg=="); + byte[] iv = EncryptionUtils.decodeStringToBase64Bytes("gKm3n+mJzeY26q4OfuZEqg=="); + byte[] authTag = EncryptionUtils.decodeStringToBase64Bytes("PboI9tqHHX3QeAA22PIu4w=="); + + cryptFile("ia7OEEEyXMoRa1QWQk8r", "78f42172166f9dc8fd1a7156b1753353", key, iv, authTag); + } + + @Test + public void cryptFileWithMetadata() throws Exception { + DecryptedFolderMetadata metadata = generateFolderMetadata(); + + // n9WXAIXO2wRY4R8nXwmo + cryptFile("ia7OEEEyXMoRa1QWQk8r", + "78f42172166f9dc8fd1a7156b1753353", + EncryptionUtils.decodeStringToBase64Bytes(metadata.files.get("ia7OEEEyXMoRa1QWQk8r").encrypted.key), + EncryptionUtils.decodeStringToBase64Bytes(metadata.files.get("ia7OEEEyXMoRa1QWQk8r").initializationVector), + EncryptionUtils.decodeStringToBase64Bytes(metadata.files.get("ia7OEEEyXMoRa1QWQk8r").authenticationTag)); + + // n9WXAIXO2wRY4R8nXwmo + cryptFile("n9WXAIXO2wRY4R8nXwmo", + "825143ed1f21ebb0c3b3c3f005b2f5db", + EncryptionUtils.decodeStringToBase64Bytes(metadata.files.get("n9WXAIXO2wRY4R8nXwmo").encrypted.key), + EncryptionUtils.decodeStringToBase64Bytes(metadata.files.get("n9WXAIXO2wRY4R8nXwmo").initializationVector), + EncryptionUtils.decodeStringToBase64Bytes(metadata.files.get("n9WXAIXO2wRY4R8nXwmo").authenticationTag)); + } + + /** + * generates new keys and tests if they are unique + */ + @Test + public void testKey() { + Set keys = new HashSet<>(); + + for (int i = 0; i < 50; i++) { + assertTrue(keys.add(encodeBytesToBase64String(generateKey()))); + } + } + + /** + * generates new ivs and tests if they are unique + */ + @Test + public void testIV() { + Set ivs = new HashSet<>(); + + for (int i = 0; i < 50; i++) { + assertTrue(ivs.add(encodeBytesToBase64String(generateIV()))); + } + } + + + // Helper + private boolean compareJsonStrings(String expected, String actual) { + JsonParser parser = new JsonParser(); + JsonElement o1 = parser.parse(expected); + JsonElement o2 = parser.parse(actual); + + if (o1.equals(o2)) { + return true; + } else { + System.out.println("expected: " + o1); + System.out.println("actual: " + o2); + return false; + } + } + + private DecryptedFolderMetadata generateFolderMetadata() throws Exception { + String metadataKey0 = encodeBytesToBase64String(EncryptionUtils.generateKey()); + String metadataKey1 = encodeBytesToBase64String(EncryptionUtils.generateKey()); + String metadataKey2 = encodeBytesToBase64String(EncryptionUtils.generateKey()); + HashMap metadataKeys = new HashMap<>(); + metadataKeys.put(0, EncryptionUtils.encryptStringAsymmetric(metadataKey0, cert)); + metadataKeys.put(1, EncryptionUtils.encryptStringAsymmetric(metadataKey1, cert)); + metadataKeys.put(2, EncryptionUtils.encryptStringAsymmetric(metadataKey2, cert)); + DecryptedFolderMetadata.Encrypted encrypted = new DecryptedFolderMetadata.Encrypted(); + encrypted.metadataKeys = metadataKeys; + + DecryptedFolderMetadata.Metadata metadata1 = new DecryptedFolderMetadata.Metadata(); + metadata1.metadataKeys = metadataKeys; + metadata1.version = 1; + + DecryptedFolderMetadata.Sharing sharing = new DecryptedFolderMetadata.Sharing(); + sharing.signature = "HMACOFRECIPIENTANDNEWESTMETADATAKEY"; + HashMap recipient = new HashMap<>(); + recipient.put("blah@schiessle.org", "PUBLIC KEY"); + recipient.put("bjoern@schiessle.org", "PUBLIC KEY"); + sharing.recipient = recipient; + metadata1.sharing = sharing; + + HashMap files = new HashMap<>(); + + DecryptedFolderMetadata.Data data1 = new DecryptedFolderMetadata.Data(); + data1.key = "WANM0gRv+DhaexIsI0T3Lg=="; + data1.filename = "test.txt"; + data1.version = 1; + + DecryptedFolderMetadata.DecryptedFile file1 = new DecryptedFolderMetadata.DecryptedFile(); + file1.initializationVector = "gKm3n+mJzeY26q4OfuZEqg=="; + file1.encrypted = data1; + file1.metadataKey = 0; + file1.authenticationTag = "PboI9tqHHX3QeAA22PIu4w=="; + + files.put("ia7OEEEyXMoRa1QWQk8r", file1); + + DecryptedFolderMetadata.Data data2 = new DecryptedFolderMetadata.Data(); + data2.key = "9dfzbIYDt28zTyZfbcll+g=="; + data2.filename = "test2.txt"; + data2.version = 1; + + DecryptedFolderMetadata.DecryptedFile file2 = new DecryptedFolderMetadata.DecryptedFile(); + file2.initializationVector = "hnJLF8uhDvDoFK4ajuvwrg=="; + file2.encrypted = data2; + file2.metadataKey = 0; + file2.authenticationTag = "qOQZdu5soFO77Y7y4rAOVA=="; + + files.put("n9WXAIXO2wRY4R8nXwmo", file2); + + return new DecryptedFolderMetadata(metadata1, files); + } + + private void cryptFile(String fileName, String md5, byte[] key, byte[] iv, byte[] expectedAuthTag) + throws Exception { + File file = getFile(fileName); + assertEquals(md5, EncryptionUtils.getMD5Sum(file)); + + EncryptionUtils.EncryptedFile encryptedFile = EncryptionUtils.encryptFile(file, key, iv); + + File encryptedTempFile = File.createTempFile("file", "tmp"); + FileOutputStream fileOutputStream = new FileOutputStream(encryptedTempFile); + fileOutputStream.write(encryptedFile.encryptedBytes); + fileOutputStream.close(); + + byte[] authenticationTag = decodeStringToBase64Bytes(encryptedFile.authenticationTag); + + // verify authentication tag + assertTrue(Arrays.equals(expectedAuthTag, authenticationTag)); + + byte[] decryptedBytes = EncryptionUtils.decryptFile(encryptedTempFile, key, iv, authenticationTag); + + File decryptedFile = File.createTempFile("file", "dec"); + FileOutputStream fileOutputStream1 = new FileOutputStream(decryptedFile); + fileOutputStream1.write(decryptedBytes); + fileOutputStream1.close(); + + assertEquals(md5, EncryptionUtils.getMD5Sum(decryptedFile)); + } + + private File getFile(String filename) throws IOException { + InputStream inputStream = getInstrumentation().getContext().getAssets().open(filename); + File temp = File.createTempFile("file", "file"); + FileUtils.copyInputStreamToFile(inputStream, temp); + + return temp; + } +} \ No newline at end of file diff --git a/src/gplay/AndroidManifest.xml b/src/gplay/AndroidManifest.xml index b32ab3b432..f24dfb4af7 100644 --- a/src/gplay/AndroidManifest.xml +++ b/src/gplay/AndroidManifest.xml @@ -18,7 +18,9 @@ --> + package="com.owncloud.android" + android:versionCode="20000052" + android:versionName="2.0.0-e2e-02"> . --> + package="com.owncloud.android" + android:versionCode="20000052" + android:versionName="2.0.0-e2e-02"> + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/setup_encryption_dialog.xml b/src/main/res/layout/setup_encryption_dialog.xml new file mode 100644 index 0000000000..9c095ea7dd --- /dev/null +++ b/src/main/res/layout/setup_encryption_dialog.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + diff --git a/src/main/res/menu/file_actions_menu.xml b/src/main/res/menu/file_actions_menu.xml index 719759655f..3deca1bc27 100644 --- a/src/main/res/menu/file_actions_menu.xml +++ b/src/main/res/menu/file_actions_menu.xml @@ -107,6 +107,18 @@ app:showAsAction="never" android:showAsAction="never" android:orderInCategory="1" /> + + Mit verschiedenen Kontos verbinden Automatisches Hochladen von Bildern & Videos Kalender & Kontakte mit DAVdroid synchronisieren - - +Keine Information verfügbar! + Keine neue Version verfügbar! + + Verzeichnis nicht leer! + Fehler beim entschlüsseln. Falsches Passwort?? + Entschlüsseln… + Hole Schlüssel… + Zum entschlüsseln des privaten Schlüssels bitte Passwort eingeben! + Erstelle neue Schlüssel… + Dieser 12 Worte Satz ist wie ein starkes Passwort: Es emöglicht Zugang zu den verschlüsselten Dateien. Bitte notieren Sie sich den Satz und bewahren ihn sicher auf. + Verschlüsselung einrichten + Notieren Sie sich den Verschlüsselungssatz. + Verschlüsselung erst ab KitKat unterstützt. + Verschlüsselung einrichten + Passwort… + diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml index fc56de5202..2179aebbf4 100644 --- a/src/main/res/values/colors.xml +++ b/src/main/res/values/colors.xml @@ -38,6 +38,7 @@ #757575 #555555 + #EEEEEE diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index dacf302e33..9be8b9be17 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -268,6 +268,8 @@ Set as favorite Unset favorite Available offline + Set as encrypted + Unset encryption Rename Delete Do you really want to delete %1$s? @@ -753,4 +755,17 @@ Add name, picture and contact details on your profile page. Background image of drawer header Account icon + + Folder not empty! + Error while decrypting. Wrong password? + Decrypting… + Retrieving keys… + Please enter password to decrypt private key! + Generating new keys… + This 12 word phrase is like a very strong password: It provides full access to view and use your encrypted files. Please write it down and keep it somewhere safe. + Set up encryption + Note your encryption passphrase + Encryption not supported before KitKat. + Set up encryption + Password… diff --git a/src/modified/AndroidManifest.xml b/src/modified/AndroidManifest.xml index 77b4e52b6d..6a7ae040e1 100644 --- a/src/modified/AndroidManifest.xml +++ b/src/modified/AndroidManifest.xml @@ -18,7 +18,9 @@ --> + package="com.owncloud.android" + android:versionCode="20000052" + android:versionName="2.0.0-e2e-02"> . + */ + +package com.owncloud.android.utils; + +import android.os.Build; +import android.support.annotation.RequiresApi; + +import com.google.gson.reflect.TypeToken; +import com.owncloud.android.datamodel.DecryptedFolderMetadata; + +import org.junit.Test; + +import java.util.HashMap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +@RequiresApi(api = Build.VERSION_CODES.KITKAT) +public class EncryptionTest { + private String encryptedString = "{\"metadata\":{\"encrypted\":\"np1sIwoAFCb/vRqV/jWOIe1UtyVO02EJhvPoh3VwcZuiSbDjwQO5QHUWtKXpHLyX6wfbkRX6nr8mSG0+HhLRud1t126UMxQK5BNINu99WlzPMa5PaKhTXlpuRUf3tR6PTQ\\u003d\\u003d\",\"initializationVector\":" + + "\"kahzfT4u86Knc+e3\",\"sharing\":{\"recipient\":{\"blah@schiessle.org\":\"PUBLIC KEY\"," + + "\"bjoern@schiessle.org\":\"PUBLIC KEY\"},\"signature\":\"HMACOFRECIPIENTANDNEWESTMETADATAKEY\"}," + + "\"version\":1},\"files\":{\"ia7OEEEyXMoRa1QWQk8r\":{\"encrypted\":\"yl52TIccvo62LezCaFjQFJs7a1Q281pOuj59oNXMX7ti+7+h1SjK1AAk1HuwT+CI7BT64+R0ZLgyR/vBPjWvAQuxi9JWgsCjFMX91Mv2m2zI/bNQCarczOfnmf4FZ3Nv6yPLSjShmfQzemQ99Z3g7UHyrZ6pKT18m17IueJHF3V5kOhd9vcH\",\"metadataKey\":0," + + "\"initializationVector\":\"+mHu52HyZq+pAAIN\"}," + + "\"n9WXAIXO2wRY4R8nXwmo\":{\"encrypted\":\"Z9YTAgY/0YqKQlDwiqENcZRRupjgmJ1f0bTy0hOHP2/mHxFtoHCftT4STvt21OJMx8wF6V3cquQIGJ976WxkhA4SQxaQNpznhm1W9e8y+B5x8QnxSasYnOSFtZ/xVgQq6IZRjvYdPo7rvZk49hnqkwnUyvqtCj14aCE42qoxVZCd9M6XaZEBTA\\u003d\\u003d\",\"metadataKey\":0,\"initializationVector\":" + + "\"sOFd17hCKWIv0gyB\"}}}"; + + private String decryptedString = "{\"metadata\":{\"encrypted\":{\"metadataKeys\":{\"0\":" + + "\"s4k4LPDpxoO53TKwem3Lo1\",\"2\":\"…\",\"3\":\"NEWESTMETADATAKEY\"}},\"initializationVector\":" + + "\"kahzfT4u86Knc+e3\",\"sharing\":{\"recipient\":{\"blah@schiessle.org\":\"PUBLIC KEY\"," + + "\"bjoern@schiessle.org\":\"PUBLIC KEY\"},\"signature\":\"HMACOFRECIPIENTANDNEWESTMETADATAKEY\"}," + + "\"version\":1},\"files\":{\"ia7OEEEyXMoRa1QWQk8r\":{\"encrypted\":{\"key\":" + + "\"jtboLmgGR1OQf2uneqCVHpklQLlIwWL5TXAQ0keK\",\"filename\":\"test.txt\",\"authenticationTag\":" + + "\"HMAC of file\",\"version\":1},\"metadataKey\":0,\"initializationVector\":\"+mHu52HyZq+pAAIN\"}," + + "\"n9WXAIXO2wRY4R8nXwmo\":{\"encrypted\":{\"key\":\"s4k4LPDpxoO53TKwem3Lo1yJnbNUYH2KLrSFT8Ea\"," + + "\"filename\":\"test2.txt\",\"authenticationTag\":\"HMAC of file\",\"version\":1}," + + "\"metadataKey\":0,\"initializationVector\":\"sOFd17hCKWIv0gyB\"}}}"; + + private String privateKey = "TUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFEV0FKMDNuNlBLVDNJWlZTT1paSzgyd3dqRTVWSW4vclZ5L0VLbmsyMVgzQ1dPbkdsb0ZrUXdiSWFsYjlkVWNRcmQzM250NVFoMmhJeXM5TkdsMjdMUmhreU1qemYzaFdzbnljSVhZQURVSExweGJZbWpJRzRjbWlNQnI4ckhjVFEvM0dUTlBKWG00ZzUwQlZEOXZlRThoMkQrTXdIQXlTSkxZcG5FaDBKWExES0pvVnpQYldxdVZVdHZNMmdmWVFHNFgwbS9kamR5VzJ4ZGN2UkpZeUtpWDZ3UmY3U3ViaWJkR1V1MHgxckhRdGhnM1dtaXdLd09NR2pQQ3oxRDAwMC9vWjZnckRHcW03TG5XMVZaN0VNTWtWWjVjVlc4NlpGQ2lrcXNtcDd1MVg1YjdCTzBiaThyV2Z0Zm8zZnJaOUptdmkvZHpmeXo2RFRFOWIrZU9CNzlBZ01CQUFFQ2dnRUJBSURYYzlCR1k5VnRDWFBwQjNyVjNJdXExcis4bFQ4UklldHRweSsvR2dqWXVSL29XYW5hSmduRmZUZGpZNUFxVXZHTUY1dTcxZUdOSWlrTGFLRmo2WUF1VEM0Z0dBRUZLYU9WM0M0NGxhY2UrTDFMeHA4WTZsSjhGbkZ3aGpTWG1tNk1ZWUFUWnVqUDF3WFJJWmJ6V0FVYU9MSXl3VzV4YWgxYTZ0c2cyRGNrZ2h3YVoxMURiRTVkNEpNNXl0Q1J6YmZzWTA3cElrUmU4WlFLcm1sMXU0THlsWXVHVHBDZGMwSnNXdUx3d1NWbm8vK056RURiVVNKZThIRmpnM1k3L2JkajgzNE9INzBtQWdBVUdEQTJqQ1BqY1hzNHJnN25udkhuQm5WcVFaemFvVWhHYzFOak9pZzMwNitUV25OL1JUNWc0TThucDNuMXZETWF2dVBiM0lFQ2dZRUE2NVpQV243UlYxZVVVS20zcVRUN1BSa3NuLzZDVWdFaFQ1WDloc0c3cXJXMUVlalhuODE2S1A0R3VsaDc1S0dhQ3hUVmdGZDhHdHF1QVU3MGdaKzB5MHVGd2hTdGtWN1A0K2xlUXlYSmxtNDNWNU9zT3Jxb25ocTZyOCthZ3lGbnNuOEhGd3lVcG1VM0FqR2tXVUNzYWFNdWM4SEt0ajU4RkdGRlh6K3ZlcDBDZ1lFQTZJdUZVZmljLytpUXpsVjczTDdWSS9kRjJNcFRPeHVKb1c4MmM1OE1tdEhGMFFQSktlYU5YVGJuYzluUXZ0aFBWM3c1eEZWc3FkN3pKOEM4ZkJ5S21Xc2ZLOU1abGQvY3RZTk9EMTNLWlM2WTNvWXpGVU5ZRzFPSEhpamNZT3RSWUsvY3k0cS9SRnExQ0pZVCtPaEVTOXlmeGFqZlZXdzFPdGxNZGNuNlYrRUNnWUFwNlN5bTBjYldQZnRodWorMU4zcTJyT0xXZDhXaFp4Z1ErNE1GMVROWXRFakpMZDRtVEx5OXpDdFFQV3VWQ2ZiSW4rVTNsdGk2UWtzUWFvWnZCUVY1NFM2amoyQXRhMnVhaFNyQzBWY2lqdXNEaG43dVY4U2xrK1hBWHpPQ3ZvK2ZIcUFaUnFDdlZYUkt6S0FMVE1rZlpldGVwb3cwamJzdk9QckpiaC8rdFFLQmdIQUFpd1R4RmtVWGNXOC9zdm1lSERCSGI2ZTd3eHlyNWIwUVFJeXRwVGVJSTV2SkZBR1BYclR2dGNpUnR6M0VGMnJPbFZBZnlNZUViMTdOTUxzaVVBc1draHZjZiswMHRpdmlneDFaa2hycnQ0c3QzYnEzQmQrYmVtK25SSVdWc1VzOVNMM3NKTFU2Yndra3A1ZngzcnNmRndEdmxpbWhoWDNEblZUNkpBNWhBb0dBZUtSZGRBVFAxZmVDL1pIZWE0VWh1MEVIencrY2xraDBrdjFDQkNHNnhjM002Y245SzFUNlIwMHRZYlFjS1JvZHJ1ZnBZNUNOL3V2Zyt0VWRucTUxRFhwTU5tbDVMdGpRYnV3MktuZ1F1ZG9NQ1NFMHMzT0dnaGJqMzZtbEVsRERjUGxLaE0rb1hyaVRYdXUvWmljclZqcGxTcWxuSlN2aDh6STJGNFBLaDlnPQ=="; + + private String publicKey = "-----BEGIN CERTIFICATE-----\n" + + "MIIDpzCCAo+gAwIBAgIBADANBgkqhkiG9w0BAQUFADBuMRowGAYDVQQDDBF3d3cu\n" + + "bmV4dGNsb3VkLmNvbTESMBAGA1UECgwJTmV4dGNsb3VkMRIwEAYDVQQHDAlTdHV0\n" + + "dGdhcnQxGzAZBgNVBAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzELMAkGA1UEBhMCREUw\n" + + "HhcNMTcwOTA0MTEwNTQyWhcNMzcwODMwMTEwNTQyWjBuMRowGAYDVQQDDBF3d3cu\n" + + "bmV4dGNsb3VkLmNvbTESMBAGA1UECgwJTmV4dGNsb3VkMRIwEAYDVQQHDAlTdHV0\n" + + "dGdhcnQxGzAZBgNVBAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzELMAkGA1UEBhMCREUw\n" + + "ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWAJ03n6PKT3IZVSOZZK82\n" + + "wwjE5VIn/rVy/EKnk21X3CWOnGloFkQwbIalb9dUcQrd33nt5Qh2hIys9NGl27LR\n" + + "hkyMjzf3hWsnycIXYADUHLpxbYmjIG4cmiMBr8rHcTQ/3GTNPJXm4g50BVD9veE8\n" + + "h2D+MwHAySJLYpnEh0JXLDKJoVzPbWquVUtvM2gfYQG4X0m/djdyW2xdcvRJYyKi\n" + + "X6wRf7SubibdGUu0x1rHQthg3WmiwKwOMGjPCz1D000/oZ6grDGqm7LnW1VZ7EMM\n" + + "kVZ5cVW86ZFCikqsmp7u1X5b7BO0bi8rWftfo3frZ9Jmvi/dzfyz6DTE9b+eOB79\n" + + "AgMBAAGjUDBOMB0GA1UdDgQWBBS3zNF86LEZFT/KDdscr4ZJEisXqDAfBgNVHSME\n" + + "GDAWgBS3zNF86LEZFT/KDdscr4ZJEisXqDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3\n" + + "DQEBBQUAA4IBAQCPMu5AKNlh0gTr/k9Vc7RJ01uF07D+lTPGIErfW7+qXO21kXyw\n" + + "+w8sxw+e1B/gah/bxotfO7ZuOhs49d8QRUzPy/miBFaZXfjfiqs7UXSDQ6oUbX3a\n" + + "X9eTFMHDcsSUbyqhwn2cghmPJEhE10mtH2DJNPqDYvdpekJ6sEUVaqx63CD3nxcl\n" + + "7fXh0IfmvDQOrSBszRqPY8pvnZJIEwqaENPk9Vgbzs8oXVstKl6wCqM0B36tmhBl\n" + + "f6Dz/EhriF3Rq9w5RrWZOpS6XAWwRpyHPN+lKPa321dF6EEsnvhX8G3UbLbr0uEg\n" + + "dR8lPhuKejU/Ds0ARwQGmFXFzidFNZL5ymos\n" + + "-----END CERTIFICATE-----"; + + @Test + public void deserializeJSON() { + String file = "ia7OEEEyXMoRa1QWQk8r"; + DecryptedFolderMetadata metadata = EncryptionUtils.deserializeJSON(decryptedString, + new TypeToken() {}); + + assertEquals("jtboLmgGR1OQf2uneqCVHpklQLlIwWL5TXAQ0keK", metadata.files.get(file).encrypted.key); + assertEquals("+mHu52HyZq+pAAIN", metadata.files.get(file).initializationVector); + } + + @Test + public void serializeJSON() { + try { + HashMap metadataKeys = new HashMap<>(); + metadataKeys.put(0, EncryptionUtils.encryptStringAsymmetric("s4k4LPDpxoO53TKwem3Lo1", publicKey)); + metadataKeys.put(1, EncryptionUtils.encryptStringAsymmetric("Q3ZobVJHbTlkK1VHT0g3ME", publicKey)); + metadataKeys.put(2, EncryptionUtils.encryptStringAsymmetric("lkK1VHT0g3ME3TKwem3Lo1", publicKey)); + DecryptedFolderMetadata.Encrypted encrypted = new DecryptedFolderMetadata.Encrypted(); + encrypted.metadataKeys = metadataKeys; + + DecryptedFolderMetadata.Metadata metadata1 = new DecryptedFolderMetadata.Metadata(); + metadata1.metadataKeys = metadataKeys; + metadata1.version = 1; + + DecryptedFolderMetadata.Sharing sharing = new DecryptedFolderMetadata.Sharing(); + sharing.signature = "HMACOFRECIPIENTANDNEWESTMETADATAKEY"; + HashMap recipient = new HashMap<>(); + recipient.put("blah@schiessle.org", "PUBLIC KEY"); + recipient.put("bjoern@schiessle.org", "PUBLIC KEY"); + sharing.recipient = recipient; + metadata1.sharing = sharing; + + HashMap files = new HashMap<>(); + + DecryptedFolderMetadata.Data data1 = new DecryptedFolderMetadata.Data(); + data1.key = "jtboLmgGR1OQf2uneqCVHpklQLlIwWL5TXAQ0keK"; + data1.filename = "test.txt"; + data1.version = 1; + + DecryptedFolderMetadata.DecryptedFile file1 = new DecryptedFolderMetadata.DecryptedFile(); + file1.initializationVector = "+mHu52HyZq+pAAIN"; + file1.encrypted = data1; + file1.metadataKey = 0; + file1.authenticationTag = "HMAC of file"; + + files.put("ia7OEEEyXMoRa1QWQk8r", file1); + + DecryptedFolderMetadata.Data data2 = new DecryptedFolderMetadata.Data(); + data2.key = "s4k4LPDpxoO53TKwem3Lo1yJnbNUYH2KLrSFT8Ea"; + data2.filename = "test2.txt"; + data2.version = 1; + + DecryptedFolderMetadata.DecryptedFile file2 = new DecryptedFolderMetadata.DecryptedFile(); + file2.initializationVector = "sOFd17hCKWIv0gyB"; + file2.encrypted = data2; + file2.metadataKey = 0; + file2.authenticationTag = "HMAC of file"; + + files.put("n9WXAIXO2wRY4R8nXwmo", file2); + + DecryptedFolderMetadata metadata = new DecryptedFolderMetadata(metadata1, files); + + // serialize + assertEquals(decryptedString, EncryptionUtils.serializeJSON(metadata)); + } catch (Exception e) { + e.printStackTrace(); + fail(); + } + } +} \ No newline at end of file diff --git a/src/test/java/com/owncloud/android/utils/ErrorMessageAdapterUnitTest.java b/src/test/java/com/owncloud/android/utils/ErrorMessageAdapterUnitTest.java index 9c232f3ea9..b00489dab5 100644 --- a/src/test/java/com/owncloud/android/utils/ErrorMessageAdapterUnitTest.java +++ b/src/test/java/com/owncloud/android/utils/ErrorMessageAdapterUnitTest.java @@ -21,8 +21,10 @@ package com.owncloud.android.utils; +import android.accounts.Account; import android.content.res.Resources; +import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; @@ -65,10 +67,12 @@ public class ErrorMessageAdapterUnitTest { when(mMockResources.getString(R.string.forbidden_permissions_delete)) .thenReturn(MOCK_TO_DELETE); + Account account = new Account("name", MainApp.getAccountType()); + // ... when method under test is called ... String errorMessage = ErrorMessageAdapter.getErrorCauseMessage( new RemoteOperationResult(RemoteOperationResult.ResultCode.FORBIDDEN), - new RemoveFileOperation(PATH_TO_DELETE, false), + new RemoveFileOperation(PATH_TO_DELETE, false, account, MainApp.getAppContext()), mMockResources );