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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
ipaymushkin76  
#1 Оставлено : 6 февраля 2019 г. 12:42:19(UTC)
Guest

Статус: Гость

Группы: Гости
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 4

Всем доброго дня!

Поставили мне задачу подписания xml документов. Подписываю через plugin на клиенте. У меня есть шаблон, делаю подпись по шаблону. Вот код:

Код:
return new Promise(function (resolve, reject) {
            cadesplugin.async_spawn(function* (args) {

                // const thumbprint = certSubjectName.split(" ").reverse().join("").replace(/\s/g, "").toUpperCase();

                try {
                    const oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
                    yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
                    const CertificatesObj = yield oStore.Certificates;

                    const oCertificates = yield CertificatesObj.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certSubjectName);
                    // const oCertificates = yield CertificatesObj.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
                    const Count = yield oCertificates.Count;
                    if (Count === 0) {
                        throw("Certificate not found: " + args[0]);
                    }
                    const oCertificate = yield oCertificates.Item(1);
                    const PublicKey = yield oCertificate.PublicKey();
                    const Algorithm = yield PublicKey.Algorithm;
                    const FriendlyName = yield Algorithm.FriendlyName;
                    const oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
                    yield oSigner.propset_Certificate(oCertificate);


                    let alg
                    if (FriendlyName === 'ГОСТ Р 34.10-2012 256 бит') {
                        alg = 256;
                    } else if (FriendlyName === 'ГОСТ Р 34.10-2012 512 бит') {
                        alg = 512;
                    }
                    if (!alg) {
                        throw("Поддерживаются только сертификаты с алгоритмом 2012г (256 или 512)");
                    }

                    const dataToSign = xmlTemplate(xml, certificate.value, alg);
                    const oSignedXML = yield cadesplugin.CreateObjectAsync("CAdESCOM.SignedXML");
                    yield oSignedXML.propset_Content(dataToSign);
                    yield oSignedXML.propset_SignatureMethod(eval('signatureMethod' + alg));
                    yield oSignedXML.propset_DigestMethod(eval('digestMethod' + alg));
                    yield oSignedXML.propset_SignatureType(2);

                    // const sSignedMessage = yield oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, false);
                    const sSignedMessage = yield oSignedXML.Sign(oSigner);
                    yield oSignedXML.Verify(sSignedMessage);

                    yield oStore.Close();
                    const result = sSignedMessage.replace(/\s+/g, ' ');
                    const formatted = xmlFormatter(xmlFormatter(result, '<ds:SignatureValue>', '</ds:SignatureValue>'), '<ds:DigestValue>' , '</ds:DigestValue>');
                    args[1](formatted);
                } catch (err) {
                    console.log(err)
                    args[2]("Failed to create signature. Error " + err.message);
                }
            }, certSubjectName, resolve, reject);
        });


P.S: смутило что после подписания методом Sign в <ds:SignatureValue> и <ds:DigestValue> в середину хеш значения почему то были вставлены 4 пробела и перенос строки. Чтобы убрать это, я написал функцию для форматирования.

Так же я делаю проверку подписи на клиенте методом Verify, эту проверку подписаный документ проходит. Вот мой подписанный документ:

Код:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:med="http://medicata.ru/schemas/v1/medicata" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-CB674337BFE1EE4CBB15493659164131">MIID0zCCA4KgAwIBAgITEgAyHq1CUF8kfZbwJQAAADIerTAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTkwMjA1MDczMTExWhcNMTkwNTA1MDc0MTExWjCBmTEhMB8GCSqGSIb3DQEJARYSRGVhZG9rMTVAZ21haWwuY29tMREwDwYDVQQDDAhQYXNzd29yZDERMA8GA1UECwwIZnJvbnRlbmQxEDAOBgNVBAoMB2l0LWFjZXMxGzAZBgNVBAcMElBlcmVzbGF2bC1aYWxlc3NreTESMBAGA1UECAwJWWFyb3NsYXZsMQswCQYDVQQGEwJSVTCBqjAhBggqhQMHAQEBAjAVBgkqhQMHAQIBAgEGCCqFAwcBAQIDA4GEAASBgNMYRpsRit09NOAECQJC0vu3MRk+aI0I17Gh3bflRnHzvq2ohoYeZ5PCz1UW8i0nzeKdsbkm7q5YJNh079XmclyB8HW69YXAKFlo2Q4t/n/GZSv0i2eaKkZJqJWpKz3ljSGoTNmp8Il8gagGYSCrQ3x3yHpnIr/k+F4KZf3yXmrvo4IBcDCCAWwwDgYDVR0PAQH/BAQDAgbAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBR9Y3je8fmwJNtbOfNKB5OmCaHEVzAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZBgNVHR8EUjBQME6gTKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsGAQUFBzAChlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAEovbj0vAQbYEzg+JRoxP7LF9YngSdro+dOGYhmWt4vczrLL7+UFTrBEcYJ53l74D6yoFbmG0TTH65NsBEsOqI0=</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" wsu:Id="SIG-1"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="SOAP-ENV ds med wsse wsu xsi"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"/><ds:Reference URI="#body"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ds med wsse xsi"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"/><ds:DigestValue>0n1Led8Om7nxUzQJxBFYjGN91uAsyKo/oJfoecJvKJK+OglEje0L/2lCi94nd7XbnDWbdswYLm+o923lbgBWMQ==</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>xf/hvbp/JDPeYrgQGJQTJycMPqYGGzTBd3/9tEHoIiVOTvg6Tu1XKpuTrAgZIpvYbmObSqGUHWk+X7Jv104o+nhRmQE2vqjPQQAlVukNqIl5u1c6pi+ZdZzVnhUixzg147hoZo4aeIpKupxRlnHlO1t8i1jAGU8fRasAJjKwc00=</ds:SignatureValue><ds:KeyInfo wsu:Id="KI-CB674337BFE1EE4CBB15493659164182"><wsse:SecurityTokenReference wsu:Id="STR-CB674337BFE1EE4CBB15493659164213"><wsse:Reference URI="#X509-CB674337BFE1EE4CBB15493659164131" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="body"><Pharmacy><Identification><ID>c1740d51-3b5b-4ffc-aa86-b9f416604f3f</ID><Ogrn>1037832003714</Ogrn><LicenceNumber>ЛО-78-03-000477</LicenceNumber><MedicareNumber>12341234</MedicareNumber></Identification><BusinessName>12341234</BusinessName><Address><AddressText>197228, г. Санкт Петербург, Дибуновская ул., д.28, лит.А, пом. №61</AddressText></Address><CommunicationNumbers><PrimaryTelephone>+7 (777) 777-77-77</PrimaryTelephone><ElectronicMail>567567@erwer.rt</ElectronicMail><OtherTelephone>+7 (777) 777-77-77</OtherTelephone></CommunicationNumbers></Pharmacy><Pharmacist><Identification>dd781576-5a5d-4b98-8cf9-14a3ff7142c7</Identification><Name><LastName>Фамилия</LastName><FirstName>Имя</FirstName><MiddleName>Отчество</MiddleName></Name></Pharmacist><med:Pharmacy><med:Identification><med:ID>5</med:ID></med:Identification></med:Pharmacy><med:Patient><med:Identification><med:Snils>123</med:Snils></med:Identification></med:Patient></SOAP-ENV:Body></SOAP-ENV:Envelope>


После этого, подписанный документ отправляю на сервер. Наш бекендщик сказал что КриптоПро выдал ошибку что подпись невалидна. Далее я отдал бекендщику сообщение которое надо подписать и свой сертификат. Он отдал мне следующий уже валидный XML:

Код:
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:med="http://medicata.ru/schemas/v1/medicata" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-CB674337BFE1EE4CBB15493659164131">MIID0zCCA4KgAwIBAgITEgAyHq1CUF8kfZbwJQAAADIerTAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTkwMjA1MDczMTExWhcNMTkwNTA1MDc0MTExWjCBmTEhMB8GCSqGSIb3DQEJARYSRGVhZG9rMTVAZ21haWwuY29tMREwDwYDVQQDDAhQYXNzd29yZDERMA8GA1UECwwIZnJvbnRlbmQxEDAOBgNVBAoMB2l0LWFjZXMxGzAZBgNVBAcMElBlcmVzbGF2bC1aYWxlc3NreTESMBAGA1UECAwJWWFyb3NsYXZsMQswCQYDVQQGEwJSVTCBqjAhBggqhQMHAQEBAjAVBgkqhQMHAQIBAgEGCCqFAwcBAQIDA4GEAASBgNMYRpsRit09NOAECQJC0vu3MRk+aI0I17Gh3bflRnHzvq2ohoYeZ5PCz1UW8i0nzeKdsbkm7q5YJNh079XmclyB8HW69YXAKFlo2Q4t/n/GZSv0i2eaKkZJqJWpKz3ljSGoTNmp8Il8gagGYSCrQ3x3yHpnIr/k+F4KZf3yXmrvo4IBcDCCAWwwDgYDVR0PAQH/BAQDAgbAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBR9Y3je8fmwJNtbOfNKB5OmCaHEVzAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZBgNVHR8EUjBQME6gTKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsGAQUFBzAChlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAEovbj0vAQbYEzg+JRoxP7LF9YngSdro+dOGYhmWt4vczrLL7+UFTrBEcYJ53l74D6yoFbmG0TTH65NsBEsOqI0=</wsse:BinarySecurityToken><ds:Signature Id="SIG-1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="SOAP-ENV ds med wsse wsu xsi"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"/><ds:Reference URI="#body"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ds med wsse xsi"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"/><ds:DigestValue>0n1Led8Om7nxUzQJxBFYjGN91uAsyKo/oJfoecJvKJK+OglEje0L/2lCi94nd7XbnDWbdswYLm+o923lbgBWMQ==</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>qrNnS8F63lGPo29LES1s6f6hOQO3EwiK/JPvdpLmASeIdj9F/VWfbFIDjirz5a0KwwybKwGuP1clQXZ1JjHgcqMA1qAPCXNJde2H78EfmB8WzTf6PocEM031DxqEbUrvrlEsYjLIxIuJUFhDvzfgVvU234JxfhDL06CL9OLZVCk=</ds:SignatureValue><ds:KeyInfo Id="KI-CB674337BFE1EE4CBB15493659164182"><wsse:SecurityTokenReference wsu:Id="STR-CB674337BFE1EE4CBB15493659164213"><wsse:Reference URI="#X509-CB674337BFE1EE4CBB15493659164131" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body wsu:Id="body" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><Pharmacy><Identification><ID>c1740d51-3b5b-4ffc-aa86-b9f416604f3f</ID><Ogrn>1037832003714</Ogrn><LicenceNumber>ЛО-78-03-000477</LicenceNumber><MedicareNumber>12341234</MedicareNumber></Identification><BusinessName>12341234</BusinessName><Address><AddressText>197228, г. Санкт Петербург, Дибуновская ул., д.28, лит.А, пом. №61</AddressText></Address><CommunicationNumbers><PrimaryTelephone>+7 (777) 777-77-77</PrimaryTelephone><ElectronicMail>567567@erwer.rt</ElectronicMail><OtherTelephone>+7 (777) 777-77-77</OtherTelephone></CommunicationNumbers></Pharmacy><Pharmacist><Identification>dd781576-5a5d-4b98-8cf9-14a3ff7142c7</Identification><Name><LastName>Фамилия</LastName><FirstName>Имя</FirstName><MiddleName>Отчество</MiddleName></Name></Pharmacist><med:Pharmacy><med:Identification><med:ID>5</med:ID></med:Identification></med:Pharmacy><med:Patient><med:Identification><med:Snils>123</med:Snils></med:Identification></med:Patient></SOAP-ENV:Body></SOAP-ENV:Envelope>



После сравнение 2 документов я нашел отличия:

1) <ds:SignatureValue> отличаются (но это вроде как ок)
2) вместо Id="SIG-1" я делаю wsu:Id="SIG-1"

Голову ломаю, ничего не получается.

Подскажите что не так и что нужно поправить?

UPD: выяснилось что проблема с SignatureValue, почему то клиентский SignatureValue невалиден.

Отредактировано пользователем 6 февраля 2019 г. 13:16:46(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 6 февраля 2019 г. 13:31:00(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 397 раз в 367 постах
Автор: ipaymushkin76 Перейти к цитате
P.S: смутило что после подписания методом Sign в <ds:SignatureValue> и <ds:DigestValue> в середину хеш значения почему то были вставлены 4 пробела и перенос строки. Чтобы убрать это, я написал функцию для форматирования.
Ничего страшного в этом нет, стандарт допускает переводы строк, при условии что перевод - символ с кодои 10, без всяких кодов 13. Смысл в том, что на классических терминалах было 80 символов в строке, поэтому для удобства сделали перевод строки после 76 кажется. Для цифровой подписи это совсем не нужно, но тип значения перехал из более старого стандарта и перевод строки не стали запрещать. Если переводить в base64 функцией Windows, то даже можно отключить флагом. А так я, например, просто выкидываю символы у которых код меньше или равен коду пробела (32) при декодировании base64. В xml из них разрешены только коды 9,10,13,32 и ни один из них не несет нагрузки в base64.
Автор: ipaymushkin76 Перейти к цитате

Так же я делаю проверку подписи на клиенте методом Verify, эту проверку подписаный документ проходит.

После этого, подписанный документ отправляю на сервер. Наш бекендщик сказал что КриптоПро выдал ошибку что подпись невалидна. Далее я отдал бекендщику сообщение которое надо подписать и свой сертификат. Он отдал мне следующий уже валидный XML:
Вот это уже странно что то проходит, то не проходит
Автор: ipaymushkin76 Перейти к цитате

После сравнение 2 документов я нашел отличия:

1) <ds:SignatureValue> отличаются (но это вроде как ок)
2) вместо Id="SIG-1" я делаю wsu:Id="SIG-1"

Голову ломаю, ничего не получается.

Подскажите что не так и что нужно поправить?

UPD: выяснилось что проблема с SignatureValue, почему то клиентский SignatureValue невалиден.
Чуть позже тоже проверю своей программкой.

Отредактировано пользователем 6 февраля 2019 г. 13:34:48(UTC)  | Причина: Не указана

ipaymushkin76  
#3 Оставлено : 6 февраля 2019 г. 13:37:03(UTC)
Guest

Статус: Гость

Группы: Гости
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 4

Цитата:
Вот это уже странно что то проходит, то не проходит

Не совсем так: на клиенте всегда Verify нормально проходит, а на сервере я не знаю как все это проверяется, доступа туда нет.
Offline two_oceans  
#4 Оставлено : 7 февраля 2019 г. 12:30:01(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 397 раз в 367 постах
Автор: two_oceans Перейти к цитате
Чуть позже тоже проверю своей программкой.
Программка моя пока отказалась опознавать 2012-512, так что пока откладывается.
Автор: ipaymushkin76 Перейти к цитате
После сравнение 2 документов я нашел отличия:
1) <ds:SignatureValue> отличаются (но это вроде как ок)
2) вместо Id="SIG-1" я делаю wsu:Id="SIG-1"
Уточнил по схеме xmlns:ds="http://www.w3.org/2000/09/xmldsig#", в элементе Signature уже есть необязательный атрибут Id с типом ID. Для сравнения в схеме SOAP-ENV:Body атрибута Id нет, но разрешены любые атрибуты других пространств. В данном случае подпись одна и не имеет ссылок на свойства xades, других ссылок на SIG-1 нет, можно вообще Id не указывать.

По самому документу: очень интересно, что столько префиксов указываете в InclusiveNamespaces. Они точно нужны? В CanonicalizationMethod/InclusiveNamespaces вообще из перечисленных используется реально только ds (он и без указания все равно выберется в тег верхнего уровня фрагмента SignedInfo). В Transform/InclusiveNamespaces тоже реально используется только префикс med. Еще меня насторожило указание кучи тегов без префикса, ведь объявления пространства по умолчанию в документе нет. Предполагаю, что они должны быть с префиксом med.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.