Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Определить правильный тип подписи по эталонному файлу и доступной информации
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.11.2015(UTC) Сообщений: 8  Откуда: СПб
|
Всем привет! Реализую интеграцию с сервисом Equifax. В документации по подключению содержится следующее: сформировать файл запроса в приведенных ниже форматах, после чего подписать закрытым ключом Партнера этот запрос в формате CMS/PKCS#7 в DER кодировке. В документации к КРИПТО ПРО .NET SDK, в примерах, есть SingleSigner пример, который, судя, по комментариям должен делать то, что надо. Однако на деле все гораздо хуже, полученный файл (поток) не читается Equifax. Что стало ясно после долгих исследований просторов инета и терпения техподдержки: есть эталонный файл, он прикреплен к сообщению. Этот файл подписан так как надо, таким его ожидают в Equifax. Структура файла следующая: {signature} <XML content> {signature} Прошу помочь правильно определить какой именно пример может подойти в моем случае, плюс любые модификации. Заранее спасибо за помощь!  primer zaprosa ko.xml.sgn (1kb) загружен 13 раз(а).
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,175   Сказал «Спасибо»: 618 раз Поблагодарили: 2394 раз в 1883 постах
|
Добрый день.
Похоже на cms с данными, но без включения сертификата (в эталоне использован сертификат с серийным номером: 694D5B510000000006A8).
А делали как? Пример файла, который "не читается" в Equifax? |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.11.2015(UTC) Сообщений: 8  Откуда: СПб
|
Вот код, который подписывает. Код, который читает XML в поток: Код:using (var contentStream = new MemoryStream())
{
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
var serializer = new XmlSerializer(requestEntity.GetType(), string.Empty);
var settings = new XmlWriterSettings
{
Encoding = Encoding.GetEncoding(1251),
NamespaceHandling = NamespaceHandling.OmitDuplicates,
Indent = true
};
using (var xmlTextWriter = XmlWriter.Create(contentStream, settings))
{
serializer.Serialize(xmlTextWriter, requestEntity, namespaces);
}
// Rewind the Stream.
contentStream.Seek(0, SeekOrigin.Begin);
return SecurityHelper.SignRequestContent(contentStream, personalCertificateSerialNumber);
}
Код который подписывает: Код:// Sign the stream and save it to another stream.
private static Stream SignRequestContent(MemoryStream streamToSign, X509Certificate2 personalCertificate)
{
var contentInfo = new ContentInfo(streamToSign.ToArray());
var signedCms = new SignedCms(contentInfo);
var cmsSigner = new CmsSigner(personalCertificate);
signedCms.ComputeSignature(cmsSigner);
return new MemoryStream(signedCms.Encode());
}
Сам контент XML может не соответствовать тому, что в эталонном файле, главное - это понять как подписывать.  primer zaprosa ko.xml (1kb) загружен 8 раз(а).
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,175   Сказал «Спасибо»: 618 раз Поблагодарили: 2394 раз в 1883 постах
|
|
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.11.2015(UTC) Сообщений: 8  Откуда: СПб
|
Предыдущая тема уже потеряла актуальность, так как файл на выходе получается совсем не тот. В итоге требуется получить эталонный файл по структуре.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,175   Сказал «Спасибо»: 618 раз Поблагодарили: 2394 раз в 1883 постах
|
Автор: oleg.bragin  Предыдущая тема уже потеряла актуальность, так как файл на выходе получается совсем не тот. В итоге требуется получить эталонный файл по структуре. CmsSigner.IncludeOption - None - пробовали? А ссылку можно на документацию к Equifax? Здесь или в ЛС. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.11.2015(UTC) Сообщений: 8  Откуда: СПб
|
Всем большое спасибо! Тип подписи все же CMS, напутал с кодировкой файла запроса. Надо было читать его в windows-1251. Отредактировано пользователем 14 ноября 2015 г. 12:19:44(UTC)
| Причина: Не указана
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Определить правильный тип подписи по эталонному файлу и доступной информации
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close