(2022-06-09 12:10:53 отредактировано vanobl)

Подпись в формате XAdES-BES

Здравствуйте!
Для создания подписи использую статью https://dev.rutoken.ru/pages/viewpage.a … 0%BD%D0%B5

На данный момент подпись формируется так:

openssl dgst -keyform engine -sign "pkcs11:model=Rutoken%20ECP?pin-value=12345678" -engine rtengine -out folder_xml/my_signature file.xml

Подскажите, пожалуйста, как мне получить подпись формата XAdES-BES?

Re: Подпись в формате XAdES-BES

vanobl, добрый день!

OpenSSL не умеет формировать подпись в формате XAdES.

Предлагаем вам воспользоваться примером из Рутокен SDK.
Внутри архива, он находится по пути: sdk\openssl\samples\Common\XMLDSigDetached

Re: Подпись в формате XAdES-BES

Павел Анфимов пишет:

vanobl, добрый день!

OpenSSL не умеет формировать подпись в формате XAdES.

Предлагаем вам воспользоваться примером из Рутокен SDK.
Внутри архива, он находится по пути: sdk\openssl\samples\Common\XMLDSigDetached

Хочу уточнить, что в файле file.xml (который указан в примере) находится не исходный XML, который нужно подписать. А часть блока <ds:Signature>, а именно:

<ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod>
    <ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"></ds:SignatureMethod>
    <ds:Reference Id="xmldsig-07471c2e-e12b-4351-97c8-c42dfdfc840f-ref0" URI="#531d4574-34e3-49f5-b0fb-4a6ffdc94ada">
        <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform>
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></ds:DigestMethod>
        <ds:DigestValue>YmU1Y2RmMTA4NDBmNzRlYjkzYTk4N2Q1ZjUyMTM5OTIzZDkyNWVlYmE2NjgxZTUyMTMzZmE1ZjgzYTYyNzEwNw==</ds:DigestValue>
    </ds:Reference>
    <ds:Reference URI="#xmldsig-07471c2e-e12b-4351-97c8-c42dfdfc840f-signedprops" Type="http://uri.etsi.org/01903#SignedProperties">
        <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></ds:DigestMethod>
        <ds:DigestValue>MzM5Yzc3MjY4NTllNzdjNjRiY2JiNGU5ZWIwMjdjMTIxYWIyYjY3NzBlYzI2NDgzZDdjNWIxYWNmZTgxNDg4YQ==</ds:DigestValue>
    </ds:Reference>
</ds:SignedInfo>

И от этого блока нужно получить подпись. Т.е. саму структуру подписи для XML файла не нужно формировать, нужно заполнить определённые поля. И один из них это <ds:SignatureValue>

Возможно я не правильно понимаю алгоритм подписания XML. Буду рад, если поправите меня.

Re: Подпись в формате XAdES-BES

vanobl,

Пример выполнения XAdES-подписи нативными средствами находится в разработке. Принцип его работы аналогичен уже представленным в SDK примерам выполнения подписи XMLDSig.