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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline idle  
#1 Оставлено : 10 марта 2017 г. 7:55:48(UTC)
idle

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

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


  • Win 10
  • IE 11
  • Plugin 2.0
  • CSP 4.0 R2 (9842)


Доброго дня,

Пытаюсь подписать xml с использованием шаблона.
Если использовать URI с указанием нужно узла подпись производится успешно,
однако xsd схема не позволяет проставлять пользовательские атрибуты узлам,
поэтому решил в шаблоне использовать преобразования xslt, а URI оставить пустым.

Подписываемый документ выглядит так:

Код:

<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06">
    <CstmrCdtTrfInitn>
        <PmtInf>
            <PmtInfId>some</PmtInfId>
        </PmtInf>
        <SplmtryData>
            <Envlp>
                <SgntrSt>
                    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                        <ds:SignedInfo id="sig-some">
                            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                            <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
                            <ds:Reference URI="">
                                <ds:Transforms>
                                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>

                                    <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
                                        <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
                                            <xsl:template match="/">
                                                <xsl:copy-of select="//*[local-name()='PmtInfId'][text()='some']/.."/>
                                            </xsl:template>
                                        </xsl:transform>
                                    </ds:Transform>

                                </ds:Transforms>
                                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
                                <ds:DigestValue/>
                            </ds:Reference>
                        </ds:SignedInfo>
                        <ds:SignatureValue/>
                        <ds:KeyInfo/>
                    </ds:Signature>
                </SgntrSt>
            </Envlp>
        </SplmtryData>
    </CstmrCdtTrfInitn>
</Document>


В ходе подписания выдаётся ошибка: "Не удалось подписать документ. Ошибка при обработке цифровой подписи XML".

Журнал dbgView во вложении.
1.log (5kb) загружен 3 раз(а).

Код js выглядит так:
Код:

    var oSigner = cadesplugin.CreateObject("CAdESCOM.CPSigner");
    oSigner.Certificate = oCertificate;

    var oSignedXML = cadesplugin.CreateObject("CAdESCOM.SignedXML");
    oSignedXML.Content = dataToSign;

    oSignedXML.SignatureType = 2;

    var signed = oSignedXML.Sign(oSigner);
    return signed;


Возможно я что-то упускаю и в oSignedXML нужно для такого сценария устанавливать какие-то доп. параметры?
Как правильно подписать подобный документ при помощи плагина?
Offline idle  
#2 Оставлено : 14 марта 2017 г. 14:42:49(UTC)
idle

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

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

Для потомков: по всей видимости xslt трансформации не поддерживаются.

Элементы в документах, подобных обсуждаемому, можно подписать по шаблону при помощи трансформаций xpath.


Код:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo id="sig-some">
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
        <ds:Reference URI="">
            <ds:Transforms>
                <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <ds:XPath>ancestor-or-self::PmtInf</ds:XPath>
                </ds:Transform>
                <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <ds:XPath>//*[local-name()='PmtInfId'][text()='some']/..</ds:XPath>
                </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
            <ds:DigestValue/>
        </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue/>
    <ds:KeyInfo/>
</ds:Signature>


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