pyjwt вызывает ошибку при декодировании
Я использую PyJWT для генерации и проверки JWT в Python. Запуск pypy3 v2.4.
Просто пытаюсь encode
а также decode
JWT похож на пример в репозитории GitHub. Я получаю следующую ошибку при декодировании:
decoded = jwt.decode(encoded, secret, algorithm='HS256')
File "/usr/local/site-packages/jwt/api_jwt.py", line 64, in decode
options, **kwargs)
File "/usr/local/site-packages/jwt/api_jws.py", line 115, in decode
key, algorithms)
File "/usr/local/site-packages/jwt/api_jws.py", line 177, in _verify_signature
if not alg_obj.verify(signing_input, key, signature):
File "/usr/local/site-packages/jwt/algorithms.py", line 138, in verify
return constant_time_compare(sig, self.sign(msg, key))
File "/usr/local/site-packages/jwt/compat.py", line 50, in constant_time_compare
result |= ord(x) ^ ord(y)
TypeError: ord() expected string of length 1, but int found
Понятно, что ошибка генерируется изнутри кода модуля.
Есть идеи, что вызывает эту ошибку?
Спасибо
1 ответ
PyJWT не поддерживает Python 3.2, PyJWT использует hmac.compare_digest
чтобы проверить подписи, которые были добавлены в Python 3.3, он решает эту проблему путем переопределения compare_digest для Python 2, однако повторная реализация не поддерживает python 3.2, поскольку при индексации в объект байтов возвращается символ в python 2 и int в python 3.