Re: Crypto API vs CAPICOM
От: mkopachev  
Дата: 05.08.05 08:38
Оценка:
Здравствуйте, Козьма Прутков, Вы писали:

КП>Други, выручайте.

КП>Ситуация: имеем 2 способа формирования ЭЦП: CAPICOM и Crypto API. Сертификат один (он один на машине), криптопровайдер — Crypto Pro. Берем PDF и подписываем этими 2-мя путями. В результате получаем 2 файлика, одинакового размера (1263 байт), имеющих различными 64 байта.

Согласно ГОСТ 34.10 — 94 на формирование ЭЦП в алгоритме используется случайное число, поэтому даже если ты сформируешь дважды одной и той же программой ЭЦП для одного и того же файла, то все равно подписи будут отличаться. 64 байта это как раз и есть подпись (если не ошибаюсь, то эти байты должны быть последними в файле).

КП>Проблема: при верификаций каждый из способов считает свою подпись валидной, а чужую невалидной. Причем оба способа, по сути, взяты из примеров поставщиков, в частности, скрипт для подписи через CAPICOM у мелкософта, а какая-то тестовая тулза для Crypto API у Crypto Pro.


Нужно задавать алгоритм хэширования CALG_R3411, и кроме этого следить за тем, какой алгоримт ты используешь.
Есть еще одно подозрение — при вызове функции CryptSignHash() задается парамет sDescription — КриптоПро-шники рекомендуют устанавливать его не использовать (устанавливать в NULL). Если ты брел исходники от Microsoft, то в них эта строка используется — проверь и если эта строчка есть — замочи ее.
Удостоверься, что ты используешь в обоих случаях один и тот же криптопровадер (желательно по его имени).

КП>Вопрос: почему так происходит? Я уже перебрал все поддерживаемые криптопровайдером алгоритмы хеширования — не помогает.


З.Ы. У КриптоПро есть форум, там можно задавать вопросы, иногда на них даже понятно отвечают

С уважением Михаил Копачев
... << RSDN@Home 1.1.4 @@subversion >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.