From c1a43ba4148a6a6f64af4ba7e43d0e79d49732e2 Mon Sep 17 00:00:00 2001 From: Saimon Michelson Date: Thu, 19 Feb 2026 17:22:50 -0500 Subject: [PATCH 1/2] ignore 16-byte MD5 digest at the beginning of an azure blob storage object add change-log indicating change in documentation --- cterasdk/direct/lib.py | 7 ++++++- docs/source/UserGuides/Miscellaneous/Changelog.rst | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/cterasdk/direct/lib.py b/cterasdk/direct/lib.py index 3343f82c..94c5c9da 100644 --- a/cterasdk/direct/lib.py +++ b/cterasdk/direct/lib.py @@ -1,5 +1,6 @@ import logging import asyncio +import urllib.parse from ..lib.retries import execute_with_retries from .types import Metadata, Block @@ -72,6 +73,10 @@ async def get_object(client, file_id, chunk): raise exception +def is_azure_object_storage(chunk): + return True if urllib.parse.urlparse(chunk.url).netloc.endswith('core.windows.net') else False + + async def decrypt_object(file_id, encrypted_object, encryption_key, chunk): """ Decrypt Encrypted Object. @@ -83,7 +88,7 @@ async def decrypt_object(file_id, encrypted_object, encryption_key, chunk): :rtype: bytes """ try: - return decrypt_block(encrypted_object, encryption_key) + return decrypt_block(encrypted_object[16:] if is_azure_object_storage(chunk) else encrypted_object, encryption_key) except DirectIOError: logger.error('Failed to decrypt block.') raise DecryptBlockError(file_id, chunk) diff --git a/docs/source/UserGuides/Miscellaneous/Changelog.rst b/docs/source/UserGuides/Miscellaneous/Changelog.rst index d57b10dd..69a1037a 100644 --- a/docs/source/UserGuides/Miscellaneous/Changelog.rst +++ b/docs/source/UserGuides/Miscellaneous/Changelog.rst @@ -1,6 +1,15 @@ Changelog ========= +2.20.30 +------- + +Bug Fixes +^^^^^^^^^ +* Update documentation to require :py:class:`cterasdk.core.types.UserAccount` in :py:class:`cterasdk.core.types.CloudFSFolderFindingHelper` +* Support downloading files from Azure Blob Storage via CTERA Direct I/O. + + 2.20.28 ------- From 10839f35edd1af1b4bc99efe0a4534758b5adf0d Mon Sep 17 00:00:00 2001 From: Saimon Michelson Date: Thu, 19 Feb 2026 17:31:09 -0500 Subject: [PATCH 2/2] update verification and remove redundant if statement --- cterasdk/direct/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cterasdk/direct/lib.py b/cterasdk/direct/lib.py index 94c5c9da..254a6534 100644 --- a/cterasdk/direct/lib.py +++ b/cterasdk/direct/lib.py @@ -74,7 +74,7 @@ async def get_object(client, file_id, chunk): def is_azure_object_storage(chunk): - return True if urllib.parse.urlparse(chunk.url).netloc.endswith('core.windows.net') else False + return urllib.parse.urlparse(chunk.url).netloc.endswith('core.windows.net') async def decrypt_object(file_id, encrypted_object, encryption_key, chunk):