23.05.2007 15:06:10 | Вопрос по CryptoAPI | | Ответов: 12 |
|
Vetaliq | | |
|
Перед мной стоит такая задача:
Есть подписанный файл .dll, есть файл с сертификатом подписчика .p7b
Нужно достать pulic key из сертификата подписчика чтобы проверить подпись в файле .dll
Не подскажете порядок действий и функций? |
|
Ответы:
|
23.05.2007 17:11:21 | Василий |
|
Обычно для проверки подписи используется весь сертификат подписавшего. Вы можете уточнить, какие функции использовались при подписи файлов dll? Тогда будет ясно, чем проверять. |
|
23.05.2007 17:15:39 | Vetaliq |
|
Не знаю какими функциями подписывался.
Разве не достаточно знать что при помощи данного сертификата? |
|
24.05.2007 10:41:55 | Kirill Sobolev |
|
Технология подписи Microsoft Authenticode предполагает наличие сертификата подписчика в самой подписи, а не в файле. Если у Вас сертификат именно в файле, то непонятно какой формат у подписи - просто подписанный хэш в ресурсе, или еще что-то. Поэтому посоветовать функцию которая бы это проверяла невозможно, не знаю подробностей. |
|
24.05.2007 12:50:35 | Vetaliq |
|
Сертификат подписчика есть в подписанном файле, я просто его установил, а потом экспортировал в файл. |
|
24.05.2007 13:31:01 | Василий |
|
Тем не менее, если не известно, как и чем подписывали файл, то вряд ли можно сказать, чем можно проверить подпись.
Вообще, получается странная постановка задачи - кто-то неизвестно как подписал файл (или целиком, или часть), использовалось ли при этом преобразование файла, опять же, неизвестно. И вот надо взять и проверить подпись. Предлагаю всегда возвращать успех при проверке подписи, т.к. любая подпись верна для хеша от некоторых данных (полученных по неизвестному алгоритму из исходного файла). |
|
24.05.2007 13:39:52 | Kirill Sobolev |
|
Ага :)
Кстати, Windows подпись проверяет нормально? |
|
24.05.2007 14:22:36 | Vetaliq |
|
Опишу задачу полностью: В программном продукте нашей компании нужно защитить несколько файлов от взлома. Для этого решили их подписать. Был сгенерирован сертификат при помощи которого был подписан файл myfile.dll Теперь моя задача написать код при помощи которого я смог бы проверить файл на компьютере, где не стоит наш сертификат, на наличие нашей подписи.
Поэтому вопросы: как это сделать? Какую информацию о подписи мне надо узнать? Подписывали при помощи утилиты signcode.exe |
|
24.05.2007 15:36:31 | Kirill Sobolev |
|
Вы бы сразу написали про signcode :)
Посмотрите функцию WinVerifyTrust, для проверки надо знать имя файла. |
|
24.05.2007 15:58:10 | Vetaliq |
|
Функция WinVerifyTrust скажет только что файл подписан, а мне нужно чтобы это был гарантировано наш сертфикат.
Или я не правильно ее использую... |
|
24.05.2007 17:33:37 | Kirill Sobolev |
|
В CryptoAPI таких функций нет, кроме как разбор подписи вручную. Попоробуйте использовать SignedCode из CAPICOM 2.0. |
|
24.05.2007 18:01:47 | Vetaliq |
|
А можно по подробнее про разбор подписи вручную, в первую очередь как её вытащить из файла? |
|
25.05.2007 9:28:53 | Kirill Sobolev |
|
Это Вам google поможет, про разбор Portable Executable. Внутри него обычный PKCS7 лежит. |
|