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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ivvitikhonov  
#1 Оставлено : 10 апреля 2019 г. 14:52:59(UTC)
ivvitikhonov

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

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

Добрый день!

Решаю задачу по формированию блока данных СМЭВ-конверта SenderProviderRequestData, который содержит PersonalSignature, для отправки на проверку в СМЭВ3.

1. Данные, которые должны быть подписаны (содержимое MessagePrimaryContent):

Код:
<ns1:ESIARegisterRequest xmlns:ns1="urn://mincomsvyaz/esia/reg_service/register/1.4.0" xmlns:ns2="urn://mincomsvyaz/esia/reg_service/register/1.4.0">
     <ns2:RoutingCode>DEV</ns2:RoutingCode>
</ns1:ESIARegisterRequest>


2. Шаблон для подписи:

Код:
<Document>
   <ns1:ESIARegisterRequest Id="PERSONAL_SIGNATURE" xmlns:ns1="urn://mincomsvyaz/esia/reg_service/register/1.4.0" xmlns:ns2="urn://mincomsvyaz/esia/reg_service/register/1.4.0"> 
      <ns2:RoutingCode>DEV</ns2:RoutingCode>
   </ns1:ESIARegisterRequest>
   <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      <SignedInfo>
          <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
          <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
          <Reference URI="#PERSONAL_SIGNATURE">
             <Transforms>
                 <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
             </Transforms>
             <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
             <DigestValue/>
          </Reference>
      </SignedInfo>
   <SignatureValue/>
   <KeyInfo/>
   </Signature>
</Document>


3. Подписываю плагином:

Код:
function SignXml(data, certificate) {
     var signer = cadesplugin.CreateObject("CAdESCOM.CPSigner");
     signer.Certificate = certificate;
     var signed = cadesplugin.CreateObject("CAdESCOM.SignedXML");
     signed.Content = data;
     signed.SignatureType = cadesplugin.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE;
     return signed.Sign(signer);
}


На последней строчке получаю ошибку: Ошибка при обработке цифровой подписи XML.

Экспериментальным путем было выяснено, что проблема в Id="PERSONAL_SIGNATURE" в блоке с данными.

На основе примера пришел к выводу, что для Id нужно добавлять namespace, например, xml:id. НО, по документации "Методические рекомендации по работе с ЕСМЭВ" Id должен быть без какого-либо namespace, иначе проверка не пройдет.


Подскажите, пожалуйста, как правильно сформировать xml-документ, чтобы он подписался через плагин и успешно проверился в СМЭВ3.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.