Skip to content

Commit 7734f60

Browse files
authored
Switch body validator to use hex instead of base64 (#453)
1 parent 53c6684 commit 7734f60

File tree

2 files changed

+8
-18
lines changed

2 files changed

+8
-18
lines changed

tests/unit/test_request_validator.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ def setUp(self):
2323
}
2424
self.expected = "RSOYDt4T1cUTdK1PDd93/VVr8B8="
2525
self.body = "{\"property\": \"value\", \"boolean\": true}"
26-
self.bodyHash = "Ch/3Y02as7ldtcmi3+lBbkFQKyg6gMfPGWMmMvluZiA="
27-
self.encodedBodyHash = self.bodyHash.replace("+", "%2B").replace("=", "%3D")
28-
self.uriWithBody = self.uri + "&bodySHA256=" + self.encodedBodyHash
26+
self.bodyHash = "0a1ff7634d9ab3b95db5c9a2dfe9416e41502b283a80c7cf19632632f96e6620"
27+
self.uriWithBody = self.uri + "&bodySHA256=" + self.bodyHash
2928

3029
def test_compute_signature_bytecode(self):
3130
expected = b(self.expected)
@@ -34,22 +33,16 @@ def test_compute_signature_bytecode(self):
3433
utf=False)
3534
assert_equal(signature, expected)
3635

37-
def test_compute_signature_unicode(self):
38-
expected = u(self.expected)
36+
def test_compute_signature(self):
37+
expected = (self.expected)
3938
signature = self.validator.compute_signature(self.uri,
4039
self.params,
4140
utf=True)
4241
assert_equal(signature, expected)
4342

44-
def test_compute_hash_bytecode(self):
45-
expected = b(self.bodyHash)
46-
body_hash = self.validator.compute_hash(self.body, utf=False)
47-
48-
assert_equal(expected, body_hash)
49-
5043
def test_compute_hash_unicode(self):
5144
expected = u(self.bodyHash)
52-
body_hash = self.validator.compute_hash(self.body, utf=True)
45+
body_hash = self.validator.compute_hash(self.body)
5346

5447
assert_equal(expected, body_hash)
5548

@@ -62,5 +55,5 @@ def test_validation_removes_port_on_https(self):
6255

6356
def test_validation_of_body_succeeds(self):
6457
uri = self.uriWithBody
65-
is_valid = self.validator.validate(uri, self.body, "afcFvPLPYT8mg/JyIVkdnqQKa2s=")
58+
is_valid = self.validator.validate(uri, self.body, "a9nBmqA0ju/hNViExpshrM61xv4=")
6659
assert_true(is_valid)

twilio/request_validator.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,8 @@ def compute_signature(self, uri, params, utf=PY3):
6464

6565
return computed.strip()
6666

67-
def compute_hash(self, body, utf=PY3):
68-
computed = base64.b64encode(sha256(body.encode("utf-8")).digest())
69-
70-
if utf:
71-
computed = computed.decode('utf-8')
67+
def compute_hash(self, body):
68+
computed = sha256(body.encode("utf-8")).hexdigest()
7269

7370
return computed.strip()
7471

0 commit comments

Comments
 (0)