В rfc7515 , есть пример jws:
BASE64URL (UTF8 (JWS-защищенный заголовок)) = eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1L * * BJ * 8 * * BJ9SJ * 8 * JJ1SJ1SJ1SJ1S6BJ79JJ9BJ9Payload) = eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ
1012 * Его секретный ключ является JWK:
{ "KTY": "Октябрь", "к": " AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow"}
Затем нам нужно вычислить HMAC входного значения для подписи JWS ASCII (BASE64URL (U64) (UTF);Полезная нагрузка JWS)) с алгоритмом HMAC SHA-256 с использованием указанного ключа и base64url-кодированием результата.
В примере jws он выдает ' dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk * 10 * как * * 1024пока я получаю ' ZekyXWlxvuCN9H8cuDrZfaRa3pMJhHpv6QKFdUqXbLc = '. Что-то не так?
Вот мой код python3.
import hashlib
import hmac
import base64
message = bytes('eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ','ascii')
secret = bytes('AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow','utf-8')
signature = base64.urlsafe_b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
print(signature)