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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Markevich9  
#1 Оставлено : 11 сентября 2018 г. 16:29:55(UTC)
Markevich9

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте! Может кто знает или может подсказать куда копать. У клиента используется примерно следующий код для формирования выйла с подписью

byte[] data = Cryptography.GetSign(dataToSign, true);

public static byte[] GetSign(byte[] bytesToSign, bool detached)
{
try
{
byte[] data = SignBytes(bytesToSign, detached);
return data;
}
catch (Exception)
{
}

}
private static byte[] SignBytes(byte[] bytesToSign, bool detached)
{
CheckCertificateException(Global.X509Certificate);
CPSigner cpSigner = new CPSigner();
cpSigner.Certificate = Global.X509CertificateCapicom;
cpSigner.TSAAddress = Global.Config.TSAAddress;
CadesSignedData signedData = new CAdESCOM.CadesSignedDataClass();
signedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
signedData.Content = Convert.ToBase64String(bytesToSign);

CADESCOM_CADES_TYPE cadesType = Global.Config.UseOCSP
? CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1
: CADESCOM_CADES_TYPE.CADESCOM_CADES_T;

var signData = signedData.SignCades(cpSigner, cadesType, detached);

return Convert.FromBase64String(signData);
}
Со слов клиента используется стандартное подписывание файла. При проверке подписи все время валится ошибка.
Проверяю стандартным примером проверки подписи для файлов из SDK Криптопро .Net.

public static bool VerifySignedFile(Byte[] msg, byte[] encodedSignature)
{
// Создаем объект ContentInfo по сообщению.
// Это необходимо для создания объекта SignedCms.
ContentInfo contentInfo = new ContentInfo(msg);

// Создаем SignedCms для декодирования и проверки.
SignedCms signedCms = new SignedCms(contentInfo, true);
// Декодируем подпись
signedCms.Decode(encodedSignature);

try
{
signedCms.CheckSignature(true);
}
catch (CryptographicException ce)
{
return false;
}
catch (Exception ex)
{
return false;
}
return true;
}

И в продолжение, подскажите пожалуйста как подписать файл с использованием сервера времени для получения штампа времени с помошью библиотеки Криптопро .Net. Ни как не могу найти пример.
Заранее благодарю за любой ответ. Если есть ссылка на пример буду в двойне благодарен.
Offline Андрей Писарев  
#2 Оставлено : 11 сентября 2018 г. 18:55:56(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Здравствуйте.

>При проверке подписи все время валится ошибка.

Какая ошибка возникает?
Какой тип подписи используется?
Ошибка возникает на том же рабочем месте?
Выполняются требования при проверке подписи?


>как подписать файл с использованием сервера времени

Код у Вас есть в примере, вызвать с:
cadesType = CADESCOM_CADES_T; - подпись и штамп времени.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Markevich9 оставлено 12.09.2018(UTC)
Offline Markevich9  
#3 Оставлено : 12 сентября 2018 г. 10:01:58(UTC)
Markevich9

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Андрей Писарев Перейти к цитате
Здравствуйте.

>При проверке подписи все время валится ошибка.
Какая ошибка возникает?
Какой тип подписи используется?
Ошибка возникает на том же рабочем месте?
Выполняются требования при проверке подписи?

>как подписать файл с использованием сервера времени
Код у Вас есть в примере, вызвать с:
cadesType = CADESCOM_CADES_T; - подпись и штамп времени.


Ответы по порядку:
Сегодня в течении дня выложу.
ГОСТ 2001 и 2012. Судя по коду отсоедененная.
Нет на сервере где проверяется подпись. Создается на клиентской машине.
Все перепроверю, но не совсем понятно зачем при проверке подписи такие жесткие условия. Если я правильно понимаю подпись должна проверяться в любом случае, а создание подписи должно цдовлетворять условиям.

Как подписать файл - Вопрос не в том как его подписать и проверить подпись используя библиотеку Криптопро ЭЦП, а как это сделать используя Криптопро .Net. Т.к. во первых этот компонент используется на сервере. Во вторых на него приобритается платная лицензия, и тога встает вопрос для чего ее приобритать если она не реализует все требования, в случае если не поддерживает CADESCOM.

Собственно самый главный, на текущий момент, вопрос это как подписать и проверить подпись по стандартам CADESCOM с использованием Криптопро .Net? Это в принципе возможно, или для этого необходимо устанавливать библиотеку?


Offline Markevich9  
#4 Оставлено : 12 сентября 2018 г. 14:12:35(UTC)
Markevich9

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

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

Сказал(а) «Спасибо»: 2 раз
Ошибки больше - нет оказалось что проблема не в коде, а том кто его использует. Благодарю всех за оказанную помошь.

Но вопрос о реализации в CADESCOM в Криптопро Net все же считаю открытам, я так и не смог найти примера реализации.
Если я правильно понимаю то при стандартной проверке подписи файла, проверяется только подпись без проверки соответсвия CADESCOM(штампа времени и т.д.). Есть ли возможность реализовать или следует использовать библиотеки и других альтернатив нет?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.