18.01.2007 10:45:14проблема проверки ЭЦП Ответов: 2
Александр
Здравствуйте.
Нигде не смог найти ответ на вопрос, хотя похожие темы у вас уже были.
Я использую сертификат, выпущенный нашим центром сертификации с использованием майкросвовского криптопровайдера (с вашим у меня проблемы - я тогда писал вам - сошлись на том, что у меня кривая винда и надо все переставлять - поэтому тренируюсь на майкрософте).
Все работает - подписываю текст скриптом (CAPICOM)
(подпись отделенная), проверяю подпись на сервере с использованием CAPICOM. Подпись верна.
Собственно сейчас задача - в случае конфликтных ситуаций дать человеку файл подписи и подписанный текст, чтобы он мог предоставить это в суд при необходимости.
Я сохраняю подпись и текст в файлы.
Проблема в том, что когда я сам проверяю правильность подписи, зачитывая из файлов (программой на C# с использованием CAPICOM) - она правильная (при изменении одного байта в тексте - неправильная) - т.е. все вроде корректно работает.
Но эксперты, привлеченные для проверки правильности подписи в суде не будут же использовать мою программу.
Наверное они должны использовать какие-то стандартные средства.
Вот я и пробовал искать стандартное средство для проверки подписи.
Пробовал КРИПТО-АРМ - говорит - неправильная
Пробовал ваш
csptest.exe -sfsign -base64 -in C:\temp\content.txt -my "AAAforWWWSign" -alg SHA1 -detached -verify -signature C:\temp\sign.txt
Тоже неправильная.
Подскажите пожалуйста, что неправильно может быть в параметрах и что можно использовать для проверки, если ваша утилита не может проверять подпись не ваших сертификатов
 
Ответы:
18.01.2007 11:14:25Kirill Sobolev
Проблема не в нашей утилите и наших сертификатах, а в том, как Ваша прорамма на С# работает с юникодом. Файл C:\temp\content.txt наверное ансишный, как Вы его содержимое передаете в SignedData? Сделайте присоединенную подпись и посмотрите что именно Вы подписываете.
PS Тема это уже много раз обсуждалась, может и не про C#, но про Дельфи и VB точно.
18.01.2007 14:58:18Александр
Спасибо за ответ.
Так и есть.
Я до этого пробовал сохранять данные в файл в юникоде.
Но проверка не прошла и я поешл искать дальше.
Но теперь еще в эту сторону покопал и увидел в начале файла два лишние байта, говорящие о том, что файл в формате юникода.
Обрезал их и проверка прошла...
Криво конечно, но работает теперь.
Спасибо еще раз