diff options
author | drebs <drebs@leap.se> | 2013-02-09 22:27:22 -0200 |
---|---|---|
committer | drebs <drebs@leap.se> | 2013-02-09 22:27:22 -0200 |
commit | c6c0e0aadfe248fb8d907d12fce063dad359a140 (patch) | |
tree | 0ba050997da935fc833fbf6041a64ecf8db26b69 /backends/leap_backend.py | |
parent | ac99a63c702fcca5b102a2e4e04416871c83347c (diff) | |
parent | e6f5027e42c8dbcde2a42cd48b9f7a54731fc10d (diff) |
Merge branch 'develop' into feature/soledad-api
Diffstat (limited to 'backends/leap_backend.py')
-rw-r--r-- | backends/leap_backend.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/backends/leap_backend.py b/backends/leap_backend.py index c0a22feb..c3c52ee6 100644 --- a/backends/leap_backend.py +++ b/backends/leap_backend.py @@ -20,6 +20,10 @@ class NoSoledadInstance(Exception): pass +class DocumentEncryptionFailed(Exception): + pass + + class LeapDocument(Document): """ Encryptable and syncable document. @@ -164,9 +168,17 @@ class LeapSyncTarget(HTTPSyncTarget): comma = ',' for doc, gen, trans_id in docs_by_generations: if doc.syncable: - # encrypt before sending to server. + # encrypt and verify before sending to server. + doc_content = doc.get_encrypted_json() + if doc_content == doc.get_json(): + raise DocumentEncryptionFailed + enc_doc = LeapDocument(doc.doc_id, doc.rev, + encrypted_json=doc_content, + soledad=self._soledad) + if doc.get_json() != enc_doc.get_json(): + raise DocumentEncryptionFailed size += prepare(id=doc.doc_id, rev=doc.rev, - content=doc.get_encrypted_json(), + content=doc_content, gen=gen, trans_id=trans_id) entries.append('\r\n]') size += len(entries[-1]) |