Проверка электронной подписи
Как проверить ЭЦП даного сообщения?
<dict>
<key> Message </ key>
<data>
(в кодировке base64 сообщение и сертификат Request)
</ data>
<key> СертификатCertChain </ key>
<data>
(в кодировке base64 цепочка сертификатов RSA в том числе корневого центра сертификации в формате DER)</ data>
<key> Подпись </ key>
<data>
(в кодировке base64 подпись (SHA1 + RSA) из Message, проверка подписи с использованием СертификатCertChain)
</ data>
</ dict>
Ссылки
[link1] https://mega.co.nz/#!bcwn3K4Q!zDavglRKy_H-2n2YLvOjGUcggLEuGgE5_slMr3oic5U
Взять данные из этого XML и скормить их тому софту, которым они генерировались (возможно, это OpenSSL, тогда см. man dgst и man rsautl).
Вот ссылка на само сообщение https://mega.co.nz/#!bcwn3K4Q!.....ggLEuGgE5_slMr3oic5U[link1]
Все что мне нужно это проверить валидность подписи используя OpenSSL.
Для начала, надо хотя бы знать порядок генерации подписи: что подавалось в контекст хэш-функции — исходные данные или base64-кодированные, как каноникализировать переносы строк и пр.?
В контекст хэш-функции подавались данные в base64-кодировке без переносов.
А противник может подписать фейковое сообщение открытым ключом получателя от имени знакомого получателя?
По идее, порядок действий должен быть таков:
У меня, однако, подпись не сверяется. Возможно, где-то допущена ошибка или требуется какая-то предобработка данных, о которой Вы не упомянули. В любом случае, направление Вам дали, дальше можете разобраться сами.
Во-первых, оффтопик, а, во-вторых, нет, не может: подпись генерируется закрытым ключом.