Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
Подскажите пожалуйста, как при помощи CAdESCOM.SignedXML подписать xml так, чтобы получилась цифровая подписать для docx. Код:Цитата: var oSignedXML = ObjCreator("CAdESCOM.SignedXML", browserName); oSignedXML.Content = "<test>Data To Sign</test>"; oSignedXML.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; oSignedXML.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; oSignedXML.SignatureType = 1; var sSignedXML = oSignedXML.Sign(oSigner);
На выходе получаю:Цитата: <?xml version="1.0"?> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/> <Reference URI="#Object1"> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/> <DigestValue>Pmu9ImEkXz+LdEv2OPOuTXAqADBsotSLhWXUzK4DXDc=</DigestValue> </Reference> </SignedInfo> <SignatureValue>5thn9b1CC1zyE00uWoUAdtWDR6i0MjatFl3i1Xe9Bqlgz7JJAVLJyIZp6TuJI3QG aYnORtDDwNd1YOqnvNQujA==</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIDQzCCAvKgAwIBAgIKZts+9gACAASYszAIBgYqhQMCAgMwZTEgMB4GCSqGSIb3 DQEJARYRaW5mb0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpD UllQVE8tUFJPMR8wHQYDVQQDExZUZXN0IENlbnRlciBDUllQVE8tUFJPMB4XDTEz MDcxMDA3MDIxOVoXDTE0MTAwNDA3MDk0MVowgYExITAfBgkqhkiG9w0BCQEWEmlv b2lvb2lAcmFtYmxlci5ydTEPMA0GA1UEAwwGU2VyZ2V5MRAwDgYDVQQLDAd0ZXN0 aW5nMQ0wCwYDVQQKDAR0ZXN0MQ8wDQYDVQQHDAZzYnRlc3QxDDAKBgNVBAgMA3Ni djELMAkGA1UEBhMCUlUwYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQND AARAnvo/WrJZTlw6sMX7d6HBmux/IO47Rpv1/etgQIMBX+yDWWetlarowgepS3jQ uOD9CVkEfm6X0pgdMpbF2PlIgaOCAWMwggFfMA4GA1UdDwEB/wQEAwIE8DATBgNV HSUEDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUGiWe9ufeQyuL7NEiD0u8iZ6f8kAw HwYDVR0jBBgwFoAUbY9eBdlfrJEXlB6VmgUwODd6ECowVQYDVR0fBE4wTDBKoEig RoZEaHR0cDovL3d3dy5jcnlwdG9wcm8ucnUvQ2VydEVucm9sbC9UZXN0JTIwQ2Vu dGVyJTIwQ1JZUFRPLVBSTygyKS5jcmwwgaAGCCsGAQUFBwEBBIGTMIGQMDMGCCsG AQUFBzABhidodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwbmMvb2NzcC5zcmYw WQYIKwYBBQUHMAKGTWh0dHA6Ly93d3cuY3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwv cGtpLXNpdGVfVGVzdCUyMENlbnRlciUyMENSWVBUTy1QUk8oMikuY3J0MAgGBiqF AwICAwNBAKYtbzI4SIa1xtEfLch7l6hNr5k5MJa6MPsWQ6sOXhZz3mu1obKgbC6J Ptevib3yvfgEF3IwS3KgASW6AfSOSuE=</X509Certificate> </X509Data> </KeyInfo> <Object Id="Object1"><Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> </Transforms> <test>Data To Sign</test></Object> </Signature>
А нужно ЭЦП для данных в docx файле:Цитата:<Signature Id="idPackageSignature" 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/2001/04/xmldsig-more#gostr34102001-gostr3411" /> <Reference URI="#idPackageObject" Type="http://www.w3.org/2000/09/xmldsig#Object"> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" /> <DigestValue>k61hjnStNIM2SBe+UftnOV+8PkNSTtPnTh72YsN7zuo=</DigestValue> </Reference> </SignedInfo> <SignatureValue>KhSfoyOg87K3JtAQaLL052cBgoNttqYwJjnm+y0r9bBJpdHX698WItv62S0qwelgHqZaQuer ZpGLkN9PXqG7Hw==</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIDPDCCAuugAwIBAgIKbEyxvgACAASa8TAIBgYqhQMCAgMwZTEgMB4GCSqGSIb3DQEJARYR aW5mb0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpDUllQVE8tUFJPMR8w HQYDVQQDExZUZXN0IENlbnRlciBDUllQVE8tUFJPMB4XDTEzMDcxMTA4MjM0MloXDTE0MTAw NDA3MDk0MVowezEhMB8GCSqGSIb3DQEJARYSaW9vaW9vaUByYW1ibGVyLnJ1MQ0wCwYDVQQD DARGb21tMQ0wCwYDVQQLDAR0ZXN0MQ0wCwYDVQQKDAR0ZXN0MQ0wCwYDVQQHDAR0ZXN0MQ0w CwYDVQQIDAR0ZXN0MQswCQYDVQQGEwJSVTBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMC Ah4BA0MABECcszNEVogIl0toLVlrwKqCfN8WTkaHWVu9tH7vcfX6B/EzjaOYh0blXcnSGFSz c8YxNtQvjhCoMG67YOI5BET6o4IBYzCCAV8wDgYDVR0PAQH/BAQDAgTwMBMGA1UdJQQMMAoG CCsGAQUFBwMCMB0GA1UdDgQWBBRvkE99MGKsBpibCYNdERQ72wXdqTAfBgNVHSMEGDAWgBRt j14F2V+skReUHpWaBTA4N3oQKjBVBgNVHR8ETjBMMEqgSKBGhkRodHRwOi8vd3d3LmNyeXB0 b3Byby5ydS9DZXJ0RW5yb2xsL1Rlc3QlMjBDZW50ZXIlMjBDUllQVE8tUFJPKDIpLmNybDCB oAYIKwYBBQUHAQEEgZMwgZAwMwYIKwYBBQUHMAGGJ2h0dHA6Ly93d3cuY3J5cHRvcHJvLnJ1 L29jc3BuYy9vY3NwLnNyZjBZBggrBgEFBQcwAoZNaHR0cDovL3d3dy5jcnlwdG9wcm8ucnUv Q2VydEVucm9sbC9wa2ktc2l0ZV9UZXN0JTIwQ2VudGVyJTIwQ1JZUFRPLVBSTygyKS5jcnQw CAYGKoUDAgIDA0EAVkY+ES0pHZMt5Sg+NGSPBleXtHAB12t8tnBwgI3D90+EyhTzfxhiln4m VHZXGEMjvuTMJfZPp1+YBYfzpCISmA==</X509Certificate> </X509Data> </KeyInfo> <Object Id="idPackageObject" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature"> <Manifest> <Reference URI="/word/data.xml?ContentType=application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>iSyiLGb8pz0/YRuxtZbrpKPSXH8=</DigestValue> </Reference> </Manifest> <SignatureProperties> <SignatureProperty Id="idSignatureTime" Target="#idPackageSignature"> <mdssi:SignatureTime> <mdssi:Format>YYYY-MM-DDThh:mm:ssTZD</mdssi:Format> <mdssi:Value>2013-07-11T11:26:38Z</mdssi:Value> </mdssi:SignatureTime> </SignatureProperty> </SignatureProperties> </Object> </Signature>
Отредактировано пользователем 12 июля 2013 г. 12:13:55(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
Вроде разобрался. Сначала надо создать xml для подписи с ссылкой на подписываемый файл и его хешэм: Цитата: <Manifest> <Reference URI="/word/data.xml?ContentType=application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>iSyiLGb8pz0/YRuxtZbrpKPSXH8=</DigestValue> </Reference> </Manifest>
Потом подписать эту xml, указав свойство SignatureType равное 0 (CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED - Вложенная подпись). Правильно ли я думаю? Отредактировано пользователем 12 июля 2013 г. 14:09:58(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
Цитата:<Manifest> <Reference URI="/word/data.xml?ContentType=application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>iSyiLGb8pz0/YRuxtZbrpKPSXH8=</DigestValue> </Reference> </Manifest> при подписывании такого xml получаю ошибку. Что я делаю не так?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 117 раз в 106 постах
|
Здравствуйте! Совместимость с подписью docx пока не тестировалась. Какую ошибку вы получаете и что написано в логе dbgView? Мне кажется, что в вашем случае лучше использовать подпись по шаблону: Создаете шаблон (можете взять готовую подпись из MSWord), не заполняете только узлы KeyInfo, DigestValue и SignatureValue. Указываете oSignedXML.SignatureType = CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE; // 2 Передаете подготовленный шаблон на подпись. Отредактировано пользователем 12 июля 2013 г. 15:25:18(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
"An error was encountered while processing an XML digital signature. (0x800705BA)" В dbgView ничего не выводится. Сейчас попробую с шаблоном.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
Взял xml шаблон из примера (http://cpdn.cryptopro.ru/content/csp36/html/group___x_m_l_example_doc_to_sign.html): Цитата:<?xml version="1.0" encoding="UTF-8"?> <ds:signatures xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:Signature Id="FirstSignature" > <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/> <ds:Reference URI="#obj" Type="http://www.w3.org/2000/09/xmldsig#;Object"> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/> <ds:DigestValue/> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue /> <ds:Object Id="obj" MimeType="text/xml">Hello, World!</ds:Object> <ds:KeyInfo></ds:KeyInfo> </ds:Signature> Код: Цитата:oSignedXML.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"; oSignedXML.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411"; oSignedXML.SignatureType = 2; oSignedXML.Content = xml; try { var sSignedXML = oSignedXML.Sign(oSigner); } catch (e) { alert("Не удалось создать подпись из-за ошибки: " + GetErrorMessage(e)); return; } В итоге все равно получаю ошибку ("An error was encountered while processing an XML digital signature. (0x800705BA)"). Так же опытным путем установлено, что если пытаться подписать xml c главной нодой <Manifest></Manifest>, то получим такую же ошибку.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
Автор: Fomich  Так же опытным путем установлено, что если пытаться подписать xml c главной нодой <Manifest></Manifest>, то получим такую же ошибку.
Точнее если подписывать <Manifest><Reference></Reference></Manifest> то возникает ошибка. В чем может быть причина? И как это обойти?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 117 раз в 106 постах
|
Цитата:Взял xml шаблон из примера (http://cpdn.cryptopro.ru/content/csp36/html/group___x_m_l_example_doc_to_sign.html): В приведенном вами фрагменте XML обрезан закрывающий тег </ds:signatures>. На сайт выложена новая версия плагина, попробуйте создать подпись в ней.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 21  Поблагодарили: 2 раз в 2 постах
|
В новой версии также не подписывается xml вида <Manifest><Reference></Reference></Manifest>. Собрал dsig ручками...
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 117 раз в 106 постах
|
Автор: Fomich  В новой версии также не подписывается xml вида <Manifest><Reference></Reference></Manifest>. Собрал dsig ручками... Какой тип подписи указываете и какой код ошибки получаете? Есть ли при этом ошибки в логе?
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close