Skip to content

Commit

Permalink
Fix encrypted large file upload
Browse files Browse the repository at this point in the history
  • Loading branch information
ppolewicz committed Mar 25, 2021
1 parent 6427bf2 commit 0cb5344
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 2 deletions.
3 changes: 1 addition & 2 deletions b2sdk/transfer/emerge/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,6 @@ def __init__(
large_file_id,
large_file_upload_state,
finished_parts=None,
destination_encryption: Optional[EncryptionSetting] = None,
):
super(LargeFileEmergeExecutionStepFactory, self).__init__(emerge_execution, emerge_part)
self.part_number = part_number
Expand All @@ -421,7 +420,7 @@ def create_upload_execution_step(self, stream_opener, stream_length=None, stream
self.large_file_upload_state,
stream_length=stream_length,
stream_sha1=stream_sha1,
finished_parts=self.finished_parts
finished_parts=self.finished_parts,
)


Expand Down
4 changes: 4 additions & 0 deletions b2sdk/transfer/outbound/copy_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,10 @@ def _copy_part(
EncryptionMode.SSE_B2,
)

# b2_copy_part doesn't need SSE-B2. Large file encryption is decided on b2_start_large_file.
if destination_encryption is not None and destination_encryption.mode == EncryptionMode.SSE_B2:
destination_encryption = None

# Check if this part was uploaded before
if finished_parts is not None and part_number in finished_parts:
# Report this part finished
Expand Down
5 changes: 5 additions & 0 deletions b2sdk/transfer/outbound/upload_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,11 @@ def _upload_part(
:param b2sdk.v1.EncryptionSetting encryption: encryption setting (``None`` if unknown)
"""
assert encryption is None or encryption.mode in (EncryptionMode.SSE_B2,)

# b2_upload_part doesn't need SSE-B2. Large file encryption is decided on b2_start_large_file.
if encryption is not None and encryption.mode == EncryptionMode.SSE_B2:
encryption = None

# Check if this part was uploaded before
if finished_parts is not None and part_number in finished_parts:
# Report this part finished
Expand Down

0 comments on commit 0cb5344

Please sign in to comment.