Создание XADES-BES с префиксом «ds»

Я использовал класс signedxml для создания подписи xml. И результат xml, как показано ниже;

  <Signature Id="orderSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
                        <SignedInfo>
                            <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
                            <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
           .............
           ......
           ...
    </Signature>
    <Object>....</Object>

Мне нужно сгенерировать формат XADES-BES xml, поэтому я хочу добавить префикс «ds:» к signedxml.

без «ds» моя проверка подписи работает нормально, ее формат XMLDSIG, как вы знаете,

Когда я хочу сгенерировать XADES-BES, мы должны добавить префикс «ds» ко всем сигнатурным и дочерним элементам, как показано ниже;

<ds:Signature Id="orderSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
                            <ds:SignedInfo>
                                <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
                                <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
               .............
               ......
               ...
        </ds:Signature>
        <ds:Object>....</ds:Object>

И если вы добавите этот префикс после подписания, это не сработает.

Итак, я прочитал все выпуски об этом, и не было никакого решения,,

Мне действительно нужно xmlsignature с префиксом «ds».

Есть ли кто-нибудь, чтобы помочь мне с этим вопросом???

Спасибо.


person Turgay Gençer    schedule 29.05.2012    source источник
comment
возможный дубликат Создание подписи xml с префиксом ds   -  person emboss    schedule 31.05.2012
comment
возможный дубликат .NET Signed XML Prefix   -  person Maarten Bodewes    schedule 28.07.2012
comment
@emboss указал на другой вопрос, на который указывал ваш вопрос из-за дубликатов   -  person Maarten Bodewes    schedule 28.07.2012
comment
Тургай Генцер, вы повторно задаете вопрос, который уже был отмечен как дублирующийся. Пожалуйста, прекратите такой спам.   -  person Maarten Bodewes    schedule 28.07.2012


Ответы (1)


Я действительно не понимаю, почему вы хотите добавить префикс ds в пространство имен.

Имея это:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature">
  <ds:SignedInfo Id="SignedInfo">
 <ds:CanonicalizationMethod ...

Полностью эквивалентен:

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Signature">
   <SignedInfo Id="SignedInfo">
 <CanonicalizationMethod ...

В первом случае вы должны указать ds для элементов в http://www.w3.org/2000/09/xmldsig#, во втором случае это пространство имен является пространством имен по умолчанию, поэтому каждый элемент в xml без объявленного префикса принадлежит этому пространству имен.

Кроме того, вы говорите, что вам нужно добавить префикс ds, чтобы иметь XAdES-BES, и вы что-то комментируете о разнице между подписями xmldsig и xades. Вы должны знать, что XAdES — это всего лишь спецификация, в которой говорится, какие атрибуты необходимы подписи XMLDSIG, чтобы стать подписью XAdES. Грубо говоря, XAdES — это подпись XMLDSIG, которая включает в себя: <Object http://www.w3.org/2000/09/xmldsig#>, которая будет содержать весь набор подходящих свойств, некоторые из которых подписаны (signedProperties), а некоторые — неподписаны (unsignedProperties). Для случая XAdES-BES необходимо добавить <xades:SigningCertificate xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"> внутрь элемента <xades:SignedProperties>.

Здесь я привожу вам пример подписи XAdES-BES «без» префикса ds.

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Signature">
<SignedInfo Id="SignedInfo">
    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    <Reference Id="SignedProperties-Reference" Type="http://uri.etsi.org/01903/v1.2.2#SignedProperties" URI="#SignedProperties">
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <DigestValue>fiKTaqJzLSmC73cMXZSzjhd877w=</DigestValue>
    </Reference>
    <Reference Id="SignedDataObject-Reference-1" URI="DetachedObjectReference-1">
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <DigestValue>8ruIS/4MRp2wAwVX4/pTCYxTyWc=</DigestValue>
    </Reference>
</SignedInfo>
<SignatureValue Id="DocumentSignatureValue">
    R40YdEEEl0YIZVdl4pm3yyF7qGAG8ZN8PPf0aBRXbvRgdIcvJZtI5AS5NexaO5T4O0gMHWRIKjNb
    2QzlfwxlQ3/KqMW4W0QkMLpF4csBpXt9bJ3t+smEeTnxkBcQRXAw5v9kwf20mfz1LtIUhbsU/PMd
    YwaGCsItF2rzl3rtcq4=
</SignatureValue>
<KeyInfo Id="KeyInfo">
    <X509Data>
        <X509Certificate>
            MIIIUTCCBzmgAwI...
        </X509Certificate>
    </X509Data>
    <KeyValue>
        <RSAKeyValue>
            <Modulus>
              pb0cJiodddCDVe/t+7...
            </Modulus>
            <Exponent>AQAB</Exponent>
        </RSAKeyValue>
    </KeyValue>
</KeyInfo>
<Object>
    <xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="QualifyingProperties" Target="#Signature">
        <xades:SignedProperties Id="SignedProperties">
            <xades:SignedSignatureProperties>
                <xades:SigningCertificate>
                    <xades:Cert>
                        <xades:CertDigest>
                            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                            <DigestValue>UZq4NIL9eVVA7aJixPeiUTM3nOM=</DigestValue>
                        </xades:CertDigest>
                        <xades:IssuerSerial>
                            <X509IssuerName>XXXXXXXXXXXX....</X509IssuerName>
                            <X509SerialNumber>705964899...</X509SerialNumber>
                        </xades:IssuerSerial>
                    </xades:Cert>
                </xades:SigningCertificate>
            </xades:SignedSignatureProperties>
            <xades:SignedDataObjectProperties/>
        </xades:SignedProperties>
    </xades:QualifyingProperties>
</Object>

Hope this helps,

person albciff    schedule 31.03.2014