Tomaz Canabrava and Roeland Jago Douma
9b74a596c6
Forbid to encrypt or decrypt a non-empty folder.
...
The specs forbid the encryption or decryption of a
non empty folder. so...
1 - check for the sync status, if it's not synced return
as there's no way that I can say that there's items on the
server right now without waiting for the sync to finish
2 - verify if the folder is empty locally
as the user could have send some files to the folder.
2018-06-04 15:33:01 +02:00
Tomaz Canabrava
7432d6a814
Merge branch 'master' into clientSideEncryptionV4
2018-04-10 16:18:58 +02:00
Tomaz Canabrava
b4b3e422de
Handle gracefully failures in file decryption
2018-03-27 09:18:54 +02:00
Tomaz Canabrava
ed6f56257e
Dont use new with QFiles.
2018-03-26 22:18:07 +02:00
Tomaz Canabrava
461aeca200
Do not crash when failing to decrypt the metadata
2018-03-26 22:02:46 +02:00
Tomaz Canabrava
6c88367ac6
Do not crash if there was an error encrypting the file.
2018-03-26 21:44:46 +02:00
Tomaz Canabrava
5fe9717598
Potentially fix crash acessing a deleted pointer.
2018-03-26 21:37:13 +02:00
Tomaz Canabrava
ec28465e01
Correctly handle systems without client side encryption
2018-03-26 20:51:14 +02:00
Tomaz Canabrava
11684682e6
Return empty metadata in case of error, Display error to the user.
2018-03-25 22:31:49 +02:00
Tomaz Canabrava
96115be0c6
Unlock folder in case of error
2018-03-25 21:54:08 +02:00
Tomaz Canabrava
7da0764b8d
Don't class what's not a class
2018-02-18 01:23:59 +01:00
Tomaz Canabrava
176a42a062
Return the error reported by openssl
2018-02-18 01:13:23 +01:00
Tomaz Canabrava
5faeca1b82
Move BIO2ByteArray to annonymous namespace
...
This has no use outside of the clientsidenecryption.cpp
2018-02-18 01:04:44 +01:00
Tomaz Canabrava
dcc9ac7d2e
[Buildfix] Fix build from last merge
2018-01-29 14:17:52 +01:00
Tomaz Canabrava
d24a1e542e
Merge branch 'master' into clientSideEncryptionV3
2018-01-29 14:06:12 +01:00
Tomaz Canabrava
f4a50e88f5
[CSE] Ignore renames for downloaded files.
...
- TODO: Fix the incorrect "filename has been removed" popup.
The file is not removed, just the popup shows.
2018-01-28 23:59:53 +01:00
Tomaz Canabrava
682bb2ad43
[CSE] Save the encrypted name relation on downloads
2018-01-28 23:50:12 +01:00
Tomaz Canabrava
d38e5e1529
[CSE] Bypass rename if it's e2e
...
The client tracks the files in server and locally, but the
names of the files differ in the server, but we do *not*
wanna rename the files to the server one, we wanna
keep it as is if it's an encrypted file.
2018-01-28 23:48:51 +01:00
Tomaz Canabrava
7b123650da
[CSE] Search for name, not mangled name.
2018-01-28 23:48:25 +01:00
Tomaz Canabrava
0c94142c97
[CSE] More debug output
2018-01-28 23:47:58 +01:00
Tomaz Canabrava
e8849a2cf9
[CSE] Save the relation of the file / encrypted file names on the db
2018-01-28 22:26:07 +01:00
Tomaz Canabrava
e9a7a56359
[CSE] Store the encrypted file name on the SyncFilePtr
2018-01-28 18:37:01 +01:00
Tomaz Canabrava
a003d216a5
[CSE] Implementation of the setE2eRelation
...
This call creates a new entry on the database for e2e.
2018-01-28 18:05:28 +01:00
Tomaz Canabrava
32eaaa0601
[CSE] GetMangledName implementation
2018-01-28 17:50:10 +01:00
Tomaz Canabrava
be817748f8
[CSE] Reset the new Queries on close
2018-01-28 17:46:20 +01:00
Tomaz Canabrava
b909bb6977
[CSE] Change the Database to handle Encrypted Files
...
Create a table to hold the information between the
real file name and the fake file name
2018-01-28 16:41:07 +01:00
Tomaz Canabrava
cae6bbc853
[CSE] Start the download process
2018-01-22 14:08:32 +01:00
Tomaz Canabrava
cf2fa2ea35
[CSE] Get the tag of the encrypted file to feed the metadata
...
Also, change the logging cattegory
2018-01-21 21:59:19 +01:00
Tomaz Canabrava
5d6817e165
[CSE] Save the tag while encrypting.
2018-01-21 21:49:24 +01:00
Tomaz Canabrava
261cedce3f
[CSE] Do not quit if encryption fails
...
It's much more reasonable to return failure and handle it.
2018-01-21 21:40:53 +01:00
Tomaz Canabrava
2d872f2a8d
[CSE] Add missing files
2018-01-21 21:26:05 +01:00
Tomaz Canabrava
009562da1e
[CSE] Remove lambas with lambdas
...
It's hard to reason with lambdas with lambdas, so transform
them into actuall signal / slot calls.
2018-01-21 21:25:06 +01:00
Tomaz Canabrava
d5a76ea70d
[CSE] Remove the DecryptionJob
...
Transform it into an Static function - it was blocking anyway
and this way it's easier to transform it into a thread in the
future.
2018-01-21 21:24:02 +01:00
Tomaz Canabrava
4a2d0ab9e9
[CSE] Move code to display minemonic out of the libsync
...
The libsync should not contain Qt Widget related code.
2018-01-21 19:50:40 +01:00
Tomaz Canabrava and GitHub
7d68fa17e7
Merge pull request #107 from dantti/clientSideEncryptionV3
...
Prepend "nextcloud" for all logging categories
2017-12-29 11:52:40 +01:00
Tomaz Canabrava and GitHub
c772857054
Merge pull request #106 from dantti/clientSideEncryptionV3
...
Fix URL in dialog that requests password
2017-12-28 13:08:33 +01:00
Tomaz Canabrava
efc039863b
[CSE] Tons of debugs.
2017-12-24 17:08:04 +01:00
Tomaz Canabrava
da9f1c412d
[CSE] Remove debug
2017-12-24 16:36:57 +01:00
Tomaz Canabrava
06c34ed617
[CSE] Assorted fixes
...
- Unlock the folder even on error
- Use the correct name of the file for upload
2017-12-24 16:30:39 +01:00
Tomaz Canabrava
60ef722b60
[CSE] Update the metadata when a file is being uploaded.
2017-12-22 23:05:39 +01:00
Tomaz Canabrava
e70bf44aaf
[CSE] Fix the generation of the data for the update Metadata
2017-12-22 22:39:45 +01:00
Tomaz Canabrava
124a7253a4
[CSE] Create job to Update Metadata
2017-12-22 22:02:16 +01:00
Tomaz Canabrava
b72113a53d
[CSE] Prepare the beginning of the upload.
...
I still need to send the metadata.
2017-12-21 00:35:23 +01:00
Tomaz Canabrava
df5fd3fbe6
[CSE] More debug output, fix input file path
2017-12-21 00:00:27 +01:00
Tomaz Canabrava
7be5f0a736
[CSE] Update the finished signal
2017-12-20 23:36:49 +01:00
Tomaz Canabrava
d87648c99a
[CSE] Use the metadata as pointer.
2017-12-20 23:30:51 +01:00
Tomaz Canabrava
25d58ccd58
Revert "Store metadata keys as keys"
...
This commit broke decryption.
This reverts commit b9f094cd94 .
2017-12-20 23:16:42 +01:00
Tomaz Canabrava
dd0528037d
[CSE] Generate a random name for the temporary file
2017-12-20 23:09:28 +01:00
Tomaz Canabrava
7e83f0591b
[CSE] Create the Encrypted File on Disk
2017-12-20 22:32:38 +01:00
Tomaz Canabrava
3760b86e07
[CSE] Mobe fileEncryption to a static function
...
and I'll move all of those to a namespace latter.
2017-12-20 22:28:01 +01:00
Tomaz Canabrava
20198c5c7b
Merge branch 'clientSideEncryptionV3' of github.com:nextcloud/client into clientSideEncryptionV3
2017-12-20 22:11:46 +01:00
Tomaz Canabrava
679bb1f18e
[CSE] Expose EncryptionHelper
2017-12-20 21:33:25 +01:00
Tomaz Canabrava
14b18b146d
Merge branch 'clientSideEncryptionV3' of github.com:nextcloud/client into clientSideEncryptionV3
2017-12-20 21:29:54 +01:00
Tomaz Canabrava
1e899f4172
[CSE] Do not create QPointer from raw pointers
2017-12-20 20:00:59 +01:00
Tomaz Canabrava
0347cf4e9e
[CSE] Store the sharing keys in memory
2017-12-20 19:40:58 +01:00
Tomaz Canabrava
ab89231ca2
[CSE] Remove unused debug
2017-12-20 00:25:56 +01:00
Tomaz Canabrava
d26ade1870
[CSE] Fix the result of the decryption
...
However the text still looks like encrypted.
2017-12-20 00:25:39 +01:00
Tomaz Canabrava
a1e6901ecc
[CSE] Decrypt correctly the metadata
...
There's a bug that's returning an empty bytearray, need to look
into that.
2017-12-20 00:20:27 +01:00
Tomaz Canabrava
494ae31de9
[CSE] Fix correct json object
2017-12-19 23:09:39 +01:00
Tomaz Canabrava
a02246dc65
[CSE] Fix Metadata bugs p1
...
The RFC was misleading, I took the chance to fix a few
inconsistencies regarding the QJsonDocument.
2017-12-19 22:47:05 +01:00
Tomaz Canabrava
5609a1dbe8
[CSE] Remove old debug code so I can focus.
2017-12-19 17:02:23 +01:00
Tomaz Canabrava
aa36cc4a5c
[CSE] Reduce probability of conflicts when rebasing
...
Creates a new file/class to handle upload,
propagateuploadencrypted.h/cpp. This should have all the logic to deal
with the encryption and upload.
2017-12-17 22:38:43 +01:00
Tomaz Canabrava
b9cdc8e922
[CSE] Fix the url to delete the metadata
2017-12-17 21:19:32 +01:00
Tomaz Canabrava
23f832caf4
[CSE] Code Cleanup
2017-12-17 19:19:44 +01:00
Tomaz Canabrava
7ef2489f1d
[CSE] Fix infoForFileId
...
We need to traverse the path recursivelly.
2017-12-17 19:14:34 +01:00
Tomaz Canabrava
ce41e3e42f
[CSE] Work the Set Decrypted Bit
2017-12-15 23:32:41 +01:00
Tomaz Canabrava
2e516dfc67
Merge branch 'clientSideEncryptionV3' of github.com:nextcloud/client into clientSideEncryptionV3
2017-12-15 15:05:51 +01:00
Tomaz Canabrava
250c8ff1bf
[CSE] Add job to delete metadata
...
This is needed for the correct functioning of the Set Folder
as Decrypted
2017-12-15 15:02:43 +01:00
Tomaz Canabrava
5607e27f20
[CSE] Actually save the http response result
2017-12-15 14:25:57 +01:00
Tomaz Canabrava
43332d3ac7
[CSE] Properly update UI status to encrypted / decrypted
2017-12-15 14:00:42 +01:00
Tomaz Canabrava
82c07236c1
[CSE] Add new method "infoForFolderId"
...
we need to query the model for the subfolderinfo, but we don't
have the model index, we have the folder id. this returns it.
2017-12-14 14:39:07 +01:00
Tomaz Canabrava
c592871f94
[CSE] Do not handle b64 inside of the decrypt function
...
the decrypt function should deal with the raw data always.
2017-12-13 16:37:52 +01:00
Tomaz Canabrava
9916583ffa
[CSE] More verbose output
2017-12-12 21:50:30 +01:00
Tomaz Canabrava
ea3558faf6
[CSE] Fix strings
2017-12-12 21:29:06 +01:00
Tomaz Canabrava
159c0e138f
[CSE] Add a DecryptAsync method
...
Also, cleanup a bit of the old calls. One particular difference
is that I used to set padding to 1 and it should actually be
PKCS1_OAEP_PADDING
2017-12-12 21:23:02 +01:00
Tomaz Canabrava
aca298ca64
[CSE] Be explicit that async encryption uses publicKey
2017-12-12 20:14:31 +01:00
Tomaz Canabrava
2127b2629d
[CSE] Move encryption related network jobs to its own file
...
Move encryption related network jobs to it's own file,
the original file was starting to be just way too big.
2017-12-12 19:36:47 +01:00
Tomaz Canabrava
f6f078d1ee
[CSE] Rename Variable
2017-12-12 16:15:05 +01:00
Tomaz Canabrava
ce37235cc4
[CSE] Retrieve the Private Key from the KeyChain
...
This fixes one thing and exposes a bug.
the MetadataKeys are not being correctly unencrypted.
2017-12-12 16:09:49 +01:00
Tomaz Canabrava
0a58ea76e5
[CSE] Start the work with an existing metadata
2017-12-12 15:35:53 +01:00
Tomaz Canabrava
e6f835d138
[CSE] Unlock the folder after a lock
...
This makes sure the folder will be unlocked for next tests
2017-12-12 11:26:54 +01:00
Tomaz Canabrava
33b1fcfe66
Merge branch 'master' into clientSideEncryptionV3
2017-12-12 10:46:43 +01:00
Tomaz Canabrava
0a83d3e743
[CSE] Fix reading the public key for the metadata
...
This broke when we started to use QSslKey and the Qt Keychain
framework.
2017-12-08 11:24:22 +01:00
Tomaz Canabrava
a08a32ceca
[CSE] Fetch the metadata for the upload.
2017-12-08 10:32:05 +01:00
Tomaz Canabrava
6745777ca3
[CSE] Save folder id and token for the lock
...
So we can unlock it later. - perhaps we should store this
on the disk or something, to make it harder to lose.
2017-12-08 10:19:56 +01:00
Tomaz Canabrava
70d562668c
[CSE] Add handling for side-by-side uploads.
2017-12-07 21:51:42 +01:00
Tomaz Canabrava
ccd8cff4db
[CSE] Try to lock repeteadly the folder if needed.
...
The upload is made in an event loop with more than one
upload at the same time, this confuses the hell out of the
folder locking mechanism.
We need to lock the folder and ask the other trials to try
again in a few seconds in the future to give time for the
uploader to actually upload the current file that's locking
the folder.
2017-12-07 21:31:20 +01:00
Tomaz Canabrava
9f678652f8
[CSE] Lock the folder to upload a file.
2017-12-07 20:52:54 +01:00
Tomaz Canabrava
76916b6c48
[CSE] Request the Folder ID.
2017-12-07 19:39:30 +01:00
Tomaz Canabrava
4878e824e5
[CSE] Fix reading encrypted status of folders.
2017-12-07 19:04:12 +01:00
Tomaz Canabrava
893ca66af8
[CSE] Fix indentation
...
Parts of the code are indented by spaces, other parts by tabs.
This needs to run in the whole codebase.
2017-12-07 18:12:25 +01:00
Tomaz Canabrava
19120fde9f
[CSE] Don't query for files on GetFolderEncryptStatusJob
...
The request for folders whas also replying for files.
2017-12-07 18:10:14 +01:00
Tomaz Canabrava
7fe4dd2163
[CSE] Renane GetFolderEncryptStatus to GetFolderEncryptStatusJob
...
it's a network job after all
2017-12-07 18:06:55 +01:00
Tomaz Canabrava
863e86138f
[CSE] Pass the folder to the GetEncryptionStatus
...
Sometimes we are only interested in folders.
2017-12-07 17:32:35 +01:00
Tomaz Canabrava
66aecb9626
[CSE] Handle normal uploads in CSE enabled instances
2017-12-04 22:45:10 +01:00
Tomaz Canabrava
6f35cbff6b
[CSE] Fetch the Folder information for encryption status
2017-12-04 22:27:13 +01:00
Tomaz Canabrava
387737d908
[CSE] Start to create the upload logic.
2017-12-04 21:33:43 +01:00
Tomaz Canabrava
8c4928d9f6
Merge branch 'uploadImprovements' into clientSideEncryptionV3
2017-12-03 18:15:33 +01:00
Tomaz Canabrava
35eb071874
[uploadImprovements] use the new struct on PropagateUploadNg
...
use the new struct on PropagateUploadNg to make the algorithm
more future proof.
2017-11-28 22:58:52 +01:00
Tomaz Canabrava
a64bd6059b
[uploadImprovements] fix struct hole
2017-11-28 22:22:37 +01:00