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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Fomich  
#1 Оставлено : 12 июля 2013 г. 11:59:05(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Fomich  
#2 Оставлено : 12 июля 2013 г. 13:58:19(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Fomich  
#3 Оставлено : 12 июля 2013 г. 14:11:33(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 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 получаю ошибку. Что я делаю не так?Eh?
Offline Новожилова Елена  
#4 Оставлено : 12 июля 2013 г. 15:17:37(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Fomich  
#5 Оставлено : 12 июля 2013 г. 15:42:39(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 21
Российская Федерация

Поблагодарили: 2 раз в 2 постах
"An error was encountered while processing an XML digital signature. (0x800705BA)"
В dbgView ничего не выводится. Сейчас попробую с шаблоном.
Offline Fomich  
#6 Оставлено : 15 июля 2013 г. 11:01:03(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 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>, то получим такую же ошибку.
Offline Fomich  
#7 Оставлено : 16 июля 2013 г. 15:26:19(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 21
Российская Федерация

Поблагодарили: 2 раз в 2 постах
Автор: Fomich Перейти к цитате

Так же опытным путем установлено, что если пытаться подписать xml c главной нодой <Manifest></Manifest>, то получим такую же ошибку.

Точнее если подписывать <Manifest><Reference></Reference></Manifest> то возникает ошибка. В чем может быть причина? И как это обойти?

Offline Новожилова Елена  
#8 Оставлено : 18 июля 2013 г. 19:27:35(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 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>.

На сайт выложена новая версия плагина, попробуйте создать подпись в ней.
Offline Fomich  
#9 Оставлено : 19 июля 2013 г. 16:38:44(UTC)
Fomich

Статус: Участник

Группы: Участники
Зарегистрирован: 10.07.2013(UTC)
Сообщений: 21
Российская Федерация

Поблагодарили: 2 раз в 2 постах
В новой версии также не подписывается xml вида <Manifest><Reference></Reference></Manifest>. Собрал dsig ручками...
Offline Новожилова Елена  
#10 Оставлено : 24 июля 2013 г. 15:52:42(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 945
Женщина
Откуда: Крипто-Про

Поблагодарили: 117 раз в 106 постах
Автор: Fomich Перейти к цитате
В новой версии также не подписывается xml вида <Manifest><Reference></Reference></Manifest>. Собрал dsig ручками...


Какой тип подписи указываете и какой код ошибки получаете? Есть ли при этом ошибки в логе?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.