Откройте актуальную версию документа прямо сейчас
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение 5
Описание элементов XML-Схемы
Корневым элементом ЭП является <ds:Signature>. Он содержит информацию о том, что было подписано, подпись, открытый ключ и место для сохранения блока данных:
<element Name="Signature" type="ds:SignatureType"/>
<complexType Name="SignatureType">
<sequence>
<element ref="ds:SignedInfo"/>
<element ref="ds:SignatureValue"/>
<element ref="ds:KeyInfo" minOccurs="0"/>
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute Name="Id" type="ID" use="optional"/>
</complexType>
Атрибут ds:Signature/@Id
Атрибут Id позволяет документу содержать множество подписей и обеспечивает возможность идентификации отдельных экземпляров:
<ds:Signature ds:xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo id="root">
Элемент ds:SignatureValue
Этот элемент содержит саму подпись. Поскольку всегда подписи - это двоичные данные, XML DSIG указывает, что значение подписи - это всегда простой элемент с Base64-кодированным содержимым:
<element Name="SignatureValue" type="ds:SignatureValueType"/>
<complexType Name="SignatureValueType">
<simpleContent>
<extension base="base64Binary">
<attribute Name="Id" type="ID" use="optional"/>
</extension>
</simpleContent>
</complexType>
Элемент ds:Object
Элемент ds:Object хранит в себе метаданные, такие как временная метка создания подписи:
<element name="Object" type="ds:ObjectType"/>
<complexType name="ObjectType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##any" processContents="lax"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="MimeType" type="string" use="optional"/>
<attribute name="Encoding" type="anyURI" use="optional"/>
</complexType>
Атрибут Id позволяет содержать в подписи множество объектов, к каждому из которых можно обращаться независимо. MimeType используется для идентификации данных, чтобы другие обработчики могли их использовать; он не имеет значения для DSIG-обработчика.
Атрибут Encoding
Encoding определяет, как подготовить содержимое к обработке; на данное время определено только кодирование base-64:
<ds:Object Id="ts-bin"
Encoding="http://www.w3.org/2000/09/xmldsig#base64">
V2VkIEp1biAgNCAxMjoxMTowMyBFRFQgMjAwMwo
</ds:Object>
<ds:Object Id="ts-text">
Wed Jun 4 12:11:06 EDT
</ds:Object>
Элемент ds:SignedInfo
Содержимое ds:SignedInfo может быть разделено на две части: информация о SignatureValue и информация о содержимом приложения, - как видно из следующего фрагмента XML Schema:
<element name="SignedInfo" type="ds:SignedInfoType"/>
<complexType name="SignedInfoType">
<sequence>
<element ref="ds:CanonicalizationMethod"/>
<element ref="ds:SignatureMethod"/>
<element ref="ds:Reference" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
Объектом наложения ЭП является канонизированный и нормализованный прикладной XML-документ, содержащий прикладной ЭД.
Элемент ds:CanonicalizationMethod
Элемент ds:SignedInfo/ds:CanonicalizationMethod определяет то, как точно воспроизводить поток байтов:
<ds:CanonicalizationMethod Algorithm="urn:xml-dsig:transformation:v1.1"/>
Элемент ds:SignatureMethod
Элемент ds:SignedInfo/ds:SignatureMethod определяет тип подписи:
<ds:SignedInfo id="root">
<ds:CanonicalizationMethod Algorithm="urn:xml-dsig:transformation:v1.1"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:
algorithms:gostr34102012-gostr34112012-256"/>
Элемент ds:Reference
Из описания схемы элемента ds:SignedInfoType, приведенного выше, подпись может иметь множество ссылок. Это позволяет одной XML DSIG охватывать множество объектов: все части XML-файла
Элемент ds:Reference ссылается на другое содержимое. Он включает хэш содержимого, свидетельство того, что хэш был создан, и определение того, как содержимое должно бы трансформировано перед генерированием хэша:
<element name="Reference" type="ds:ReferenceType"/>
<complexType name="ReferenceType">
<sequence>
<element ref="ds:Transforms" minOccurs="0"/>
<element ref="ds:DigestMethod"/>
<element ref="ds:DigestValue"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="URI" type="anyURI" use="optional"/>
<attribute name="Type" type="anyURI" use="optional"/>
</complexType>
Атрибут Type
Атрибут Type может обеспечить подсказку при обработке.
Атрибут URI
URI указывает на фактическое содержимое, к которому обращаются.
ds:DigestMethod определяет алгоритм хэширования, а ds:DigestValue - Base64-значение хэша содержимого.
Элемент KeyInfo
KeyInfo позволяет идентифицировать подписавшую сторону:
<element name="KeyInfo" type="ds:KeyInfoType"/>
<complexType name="KeyInfoType" mixed="true">
<choice maxOccurs="unbounded">
<element ref="ds:KeyName"/>
<element ref="ds:KeyValue"/>
<element ref="ds:RetrievalMethod"/>
<element ref="ds:X509Data"/>
<element ref="ds:PGPData"/>
<element ref="ds:SPKIData"/>
<element ref="ds:MgmtData"/>
<any processContents="lax" namespace="##other"/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
</choice>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
К обычным значениям ds:KeyName относятся адрес электронной почты или элемент справочника.
Элемент ds:X509Data
Сертификаты X.509 поддерживаются элементом ds:X509Data. Этот элемент позволяет подписывающей стороне встраивать свой сертификат (в Base64):
<element name="X509Data" type="ds:X509DataType"/>
<complexType name="X509DataType">
<sequence maxOccurs="unbounded">
<choice>
<element name="X509IssuerSerial"type="ds:X509IssuerSerialType"/>
<element name="X509SKI" type="base64Binary"/>
<element name="X509SubjectName" type="string"/>
<element name="X509Certificate" type="base64Binary"/>
<element name="X509CRL" type="base64Binary"/>
<any namespace="##other" processContents="lax"/>
</choice>
</sequence>
</complexType>
<complexType name="X509IssuerSerialType">
<sequence>
<element name="X509IssuerName" type="string"/>
<element name="X509SerialNumber" type="integer"/>
</sequence>
</complexType>
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.