Статус: Участник
Группы: Участники
Зарегистрирован: 27.05.2015(UTC) Сообщений: 10  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 1 раз
|
Добрый день! Подписываем XML посредством КриптоПро ЭЦП Browser plug-in. Версия плагина: 2.0.12245 (NMAPI). Версия CSP: 4.0.9589. Тип подписи - подпись по шаблону. В целом с задачей справились - подпись успешно формируется и валидируется. Но есть следующий вопрос: возможно ли исключить сертификат из блока <ds:X509Data>? Сейчас туда попадает всё содержимое сертификата, что очень сильно увеличивает размер XML. Хотелось бы передавать в составе XML только 2 атрибута сертификата - <ds:X509IssuerName> и <ds:X509SerialNumber>. Тестовый исходный шаблон: Код:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<uid>112233</uid>
<date>2016-02-16T11:03:51+03:00</date>
<ds:Signature Id="supplier" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"/>
<ds:DigestValue></ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue></ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data></ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</test>
Результат подписывания: Код:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<uid>112233</uid>
<date>2016-02-16T11:03:51+03:00</date>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="supplier">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"/>
<ds:DigestValue>OVVArrf9jOQSG6BJjnxsVylDnsoxf2JEE9Ve9eb0kJg=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>fTw9zEKSYf8iramLSaCG6q0UXHe27Zm6s3XQCTq7ykk8hu66fvdTya1Z3On6lXzg
uis7+IbcyrEY4GEK4I5IsQ==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIIwzCCCHCgAwI ...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</test>
Хотелось бы получить: Код:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<uid>112233</uid>
<date>2016-02-16T11:03:51+03:00</date>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="supplier">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"/>
<ds:DigestValue>OVVArrf9jOQSG6BJjnxsVylDnsoxf2JEE9Ve9eb0kJg=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>fTw9zEKSYf8iramLSaCG6q0UXHe27Zm6s3XQCTq7ykk8hu66fvdTya1Z3On6lXzg
uis7+IbcyrEY4GEK4I5IsQ==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509IssuerSerial>
<ds:X509IssuerName>...</ds:X509IssuerName>
<ds:X509SerialNumber>...</ds:X509SerialNumber>
</ds:X509IssuerSerial>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</test>
Такое возможно?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.07.2013(UTC) Сообщений: 49  Откуда: Ставрополь Сказал(а) «Спасибо»: 6 раз Поблагодарили: 1 раз в 1 постах
|
Скорее нет чем да. Дело в том что для проверки подписи необходим открытый ключ, который хранится в сертификате. Если Вы все таки захотите не хранить тело сертификата в xml, то Вам придется самостоятельно реализовывать проверку подписи. Стандартные же механизмы проверки подписи xmldsig не будут работать.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.05.2015(UTC) Сообщений: 10  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 1 раз
|
IronRate, стандарт xmldsig допускает передачу в составе ЭП отдельных атрибутов сертификата, а не всего содержимого. И все прекрасно валидируется стандартными средствами. В нашем случае сертификат открытого ключа, которым будет проверяться ЭП, хранится в БД. И содержимое сертификата в XML для нас является избыточной информацией. К слову, в нашей системе на XML-данные накладывается 2 подписи. Первая, посредством браузерного плагина и мы не можем контролировать состав ЭП. Вторая, посредством КриптоПро JCP (Java), где в состав ЭП мы сами включаем только те атрибуты, которые нам действительно нужны.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.05.2015(UTC) Сообщений: 10  Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 1 раз
|
Уважаемые сотрудники КриптоПро! Очень жду от вас ответа на озвученный вопрос, т.к. для нас крайне критичен объем получаемого XML.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Средствами плагина это сделать не получится. Можно после изготовления подписи уже вручную удалить этот тег. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close