diff --git a/RNS/Cryptography/HMAC.py b/RNS/Cryptography/HMAC.py index 848a2313..9996083c 100644 --- a/RNS/Cryptography/HMAC.py +++ b/RNS/Cryptography/HMAC.py @@ -180,4 +180,9 @@ def digest(key, msg, digest): outer.update(key.translate(trans_5C)) inner.update(msg) outer.update(inner.digest()) - return outer.digest() \ No newline at end of file + return outer.digest() + +def _cd_internal(a, b): return a == b +try: from hmac import compare_digest as _cd +except ImportError: _cd = _cd_internal +compare_digest = _cd \ No newline at end of file diff --git a/RNS/Cryptography/Token.py b/RNS/Cryptography/Token.py index c0e457d6..fb9577aa 100644 --- a/RNS/Cryptography/Token.py +++ b/RNS/Cryptography/Token.py @@ -80,7 +80,7 @@ class Token(): received_hmac = token[-32:] expected_hmac = HMAC.new(self._signing_key, token[:-32]).digest() - if received_hmac == expected_hmac: return True + if HMAC.compare_digest(received_hmac, expected_hmac): return True else: return False