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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline VoimiX  
#1 Оставлено : 10 февраля 2014 г. 19:31:42(UTC)
VoimiX

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2011(UTC)
Сообщений: 78

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 5 раз в 2 постах
Мне нужно на C# подписать текстовые данные, которые формируются программой, и сохранить полученную подпись

Вот мой код

Цитата:

Certificate с= null;
string thumbprint = "c04df368291f8045c377f37feefb44f06d80a01f";

string textData = "someText";


Store store = new Store();
store.Open();
//поиск сертификата
foreach (Certificate cert in store.Certificates)
{
if (string.Compare(cert.Thumbprint, thumbprint, StringComparison.InvariantCultureIgnoreCase) == 0)
{
с = cert;
break;
}
}

CPSigner cpSigner = new CPSigner();
cpSigner.Certificate = с;
//поиск сертификата

CadesSignedData signedData = new CadesSignedData();
signedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
signedData.Content = Convert.ToBase64String(Encoding.GetEncoding(1251).GetBytes(textData)); //вот здесь скорей всего ошибка, так же пробовал UTF8.GetBytes

CADESCOM_CADES_TYPE cadesType;
cadesType = CADESCOM_CADES_TYPE.CADESCOM_CADES_BES;

string signatureBase64 = signedData.SignCades(cpSigner, cadesType, true);


//сохранение текстового файла и подписи

File.WriteAllText("source.txt", testData);
File.WriteAllBytes("source.txt.sig", Convert.FromBase64String(signatureBase64);


Пробую проверить в подпись в КриптоАрм и получаю ошибку "Подпись математически неверна"

Мне кажется, я не так заполняю signedData.Content, отсюда и несоответствие
Как правильно кодировать текстовые данные для передачи в signedData.Content?

Подскажите, где ошибка?


Offline VoimiX  
#2 Оставлено : 10 февраля 2014 г. 22:31:15(UTC)
VoimiX

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2011(UTC)
Сообщений: 78

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 5 раз в 2 постах
Как правильно работать с текстовыми данными?

Отредактировано пользователем 11 февраля 2014 г. 9:47:13(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#3 Оставлено : 11 февраля 2014 г. 10:29:35(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
Мне кажется, я не так заполняю signedData.Content, отсюда и несоответствие
Как правильно кодировать текстовые данные для передачи в signedData.Content?

Подскажите, где ошибка?

Скорее всего Вы правы.
Для диагностики сделайте присоединенную подпись, проверьте ее с помощью КриптоАРМ или csptest, а затем получившиеся данные после снятия сравните с исходными.
Техническую поддержку оказываем тут
Наша база знаний
Offline VoimiX  
#4 Оставлено : 11 февраля 2014 г. 12:52:39(UTC)
VoimiX

Статус: Активный участник

Группы: Участники
Зарегистрирован: 07.12.2011(UTC)
Сообщений: 78

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 5 раз в 2 постах
Дело было в неверной кодировке самого сохраняемого документа.
Проблема решена.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.