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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Andrey Sherman  
#1 Оставлено : 10 октября 2018 г. 16:13:21(UTC)
Andrey Sherman

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

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

Поблагодарили: 2 раз в 2 постах
Добрый день. Решили попробовать сделать программу для интеграции с кредитным конвейером для автоматизации запроса КИ. Настроили связь с НБКИ. Получилось отправить POST в НБКИ. Тех.саппорт подтвердил, что запрос к ним приходит корректный. Дальше необходимо получить от них ответ. Тех.саппорт ответил следующее:
Цитата:
Ответ наших систем – бинарный контейнер эцп с текстом ответа внутри. Если открыть ответ наших систем в текстовом редакторе, то вы увидите бинарные вкрапления в начале, в конце и в середине файла ответа. Чтобы избавиться от этих вкраплений, вам надо Снять и проверить ЭЦП (в терминах программы КриптоАРМ).


Соответственно вопрос, как можно полученный Stream сохранить в xml при этом снять и расшифровать подпись с помощью КриптоПРО .Net

На всякий случай мой код
Цитата:

//Создаем документ XML
XDocument xdoc = new XDocument(

new XDeclaration("1.0", "Windows-1251","yes"),
new XElement("product",
new XElement ("prequest",
new XElement("req",
new XElement("AddressReq",
new XElement("houseNumber", "1"),
new XElement ("street","Горького"),
new XElement("apartment", "38"),
new XElement("city", "Магадан"),
new XElement("postal", "685000"),
new XElement("addressType", "1")),
new XElement("AddressReq",
new XElement("houseNumber", "1"),
new XElement("street", "Горького"),
new XElement("apartment", "38"),
new XElement("city", "Магадан"),
new XElement("postal", "685000"),
new XElement("addressType", "2")),
new XElement("IdReq",
new XElement("idNum", "273412"),
new XElement("idType","21"),
new XElement("seriesNumber", "6439"),
new XElement("issueCountry", "г. Магадан"),
new XElement("issueDate", "2006-03-18"),
new XElement("issueAuthority", "ОВД Центральное, к/п 255")
),
new XElement("IdReq",
new XElement("idNum", "12345678901"),
new XElement("idType", "32")
),
new XElement("InquiryReq",
new XElement("ConsentReq",
new XElement("consentFlag", "Y"),
new XElement("consentDate", "2016-01-20"),
new XElement("consentExpireDate", "2021-10-21"),
new XElement("consentPurpose", "4"),
new XElement("otherConsentPurpose", "Job pre-screening"),
new XElement("reportUser", "DG Human Resources Incorporated"),
new XElement("liability", "Y")
),
new XElement("inqPurpose", "01"),
new XElement("inqAmount", "10000"),
new XElement("currencyCode", "usd")
),
new XElement("PersonReq",
new XElement("name1", "Кустов"),
new XElement("first", "Георгий"),
new XElement("paternal", "Георгиевич"),
new XElement("gender", "1"),
new XElement("birthDt", "1946-07-06"),
new XElement("placeOfBirth", "Москва")
),
new XElement("RequestorReq",
new XElement("MemberCode", "V901FF000000"),
new XElement("UserID", "V901FF000007"),
new XElement("Password", "1Qw23456")
),
new XElement("RefReq",

new XElement("product", "CHST")
),
new XElement("IOType","B2B"),
new XElement("OutputFormat", "XML"),
new XElement("lang", "ru")
))
));

//Добавляем в Stream
MemoryStream stream = new MemoryStream();
xdoc.Save(stream);
//Создаем подключение для отправки xml в НБКИ через POST
WebRequest request = WebRequest.Create("http://icrs.demo.nbki.ru/ChhService/B2BRequestServlet");
request.Method = "POST";
request.ContentType = "text/xml";
Stream data = request.GetRequestStream();
stream.CopyTo(data);
data.Close();

//Получаем ответ
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding(1251));
string str = sr.ReadToEnd();


Собственно что делать дальше пока не допер. Походы в гугл тоже ничего не принесли. Как сохранить Stream в контейнер, или как с него снять подпись.
thanks 1 пользователь поблагодарил Andrey Sherman за этот пост.
buytoor оставлено 18.12.2018(UTC)
Offline Andrey Sherman  
#2 Оставлено : 10 октября 2018 г. 17:01:48(UTC)
Andrey Sherman

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

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

Поблагодарили: 2 раз в 2 постах
При чтении документации наткнулся и решил свою задачу, для проверки и расшифровки контейнера с xml, надо делать следующее:

Цитата:
SignedCms cms = new SignedCms();
cms.Decode(bytes);
cms.CheckSignature(true);
var content = cms.ContentInfo.Content;

После этого получается нормальная XML.
thanks 1 пользователь поблагодарил Andrey Sherman за этот пост.
buytoor оставлено 18.12.2018(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.