diff --git a/src/leap/soledad/client/_db/blobs/__init__.py b/src/leap/soledad/client/_db/blobs/__init__.py index cacfe638b2dee8e35b72751428e883af1b01193c..517cfad41ea149abc5b6b1e04bf01cb698fb3fa4 100644 --- a/src/leap/soledad/client/_db/blobs/__init__.py +++ b/src/leap/soledad/client/_db/blobs/__init__.py @@ -105,9 +105,11 @@ class DecrypterBuffer(object): real_size = self.decrypter.decrypted_content_size return self.decrypter.endStream(), real_size elif hasattr(self, 'raw_data'): - # Externally encrypted blob, see Incoming API specification + # blob was not symmetrically encrypted, see _make_decryptor() above return self.raw_data, self.raw_data.tell() else: + # the only case that can lead here is if the preamble was not + # completelly consumed by the pipe. msg = "Incomplete Blob: %s" % self.doc_info.doc_id raise RetriableTransferError(msg) diff --git a/tests/blobs/test_decrypter_buffer.py b/tests/blobs/test_decrypter_buffer.py index db8ca5fa4ae6ace7cf6a96ccf3ace631f32a3c95..6b4a744ffbd5554845f294c416a54f3c6856224e 100644 --- a/tests/blobs/test_decrypter_buffer.py +++ b/tests/blobs/test_decrypter_buffer.py @@ -88,7 +88,7 @@ class DecrypterBufferCase(unittest.TestCase): @defer.inlineCallbacks def test_incomplete_blob_decryption(self): # SCENARIO: Transport failed and close was called with incomplete data - # CASE 1: Incomplete blob of known encryption type + # CASE 2: Incomplete blob of known encryption type # OUTCOME: InvalidBlob. It's safer to assume the tag is invalid encrypted = (yield self.blob.encrypt()).getvalue() encrypted = encrypted[:-20] # 20 bytes missing