Skip to content

Commit 2280fac

Browse files
committed
PR Feedback
1 parent b46e2ca commit 2280fac

File tree

4 files changed

+30
-30
lines changed

4 files changed

+30
-30
lines changed

key-value/key-value-aio/src/key_value/aio/wrappers/encryption/base.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
_ENCRYPTION_VERSION_KEY = "__encryption_version__"
1616
_ENCRYPTION_VERSION = 1
1717

18-
EncryptionFn = Callable[[bytes, int], bytes]
18+
EncryptionFn = Callable[[bytes], bytes]
1919
DecryptionFn = Callable[[bytes, int], bytes]
2020

2121

@@ -52,15 +52,15 @@ def __init__(
5252
5353
Args:
5454
key_value: The store to wrap.
55-
encryption_fn: The encryption function to use. A callable that takes bytes and an
56-
encryption version int and returns encrypted bytes.
55+
encryption_fn: The encryption function to use. A callable that takes bytes and returns encrypted bytes.
5756
decryption_fn: The decryption function to use. A callable that takes bytes and an
5857
encryption version int and returns decrypted bytes.
5958
encryption_version: The encryption version to use.
6059
raise_on_decryption_error: Whether to raise an exception if decryption fails. Defaults to True.
6160
"""
6261
self.key_value: AsyncKeyValue = key_value
6362
self.raise_on_decryption_error: bool = raise_on_decryption_error
63+
6464
self.encryption_version: int = encryption_version
6565

6666
self._encryption_fn: EncryptionFn = encryption_fn
@@ -81,7 +81,7 @@ def _encrypt_value(self, value: dict[str, Any]) -> dict[str, Any]:
8181
json_bytes: bytes = json_str.encode(encoding="utf-8")
8282

8383
# Encrypt with Fernet
84-
encrypted_bytes: bytes = self._encryption_fn(json_bytes, self.encryption_version)
84+
encrypted_bytes: bytes = self._encryption_fn(json_bytes)
8585

8686
# Encode to base64 for storage in dict (though Fernet output is already base64)
8787
base64_str: str = base64.b64encode(encrypted_bytes).decode(encoding="ascii")
@@ -96,17 +96,19 @@ def _decrypt_value(self, value: dict[str, Any] | None) -> dict[str, Any] | None:
9696
if value is None:
9797
return None
9898

99-
# Check if it's encrypted
10099
if _ENCRYPTED_DATA_KEY not in value:
101100
return value
102101

103-
# Extract encrypted data
104102
base64_str = value[_ENCRYPTED_DATA_KEY]
105103
if not isinstance(base64_str, str):
106104
# Corrupted data, return as-is
107105
msg = f"Corrupted data: expected str, got {type(base64_str)}"
108106
raise TypeError(msg)
109107

108+
if _ENCRYPTION_VERSION_KEY not in value:
109+
msg = "Corrupted data: missing encryption version"
110+
raise TypeError(msg)
111+
110112
encryption_version = value[_ENCRYPTION_VERSION_KEY]
111113
if not isinstance(encryption_version, int):
112114
# Corrupted data, return as-is

key-value/key-value-aio/src/key_value/aio/wrappers/encryption/fernet.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,21 @@ def __init__(
5252
salt: str | None = None,
5353
raise_on_decryption_error: bool = True,
5454
) -> None:
55-
if fernet is not None and source_material is not None:
56-
msg = "Cannot provide both fernet and source_material"
57-
raise ValueError(msg)
55+
if fernet is not None: # noqa: SIM102
56+
if source_material or salt:
57+
msg = "Cannot provide both fernet and source_material and salt"
58+
raise ValueError(msg)
5859

5960
if fernet is None:
60-
if source_material is None:
61+
if not source_material:
6162
msg = "Must provide either fernet or source_material"
6263
raise ValueError(msg)
63-
if salt is None:
64+
if not salt:
6465
msg = "Must provide a salt"
6566
raise ValueError(msg)
6667
fernet = Fernet(key=_generate_encryption_key(source_material=source_material, salt=salt))
6768

68-
def encrypt_with_fernet(data: bytes, encryption_version: int) -> bytes:
69-
if encryption_version > self.encryption_version:
70-
msg = f"Encryption failed: encryption version {encryption_version} is not supported"
71-
raise EncryptionVersionError(msg)
69+
def encrypt_with_fernet(data: bytes) -> bytes:
7270
return fernet.encrypt(data)
7371

7472
def decrypt_with_fernet(data: bytes, encryption_version: int) -> bytes:

key-value/key-value-sync/src/key_value/sync/code_gen/wrappers/encryption/base.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
_ENCRYPTION_VERSION_KEY = "__encryption_version__"
1919
_ENCRYPTION_VERSION = 1
2020

21-
EncryptionFn = Callable[[bytes, int], bytes]
21+
EncryptionFn = Callable[[bytes], bytes]
2222
DecryptionFn = Callable[[bytes, int], bytes]
2323

2424

@@ -55,15 +55,15 @@ def __init__(
5555
5656
Args:
5757
key_value: The store to wrap.
58-
encryption_fn: The encryption function to use. A callable that takes bytes and an
59-
encryption version int and returns encrypted bytes.
58+
encryption_fn: The encryption function to use. A callable that takes bytes and returns encrypted bytes.
6059
decryption_fn: The decryption function to use. A callable that takes bytes and an
6160
encryption version int and returns decrypted bytes.
6261
encryption_version: The encryption version to use.
6362
raise_on_decryption_error: Whether to raise an exception if decryption fails. Defaults to True.
6463
"""
6564
self.key_value: KeyValue = key_value
6665
self.raise_on_decryption_error: bool = raise_on_decryption_error
66+
6767
self.encryption_version: int = encryption_version
6868

6969
self._encryption_fn: EncryptionFn = encryption_fn
@@ -84,7 +84,7 @@ def _encrypt_value(self, value: dict[str, Any]) -> dict[str, Any]:
8484
json_bytes: bytes = json_str.encode(encoding="utf-8")
8585

8686
# Encrypt with Fernet
87-
encrypted_bytes: bytes = self._encryption_fn(json_bytes, self.encryption_version)
87+
encrypted_bytes: bytes = self._encryption_fn(json_bytes)
8888

8989
# Encode to base64 for storage in dict (though Fernet output is already base64)
9090
base64_str: str = base64.b64encode(encrypted_bytes).decode(encoding="ascii")
@@ -96,17 +96,19 @@ def _decrypt_value(self, value: dict[str, Any] | None) -> dict[str, Any] | None:
9696
if value is None:
9797
return None
9898

99-
# Check if it's encrypted
10099
if _ENCRYPTED_DATA_KEY not in value:
101100
return value
102101

103-
# Extract encrypted data
104102
base64_str = value[_ENCRYPTED_DATA_KEY]
105103
if not isinstance(base64_str, str):
106104
# Corrupted data, return as-is
107105
msg = f"Corrupted data: expected str, got {type(base64_str)}"
108106
raise TypeError(msg)
109107

108+
if _ENCRYPTION_VERSION_KEY not in value:
109+
msg = "Corrupted data: missing encryption version"
110+
raise TypeError(msg)
111+
110112
encryption_version = value[_ENCRYPTION_VERSION_KEY]
111113
if not isinstance(encryption_version, int):
112114
# Corrupted data, return as-is

key-value/key-value-sync/src/key_value/sync/code_gen/wrappers/encryption/fernet.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,23 +42,21 @@ def __init__(
4242
salt: str | None = None,
4343
raise_on_decryption_error: bool = True,
4444
) -> None:
45-
if fernet is not None and source_material is not None:
46-
msg = "Cannot provide both fernet and source_material"
47-
raise ValueError(msg)
45+
if fernet is not None: # noqa: SIM102
46+
if source_material or salt:
47+
msg = "Cannot provide both fernet and source_material and salt"
48+
raise ValueError(msg)
4849

4950
if fernet is None:
50-
if source_material is None:
51+
if not source_material:
5152
msg = "Must provide either fernet or source_material"
5253
raise ValueError(msg)
53-
if salt is None:
54+
if not salt:
5455
msg = "Must provide a salt"
5556
raise ValueError(msg)
5657
fernet = Fernet(key=_generate_encryption_key(source_material=source_material, salt=salt))
5758

58-
def encrypt_with_fernet(data: bytes, encryption_version: int) -> bytes:
59-
if encryption_version > self.encryption_version:
60-
msg = f"Encryption failed: encryption version {encryption_version} is not supported"
61-
raise EncryptionVersionError(msg)
59+
def encrypt_with_fernet(data: bytes) -> bytes:
6260
return fernet.encrypt(data)
6361

6462
def decrypt_with_fernet(data: bytes, encryption_version: int) -> bytes:

0 commit comments

Comments
 (0)