Не могу получить такую ​​же подпись в разделе 3.3 rfc7515 - PullRequest
0 голосов
/ 06 октября 2019

В 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)

1 Ответ

0 голосов
/ 06 октября 2019

Я считаю, что неправильно подписывать ключом байты напрямую. Я должен использовать base64url_decode (ключ). Тогда я получаю правильную подпись 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk ='.

import hashlib
import hmac
import base64

message = bytes('eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ','ascii')

secret = base64.urlsafe_b64decode('AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow==')

signature = base64.urlsafe_b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())

print(signature)
...