Хорошо, я получил это после 22 часов обучения / Google.
Оповещение о спойлере
Так как это одно из профессиональных упражнений в pentesterlab, я не буду публиковать код, демонстрирующий, как сгенерировать полный JWT с использованием HSA256.
Вместо этого было бы лучше, если бы я опубликовал, как вычислить HSA256, используя файл pem в python, как это было в моем первоначальном вопросе:
import hashlib
import hmac
key = open("public_cert.pem","r").read()
signature = hmac.new(key, unsignedToken, digestmod=hashlib.sha256).digest()
print signature
По сути, нам просто нужно прочитать файл открытого ключа и использовать функцию hmac.new (..), установив hashlib.sha256 в качестве используемого дайджеста.
«UnsignedToken» - это текст JWT (или объявления), который мы хотели вычислить для подписи.
Для тех, кто все еще пытается понять, как создать действительный JWT для упражнения пентестерлаба, единственная подсказка, которую я могу дать, - это кодирование urlsafe-base64.
Существует также модуль python с именем «pyjwt», который можно использовать, но его исходный код необходимо отредактировать, чтобы разрешить использование открытых ключей в качестве ключа HMAC.