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

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline Exp  
#1 Оставлено : 2 июля 2014 г. 9:15:50(UTC)
Exp

Статус: Новичок

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

Привет всем!

Суть в следующем - есть xml файл и подпись на флешке.
При помощи КриптоПро вручную прикрепляем (шифруем?) файл xml и получаем xml.sig
Подскажите (хотябы направление) где почитать, мож пример есть, для создания кода на дельфях для прикрепления подписи.
Может есть уже готовыя прога для этого.
Programmer_guide есть, но там все на си, и я так понимаю нужна библиотека, где взять?

Спасибо!
Offline Андрей Писарев  
#2 Оставлено : 2 июля 2014 г. 10:23:08(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
На этом форуме есть код, искать просто - название IDE ввести.. ну или "по-русски искаверканое слово" хотя найдется уже не то,что нужно
Техническую поддержку оказываем тут
Наша база знаний
Offline raubtier  
#3 Оставлено : 24 июня 2015 г. 12:38:43(UTC)
raubtier

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

Группы: Участники
Зарегистрирован: 03.04.2013(UTC)
Сообщений: 25
Мужчина
Российская Федерация
Откуда: Улан-Удэ

Сказал «Спасибо»: 3 раз
Здравствуйте, делаю небольшую программку подписалку для ФСРАР. Шифрование проходит нормально, а вот подписание не очень - ставлю подпись на файл, подпись прикрепленная получается file.xml.sig , подпись распознается в Крипто-АРМ, но когда загружаю на портал пишет - что подпись не действительная, есть подозрение что где-то нужно указать правильный алгоритм подписания, ниже фрагмент кода подписания, что я делаю не так:

public static void Sign(string _path, X509Certificate2 cert)
{
byte[] msgBytes = System.IO.File.ReadAllBytes(_path);
ContentInfo contentInfo = new ContentInfo(msgBytes);
SignedCms signedCms = new SignedCms(contentInfo);

CmsSigner cmsSigner = new CmsSigner(cert); //{DigestAlgorithm = cert.SignatureAlgorithm}; //Здесь возможно что-то нетак

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime());


signedCms.ComputeSignature(cmsSigner);
byte[] encodedMsg = signedCms.Encode();
System.IO.File.WriteAllBytes(_path + ".sig", encodedMsg);
}
Offline Андрей Писарев  
#4 Оставлено : 24 июня 2015 г. 12:54:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: raubtier Перейти к цитате
Здравствуйте, делаю небольшую программку подписалку для ФСРАР. Шифрование проходит нормально, а вот подписание не очень - ставлю подпись на файл, подпись прикрепленная получается file.xml.sig , подпись распознается в Крипто-АРМ, но когда загружаю на портал пишет - что подпись не действительная, есть подозрение что где-то нужно указать правильный алгоритм подписания, ниже фрагмент кода подписания, что я делаю не так:

public static void Sign(string _path, X509Certificate2 cert)
{
byte[] msgBytes = System.IO.File.ReadAllBytes(_path);
ContentInfo contentInfo = new ContentInfo(msgBytes);
SignedCms signedCms = new SignedCms(contentInfo);

CmsSigner cmsSigner = new CmsSigner(cert); //{DigestAlgorithm = cert.SignatureAlgorithm}; //Здесь возможно что-то нетак

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime());


signedCms.ComputeSignature(cmsSigner);
byte[] encodedMsg = signedCms.Encode();
System.IO.File.WriteAllBytes(_path + ".sig", encodedMsg);
}



Если КриптоАРМ проверяет, то вопрос уже не к коду.
Какие требования у ФСРАР? Присоединенная\отделенная подпись? DER\Base64?
Техническую поддержку оказываем тут
Наша база знаний
Offline raubtier  
#5 Оставлено : 24 июня 2015 г. 13:08:13(UTC)
raubtier

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

Группы: Участники
Зарегистрирован: 03.04.2013(UTC)
Сообщений: 25
Мужчина
Российская Федерация
Откуда: Улан-Удэ

Сказал «Спасибо»: 3 раз
Присоединенная подпись, Base64 ...
Offline Андрей Писарев  
#6 Оставлено : 24 июня 2015 г. 13:12:47(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: raubtier Перейти к цитате
Присоединенная подпись, Base64 ...


Ну так осталось закодировать...
Техническую поддержку оказываем тут
Наша база знаний
Offline raubtier  
#7 Оставлено : 24 июня 2015 г. 13:17:37(UTC)
raubtier

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

Группы: Участники
Зарегистрирован: 03.04.2013(UTC)
Сообщений: 25
Мужчина
Российская Федерация
Откуда: Улан-Удэ

Сказал «Спасибо»: 3 раз
Т.е. перед записью файла на диск содержимое BYTE закодировать в base64, или на каком моменте, я маленько делетант )))
Offline Андрей Писарев  
#8 Оставлено : 24 июня 2015 г. 13:20:15(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: raubtier Перейти к цитате
Т.е. перед записью файла на диск содержимое BYTE закодировать в base64, или на каком моменте, я маленько делетант )))

encodedMsg закодировать в base64 перед записью в файл.
https://msdn.microsoft.c...tring%28v=vs.110%29.aspx
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
raubtier оставлено 25.06.2015(UTC)
Offline raubtier  
#9 Оставлено : 25 июня 2015 г. 5:17:05(UTC)
raubtier

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

Группы: Участники
Зарегистрирован: 03.04.2013(UTC)
Сообщений: 25
Мужчина
Российская Федерация
Откуда: Улан-Удэ

Сказал «Спасибо»: 3 раз
Не работает, на портале возвращается теперь другая ошибка - что файл некорректно уже подписан, раньше ошибка была - подпись не действительна
Возможно как-то не так кодирую, т.к. у меня размер подписанного файла примерно 9КБ, а подписываю в Крипто-АРМ размер становиться 4 КБ
Вот что получилось:

public static void Sign(string _path, X509Certificate2 cert)
{
byte[] msgBytes = System.IO.File.ReadAllBytes(_path);
ContentInfo contentInfo = new ContentInfo(msgBytes);
SignedCms signedCms = new SignedCms(contentInfo);

CmsSigner cmsSigner = new CmsSigner(cert); //{DigestAlgorithm = cert.SignatureAlgorithm}; //Здесь возможно что-то нетак

//cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime());


signedCms.ComputeSignature(cmsSigner);
byte[] encodedMsg = signedCms.Encode();

string base64String;
try
{
base64String =
System.Convert.ToBase64String(encodedMsg,
0,
encodedMsg.Length);
}
catch (System.ArgumentNullException)
{
System.Console.WriteLine("Binary data array is null.");
return;
}

// Write the UUEncoded version to the output file.
System.IO.StreamWriter outFile;
try
{
outFile = new System.IO.StreamWriter(_path + ".sig",
false,
System.Text.Encoding.ASCII);
outFile.Write(base64String);
outFile.Close();
}
catch (System.Exception exp)
{
// Error creating stream or writing to it.
System.Console.WriteLine("{0}", exp.Message);
}

}
Offline Boris@Serezhkin.com  
#10 Оставлено : 29 июня 2015 г. 8:52:25(UTC)
Boris@Serezhkin.com

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

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: Андрей * Перейти к цитате
Автор: raubtier Перейти к цитате
Присоединенная подпись, Base64 ...


Ну так осталось закодировать...


Think Присоединенная? Base64?
Так не бывает. Если имеется ввиду - Весь ASN1 конгломерат, документ и подпись
передавать в виде Б64, тогда да.

PS:
И нужно внимательно почитать что требуется?
Если речь идет о XML, то возможно и подписывать надо его,
со всеми калоканализациями и прочими вкусностями.
Тут уже допустимо говорить про Б64.

А оперировать с XML как просто фалом - этого ли хочет получатель?

Отредактировано пользователем 29 июня 2015 г. 9:07:19(UTC)  | Причина: Не указана

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