Fix 500 error from /consent form

Fixes #3731
This commit is contained in:
Richard van der Hoff 2018-08-21 22:41:41 +01:00
parent 3b5b64ac99
commit f7baff6f7b

View File

@ -175,7 +175,7 @@ class ConsentResource(Resource):
""" """
version = parse_string(request, "v", required=True) version = parse_string(request, "v", required=True)
username = parse_string(request, "u", required=True) username = parse_string(request, "u", required=True)
userhmac = parse_string(request, "h", required=True) userhmac = parse_string(request, "h", required=True, encoding=None)
self._check_hash(username, userhmac) self._check_hash(username, userhmac)
@ -210,9 +210,18 @@ class ConsentResource(Resource):
finish_request(request) finish_request(request)
def _check_hash(self, userid, userhmac): def _check_hash(self, userid, userhmac):
"""
Args:
userid (unicode):
userhmac (bytes):
Raises:
SynapseError if the hash doesn't match
"""
want_mac = hmac.new( want_mac = hmac.new(
key=self._hmac_secret, key=self._hmac_secret,
msg=userid, msg=userid.encode('utf-8'),
digestmod=sha256, digestmod=sha256,
).hexdigest() ).hexdigest()