Генерация ребенка для JWT из открытого ключа подписи ключа - PullRequest
1 голос
/ 17 марта 2019

Дано:

  • ключ подписи, сгенерированный RSACryptoServiceProvider.
  • требование о создании подписанного JWT с ребенком.

Если бы ключ подписи был из сертификата x509, я бы установил ребенку x5t. В этом случае это не так. Я мог бы придумать что-то произвольное для ребенка, но было бы лучше, если бы столкновения были маловероятными и чтобы между ребенком и сертификатом была значимая связь.

То, что я намерен это: -

  1. Создать байтовый массив, который создается путем добавления байтов модуля к байту экспоненты.
  2. SHA256 кодирует массив.
  3. Base64 SHA256.
  4. установить kid в строку base64.

В значительной степени это:

var kid = Base64(SHA256(concat(exp,mod)))

Это кажется правильным подходом? Есть ли более простой способ получить отпечаток от RSASecurityKey?

1 Ответ

1 голос
/ 18 марта 2019

Как правило, идентификатор ключа для других протоколов состоит из хеша (обычно SHA-1) по модулю.Модуль должен быть уникальным для пары ключей и, следовательно, для открытого и закрытого ключей.Он имеет преимущество в том, что его можно вычислить из частного и открытого ключа, при этом его можно использовать для идентификации любого из них.

Модуль должен быть закодирован с большим порядковым номером без знака, используяминимальное количество байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...