Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Аналог выполнения команды "csptest.exe -sfsign -sign..." с помощью SignedCms.ComputeSignature в Net
Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2016(UTC) Сообщений: 15 Сказал(а) «Спасибо»: 4 раз
|
Кусок кода формирования подписи: ContentInfo content = new ContentInfo(System.Text.Encoding.ASCII.GetBytes(Convert.ToBase64String(hashValue))); // SignedCms represents signed data SignedCms signedMessage = new SignedCms(content, true); // create a signer CmsSigner signer = new CmsSigner(certificate); // sign the data signedMessage.ComputeSignature(signer); // create PKCS#7 byte array byte[] signedBytes = signedMessage.Encode(); Архив с файлом хэша и ЭП: hash64.zip (3kb) загружен 7 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Автор: pashkin21 Кусок кода формирования подписи: Во вложенном архиве - испорченный файл Sign, это не CMS (pkcs#7). Используйте примеры формирования CMS из SDK\MSDN или приводите полностью свой код, чтобы понять в каком месте искажаете результат (вероятно, при сохранении). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2016(UTC) Сообщений: 15 Сказал(а) «Спасибо»: 4 раз
|
// create PKCS#7 byte array byte[] signedBytes = signedMessage.Encode();
using (StreamWriter sw = new StreamWriter("C:\\Sign",true, System.Text.Encoding.ASCII)) { sw.Write(System.Text.ASCIIEncoding.ASCII.GetString(signedBytes)); } using (StreamWriter sw = new StreamWriter("C:\\hash64", true, System.Text.Encoding.ASCII)) { sw.Write(Convert.ToBase64String(hashValue)); }
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Автор: pashkin21 // create PKCS#7 byte array byte[] signedBytes = signedMessage.Encode();
using (StreamWriter sw = new StreamWriter("C:\\Sign",true, System.Text.Encoding.ASCII)) { sw.Write(System.Text.ASCIIEncoding.ASCII.GetString(signedBytes)); } using (StreamWriter sw = new StreamWriter("C:\\hash64", true, System.Text.Encoding.ASCII)) { sw.Write(Convert.ToBase64String(hashValue)); } Используйте File.WriteAllBytes(путь к файлу, signedBytes) Вместо искажения данных, вызывая Encoding.ASCII. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2016(UTC) Сообщений: 15 Сказал(а) «Спасибо»: 4 раз
|
Спасибо, теперь проходит проверку. Detached Signature was verified OK
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2016(UTC) Сообщений: 15 Сказал(а) «Спасибо»: 4 раз
|
Теперь возникает вопрос, почему принимающий веб-ресурс присылает нам сообщение о ошибке: Отсутствует или некорректная электронная подпись .
Самое интересное, когда мы в коде используем для получении ЭП программный консольный вызов: csptest.exe -sfsign -sign -add -detached -my Серов Сергей Иванович 111142802 -password 1111 -in c:\hash64 -out C:\Sign1
далее считываем файл C:\Sign1 в массив байт и переводим их в строку: base64Str = Convert.ToBase64String(signByteArr); и передаем в разрезе сообщения, то все хорошо, валидацию ЭП проходит.
Но при отправке сервису ЭП полученную с помощью SignedCms - то возникают проблемы, при этом с учетом вышестоящих постов ЭП полученная с помощью SignedCms проходит валидацию: csptest -sfsign -verify -detached -in c:\hash64_2 -signature C:\Sign2
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Автор: pashkin21 Теперь возникает вопрос, почему принимающий веб-ресурс присылает нам сообщение о ошибке: Отсутствует или некорректная электронная подпись .
Самое интересное, когда мы в коде используем для получении ЭП программный консольный вызов: csptest.exe -sfsign -sign -add -detached -my Серов Сергей Иванович 111142802 -password 1111 -in c:\hash64 -out C:\Sign1
далее считываем файл C:\Sign1 в массив байт и переводим их в строку: base64Str = Convert.ToBase64String(signByteArr); и передаем в разрезе сообщения, то все хорошо, валидацию ЭП проходит.
Но при отправке сервису ЭП полученную с помощью SignedCms - то возникают проблемы, при этом с учетом вышестоящих постов ЭП полученная с помощью SignedCms проходит валидацию: csptest -sfsign -verify -detached -in c:\hash64_2 -signature C:\Sign2 Закодировали в base64 и сохранили правильно? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.09.2016(UTC) Сообщений: 15 Сказал(а) «Спасибо»: 4 раз
|
Делаю следующим образом: signedMessage.ComputeSignature(signer); // create PKCS#7 byte array byte[] signedBytes = signedMessage.Encode(); string signedStr = Convert.ToBase64String(signedBytes); Так же креплю архив с файлами содержащие ЭП: Sign1 - файл полученный при использования консольного вызова csptest.exe Sign2 - файл полученный при использования SignedCms Sign1.zip (3kb) загружен 3 раз(а).Отредактировано пользователем 28 октября 2016 г. 12:48:18(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Вы отправляете отсоединенные подписи. Мне нужно еще и исходные данные, которые были подписаны.
В подписях - указаны разные хеши, значит, Вы подписывали разные данные. Сделайте правильно.
Более того, пробовал декодировать из base64 (hash64 - 660 байт (!?)) - что там за мусор в ASCII (480 байт получил)? Сами пробовали обратно декодировать?
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Автор: pashkin21 Спасибо, теперь проходит проверку. Detached Signature was verified OK
Приложите эти файлы, которые были использованы в проверке. |
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Аналог выполнения команды "csptest.exe -sfsign -sign..." с помощью SignedCms.ComputeSignature в Net
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close