Я хочу «вручную» сравнить дайджест/хэш сообщения с расшифрованным значением подписи в этом дайджесте.
Для этого я хочу расшифровать значение подписи (подписанный дайджест) сообщения с помощью открытого ключа, который принадлежит закрытому ключу, которым дайджест был подписан в первую очередь.
У меня есть следующие предметы:
- Дайджест-значение сообщения в base64 (рассчитывается с помощью SHA256)
- Значение подписи в дайджесте в base64, подписанном закрытым ключом (с использованием SHA256 с шифрованием RSA).
- Открытый ключ в формате .pem, принадлежащий закрытому ключу
- У меня есть фактическое сообщение (оно в формате XML, содержащем несколько подписей в разных разделах документа). Я уже проверил подписи с помощью библиотеки безопасности XML. Меня интересует только расшифровка значения подписи с помощью открытого ключа.
Я как бы застрял в том, как я могу добиться этого с помощью openssl.
Я пробую варианты команд, описанных здесь и здесь, однако я немного растерялся.
Я полагаю, мне следует преобразовать подпись из значения base64 в октет, используя:
base64 —d sigfile > sigfile_octet?
Затем я использую команду:
openssl rsautl -inkey pubkey.pem -pubin -in sigfile_octet
Дает ли это мне расшифрованное значение подписи в октете? Какие следующие шаги мне нужно выполнить, чтобы сравнить его с дайджестом base64?
p.s. Я уже проверил подпись с помощью библиотеки безопасности XML Алексея, поэтому я знаю, что дайджест должен соответствовать расшифрованной подписи. ценность.
Ваша помощь будет очень признательна!!
С уважением,
Дидерик
Источник: