Блок подписи размещается как дочерний для элемента DATA_PACKET_NI, на одном уровне с прикладными данными.
Значение подписи должно рассчитываться для содержимого элемента DATA_PACKET_NI и его составных элементов.
В процессе создания электронной подписи информационной системы должны использоваться следующие алгоритмы для расчета хеш-сумм, формирования подписи и каноникализации:
Расчет хэш-сумм: ГОСТ Р 34.11-94,
http://www.w3.org/2001/04/xmldsig-more#gostr3411Формирования подписи: ГОСТ Р 34.10-2001,
http://www.w3.org/2001/0...#gostr34102001-gostr3411Каноникализация: Exclusive XML Canonicalization от 18 July 2002,
http://www.w3.org/2001/10/xml-exc-c14n#Формирование блока электронной подписи, соответствующей блоку структурированных данных осуществляется в следующем порядке:
1. Формирование шаблона документа:
1.1. Создается элемент Signature;
1.2. К элементу Signature добавляется дочерний элемент SignedInfo;
1.3. К элементу SignedInfo добавляется дочерний элемент CanonicalizationMethod;
1.4. К элементу SignedInfo добавляется дочерний элемент SignatureMethod;
1.5. К элементу SignedInfo добавляется первый дочерний элемент Reference;
1.6. К элементу Reference добавляется дочерний элемент Transforms;
1.7. К элементу Transforms элемента Reference добавляется дочерний элемент Transform (два элемента);
1.8. К элементу Reference добавляется элемент DigestMethod;
1.9. К элементу Reference добавляется элемент DigestValue;
1.10. К элементу Signature добавляется дочерний элемент SignatureValue;
1.11. К элементу Signature добавляется дочерний элемент KeyInfo;
1.12. К элементу KeyInfo добавляется дочерний элемент X509Data;
1.13. К элементу X509Data добавляется дочерний элемент X509Certificate.
2. Установка предопределенных значений
2.1. Для элемента CanonicalizationMethod и для второго элемента Transform элемента Reference значения атрибута Algorithm устанавливается в «http://www.w3.org/2001/10/xml-exc-c14n#».
Для первого элемента Transform алгоритм выставляется значение "http://www.w3.org/2000/09/xmldsig#enveloped-signature".
2.2. Для элементов DigestMethod первого значения атрибута Algorithm устанавливается в "http://www.w3.org/2001/04/xmldsig-more#gostr3411".
2.3. Для элемента SignatureMethod значение атрибута Algorithm устанавливается в "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411".
2.5. Атрибут URI элемента Reference оставляем пустым
3. Установка подписи
3.1. Открытый ключ подписи, закодированный по алгоритму «http://www.w3.org/2000/09/xmldsig#base64», после удаления символов не входящих в алфавит Base64, добавляется к элементу X509Certificate как дочерний текстовый узел.
3.2. Подписывается документ, далее полученное значение кодируется по алгоритму «http://www.w3.org/2000/09/xmldsig#base64» и добавляется как дочерний текстовый узел к элементу DigestValue первого элемента Reference.
3.3. Элемент SignedInfo трансформируется в соответствии с алгоритмом «http://www.w3.org/2001/10/xml-exc-c14n#». Затем на основании полученной строки и ключа подписи формируется значение ЭП в соответствии с алгоритмом «http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411». Полученное значение ЭП кодируется в соответствии с алгоритмом «http://www.w3.org/2000/09/xmldsig#base64», символы не входящие в алфавит Base64 удаляются и полученное значение добавляется как дочерний текстовый узел к элементу SignatureValue.
Во вложении открытый ключ для шифрования (rpn.cer) и корневой сертификат УЦ (adi.cer)
Для шифрование файлов используется ГОСТ 28147-89 (симметричное шифрование) и DER-кодировка.