Skip to content

Commit 73fefdb

Browse files
fix(signature): validate signing_secret is a non-empty string
1 parent be8be5e commit 73fefdb

3 files changed

Lines changed: 52 additions & 0 deletions

File tree

slack_sdk/signature/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ def __init__(self, signing_secret: str, clock: Clock = Clock()):
2929
self.signing_secret = signing_secret
3030
self.clock = clock
3131

32+
@property
33+
def signing_secret(self) -> str:
34+
return self._signing_secret
35+
36+
@signing_secret.setter
37+
def signing_secret(self, value: str) -> None:
38+
if not isinstance(value, str):
39+
raise ValueError("signing_secret must be a string")
40+
if not value.strip():
41+
raise ValueError("signing_secret must not be empty.")
42+
self._signing_secret = value
43+
3244
def is_valid_request(
3345
self,
3446
body: Union[str, bytes],

tests/signature/test_signature_verifier.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,23 @@ def test_is_valid_none(self):
9797
self.assertFalse(verifier.is_valid(None, self.timestamp, None))
9898
self.assertFalse(verifier.is_valid(self.body, None, None))
9999
self.assertFalse(verifier.is_valid(None, None, None))
100+
101+
def test_invalid_signing_secret(self):
102+
with self.assertRaises(ValueError):
103+
SignatureVerifier("")
104+
with self.assertRaises(ValueError):
105+
SignatureVerifier(" ")
106+
with self.assertRaises(ValueError):
107+
SignatureVerifier(None)
108+
with self.assertRaises(ValueError):
109+
SignatureVerifier(123)
110+
with self.assertRaises(ValueError):
111+
SignatureVerifier(b"secret")
112+
113+
def test_invalid_signing_secret_reassignment(self):
114+
verifier = SignatureVerifier(self.signing_secret)
115+
with self.assertRaises(ValueError):
116+
verifier.signing_secret = ""
117+
with self.assertRaises(ValueError):
118+
verifier.signing_secret = None
119+
self.assertEqual(verifier.signing_secret, self.signing_secret)

tests/slack_sdk/signature/test_signature_verifier.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,23 @@ def test_is_valid_none(self):
9797
self.assertFalse(verifier.is_valid(None, self.timestamp, None))
9898
self.assertFalse(verifier.is_valid(self.body, None, None))
9999
self.assertFalse(verifier.is_valid(None, None, None))
100+
101+
def test_invalid_signing_secret(self):
102+
with self.assertRaises(ValueError):
103+
SignatureVerifier("")
104+
with self.assertRaises(ValueError):
105+
SignatureVerifier(" ")
106+
with self.assertRaises(ValueError):
107+
SignatureVerifier(None)
108+
with self.assertRaises(ValueError):
109+
SignatureVerifier(123)
110+
with self.assertRaises(ValueError):
111+
SignatureVerifier(b"secret")
112+
113+
def test_invalid_signing_secret_reassignment(self):
114+
verifier = SignatureVerifier(self.signing_secret)
115+
with self.assertRaises(ValueError):
116+
verifier.signing_secret = ""
117+
with self.assertRaises(ValueError):
118+
verifier.signing_secret = None
119+
self.assertEqual(verifier.signing_secret, self.signing_secret)

0 commit comments

Comments
 (0)