Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline pashkin21  
#11 Оставлено : 28 октября 2016 г. 8:26:48(UTC)
pashkin21

Статус: Участник

Группы: Участники
Зарегистрирован: 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 раз(а).
Offline Андрей Писарев  
#12 Оставлено : 28 октября 2016 г. 10:07:58(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,357
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Автор: pashkin21 Перейти к цитате
Кусок кода формирования подписи:


Во вложенном архиве - испорченный файл Sign, это не CMS (pkcs#7).

Используйте примеры формирования CMS из SDK\MSDN или приводите полностью свой код,
чтобы понять в каком месте искажаете результат (вероятно, при сохранении).
Техническую поддержку оказываем тут
Наша база знаний
Offline pashkin21  
#13 Оставлено : 28 октября 2016 г. 10:11:28(UTC)
pashkin21

Статус: Участник

Группы: Участники
Зарегистрирован: 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));
}
Offline Андрей Писарев  
#14 Оставлено : 28 октября 2016 г. 10:35:43(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
pashkin21 оставлено 28.10.2016(UTC)
Offline pashkin21  
#15 Оставлено : 28 октября 2016 г. 10:54:48(UTC)
pashkin21

Статус: Участник

Группы: Участники
Зарегистрирован: 29.09.2016(UTC)
Сообщений: 15
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Спасибо, теперь проходит проверку.
Detached Signature was verified OK

Offline pashkin21  
#16 Оставлено : 28 октября 2016 г. 11:16:22(UTC)
pashkin21

Статус: Участник

Группы: Участники
Зарегистрирован: 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
Offline Андрей Писарев  
#17 Оставлено : 28 октября 2016 г. 12:00:16(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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 и сохранили правильно?
Техническую поддержку оказываем тут
Наша база знаний
Offline pashkin21  
#18 Оставлено : 28 октября 2016 г. 12:09:27(UTC)
pashkin21

Статус: Участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Андрей Писарев  
#19 Оставлено : 28 октября 2016 г. 13:33:51(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,357
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах

Вы отправляете отсоединенные подписи.
Мне нужно еще и исходные данные, которые были подписаны.

В подписях - указаны разные хеши, значит, Вы подписывали разные данные.
Сделайте правильно.

Более того, пробовал декодировать из base64 (hash64 - 660 байт (!?)) - что там за мусор в ASCII (480 байт получил)?
Сами пробовали обратно декодировать?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#20 Оставлено : 28 октября 2016 г. 13:38:31(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,357
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Автор: pashkin21 Перейти к цитате
Спасибо, теперь проходит проверку.
Detached Signature was verified OK



Приложите эти файлы, которые были использованы в проверке.

Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.