Skip to content

Commit e6be950

Browse files
committed
Handle str inputs for encryption_secret
Signed-off-by: Madhav Kandukuri <madhav165@gmail.com>
1 parent f9fc8df commit e6be950

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

Containerfile.lite

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ SHELL ["/bin/bash", "-euo", "pipefail", "-c"]
7676

7777
ARG PYTHON_VERSION
7878
ARG ROOTFS_PATH
79-
ARG TARGETPLATFORM
79+
ARG TARGETPLATFORM=linux/amd64
8080
ARG GRPC_PYTHON_BUILD_SYSTEM_OPENSSL='False'
8181

8282
# ----------------------------------------------------------------------------

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2658,7 +2658,7 @@ docker-dev:
26582658
@$(MAKE) container-build CONTAINER_RUNTIME=docker CONTAINER_FILE=Containerfile
26592659

26602660
docker:
2661-
@$(MAKE) container-build CONTAINER_RUNTIME=docker CONTAINER_FILE=Containerfile
2661+
@$(MAKE) container-build CONTAINER_RUNTIME=docker CONTAINER_FILE=Containerfile.lite
26622662

26632663
docker-prod:
26642664
@DOCKER_CONTENT_TRUST=1 $(MAKE) container-build CONTAINER_RUNTIME=docker CONTAINER_FILE=Containerfile.lite

mcpgateway/services/encryption_service.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import json
1616
import logging
1717
import os
18-
from typing import Optional
18+
from typing import Optional, Union
1919

2020
# Third-Party
2121
from argon2.low_level import hash_secret_raw, Type
@@ -45,7 +45,7 @@ class EncryptionService:
4545
False
4646
"""
4747

48-
def __init__(self, encryption_secret: SecretStr, time_cost: Optional[int] = None, memory_cost: Optional[int] = None, parallelism: Optional[int] = None, hash_len: int = 32, salt_len: int = 16):
48+
def __init__(self, encryption_secret: Union[SecretStr, str], time_cost: Optional[int] = None, memory_cost: Optional[int] = None, parallelism: Optional[int] = None, hash_len: int = 32, salt_len: int = 16):
4949
"""Initialize the encryption handler.
5050
5151
Args:
@@ -56,7 +56,12 @@ def __init__(self, encryption_secret: SecretStr, time_cost: Optional[int] = None
5656
hash_len: Length of the derived key
5757
salt_len: Length of the salt
5858
"""
59-
self.encryption_secret = encryption_secret.get_secret_value().encode()
59+
# Handle both SecretStr and plain string for backwards compatibility
60+
if isinstance(encryption_secret, SecretStr):
61+
self.encryption_secret = encryption_secret.get_secret_value().encode()
62+
else:
63+
# If a plain string is passed, use it directly (for testing/legacy code)
64+
self.encryption_secret = str(encryption_secret).encode()
6065
self.time_cost = time_cost or getattr(settings, "argon2id_time_cost", 3)
6166
self.memory_cost = memory_cost or getattr(settings, "argon2id_memory_cost", 65536)
6267
self.parallelism = parallelism or getattr(settings, "argon2id_parallelism", 1)
@@ -156,11 +161,11 @@ def is_encrypted(self, text: str) -> bool:
156161
return False
157162

158163

159-
def get_encryption_service(encryption_secret: SecretStr) -> EncryptionService:
164+
def get_encryption_service(encryption_secret: Union[SecretStr, str]) -> EncryptionService:
160165
"""Get an EncryptionService instance.
161166
162167
Args:
163-
encryption_secret: Secret key for encryption/decryption
168+
encryption_secret: Secret key for encryption/decryption (SecretStr or plain string)
164169
165170
Returns:
166171
EncryptionService instance
@@ -169,5 +174,8 @@ def get_encryption_service(encryption_secret: SecretStr) -> EncryptionService:
169174
>>> enc = get_encryption_service(SecretStr('k'))
170175
>>> isinstance(enc, EncryptionService)
171176
True
177+
>>> enc2 = get_encryption_service('plain-key')
178+
>>> isinstance(enc2, EncryptionService)
179+
True
172180
"""
173181
return EncryptionService(encryption_secret)

0 commit comments

Comments
 (0)