Прямое чтение и запись BLOB-объектов (Crypto API) | |
---|---|
rvc44 Автор Сообщений: 2211 Откуда: Тамбов Дата регистрации: 06.12.2005 |
Всем привет!
Несколько лет назад приходилось писать код для получения серийного номера сертификата ключа подписи прямым чтением BLOB-объекта:
Сейчас озадачился вопросом реализации обратного действия, т.е. как осуществить прямую запись CryptoAPI BLOB-объекта из проекта на VFP. В общем, есть такой Сишный код:
Немного прикинул, тряхнув стариной, и вот что у меня получилось:
Прошу оценить свежим взглядом и сделать вывод: "взлетит" данный код или нет? Что-то мне не очень нравится:
|
Re: Прямое чтение и запись BLOB-объектов (Crypto API) | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В чём смысл всего этого безобразия? Не понимаю зачем лезть внутрь pbCertEncoded... Создаётся сертификат совсем по другому.
------------------ WBR, Igor |
Re: Прямое чтение и запись BLOB-объектов (Crypto API) | |
---|---|
rvc44 Автор Сообщений: 2211 Откуда: Тамбов Дата регистрации: 06.12.2005 |
Игорь, Вы не уловили сути. Здесь ни о каком создании сертификата речь даже не идет.
Глобальная цель - решить задачу по подписанию определенного файла второй подписью. Не подписать еще раз подписанные данные, а именно наложить вторую, а если потребуется и третью отсоединенную (detached) подпись в формате PKCS#7, причем, что важно, в одном, а не 2 или 3 отдельных файлах. Последнее время, Росреестр только так принимает в электронном виде подписанные концессионные соглашения и сведения о произведенной кадастровой оценке объектов недвижимости. На один XML-файл требуют один SIG-Файл, содержащий 3 разных подписи внутри, а три разных SIG-файла к одному XML не допускается. Найденный алгоритм осуществления подобного безобразия, предполагает именно такой код. У Вас есть другие идеи, как это осуществить? Обратите внимание на ссылку "Original MSDN code" выше, заменив "тт" на "tt" в http в третьей сверху строке комментариев к коду (операция CoSign - "Доподписание"). Исправлено 4 раз(а). Последнее : rvc44, 01.06.18 01:50 |
Re: Прямое чтение и запись BLOB-объектов (Crypto API) | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Т.е. если это всё конкретно для
То должно работать во-первых и без LocalAlloc (в MSDN нет указаний на то что для этой функции нужно как-то "по особому" память для структуры выделять - да и в коде примера там тривиальная локальная переменная и потом просто указатель на неё передаётся в функцию), во-вторых по сути "внутрь" структуры чей адрес в pbCertEncoded лежит ты и не лезешь - только сам адрес (указатель) берёшь из другой структуры. А раз так, то всё упрощается до lcCosignCertBlob = SubStr(m.lcCERT_CONTEXT, 9, 4) + SubStr(m.lcCERT_CONTEXT, 5, 4); И да, в таком случае проблем нет - не ты своим прикладным кодом, а сами АПИ функции лезут внутрь этих бинарных закодированных структур ------------------ WBR, Igor |
© 2000-2024 Fox Club  |