Проверка подписи XMLDSIG на примере СМЭВ
Подготовка SOAP-сообщения перед созданием подписи XMLDSIG на примере СМЭВ
Проверка подписи органа власти с помощью сервиса СМЭВ
Проверка подписи XMLDSIG (WS-Security) с помощью сервиса СПЭП СМЭВ
Для начала, нам необходимо установить КриптоПро CSP и КриптоПро CADESCOM. Скачать данные продукты можно по этой ссылке. Если используется клиент-серверный вариант работы платформы 1С, то устанавливаем продукты КриптоПро на тот же компьютер, где установлен сервер 1С:Предприятие.
Все ниже используемые API-функции описаны по адресу вот тут в разделе КриптоПро ЭЦП. Руководство разработчика.
Привожу пример функции, которая выполняет проверку подписи формата XMLDSIG, формируемая СМЭВ(система межведомственного электронного взаимодействия), ОВ(органа власти) или ПГУ(портал государственных услуг). Заметим, что формат передачи подписи в СМЭВ используется WS-Security:
Если требуется проверить подпись только ОВ или ПГУ, то в функцию Verify нужно передать строку с XPath-запросом, который выберет тег Signature, хранящийся в теге Security с атрибутом actor="http://smev.gosuslugi.ru/actors/smev".
Проверка подписи органа власти с помощью сервиса СМЭВ
Проверка подписи XMLDSIG (WS-Security) с помощью сервиса СПЭП СМЭВ
Для начала, нам необходимо установить КриптоПро CSP и КриптоПро CADESCOM. Скачать данные продукты можно по этой ссылке. Если используется клиент-серверный вариант работы платформы 1С, то устанавливаем продукты КриптоПро на тот же компьютер, где установлен сервер 1С:Предприятие.
Все ниже используемые API-функции описаны по адресу вот тут в разделе КриптоПро ЭЦП. Руководство разработчика.
Привожу пример функции, которая выполняет проверку подписи формата XMLDSIG, формируемая СМЭВ(система межведомственного электронного взаимодействия), ОВ(органа власти) или ПГУ(портал государственных услуг). Заметим, что формат передачи подписи в СМЭВ используется WS-Security:
// Выполняет проверку подписи СМЭВ.
//
// Параметры
// СтрокаXML - Строка - текст XML канонического вида, имеющая подпись XMLDSIG.
//
// Возвращаемое значение:
// Булево - результат проверки подписи.
//
Функция ПроверитьПодпись_XMLDSIG(СтрокаXML) Экспорт
SignedXML = Новый COMОбъект("CAdESCOM.SignedXML");
Корректная = Ложь;
Попытка
SignedXML.Verify(СтрокаXML);
Корректная = Истина;
УровеньЖурнала = УровеньЖурналаРегистрации.Информация;
Комментарий = "Верная ЭП сообщения";
Исключение
УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение;
Комментарий = "Неверная ЭП сообщения";
КонецПопытки;
ЗаписьЖурналаРегистрации("CAdESCOM.SignedXML.Verify", УровеньЖурнала, , Комментарий);
Возврат Корректная;
КонецФункции // ПроверитьПодпись_XMLDSIG()
Если требуется проверить подпись только ОВ или ПГУ, то в функцию Verify нужно передать строку с XPath-запросом, который выберет тег Signature, хранящийся в теге Security с атрибутом actor="http://smev.gosuslugi.ru/actors/smev".
Комментарии
Отправить комментарий