Статус: Новичок
Группы: Участники
Зарегистрирован: 26.05.2023(UTC) Сообщений: 6
|
Добрый день, Пробуем с командой подписать XML документ с помощью pycades, который отправляем в ФГИС Зерно. У них используются две трансформации: Код:<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>
Насколько я понял, такая трансформация не поддерживается в SignedXML по шаблону, каждый раз возникает одинаковая ошибка Код:Exception: Internal error. (0x80070490)
. Пробую также подписать вручную, но всякий раз сгенерированная подпись не принимается на той стороне. Вот так выглядит правильно подписанный документ, который принимается:
Код:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SendRequestRequest xmlns="urn://x-artefacts-mcx-gov-ru/fgiz-zerno/api/ws/types/1.0.3">
<MessageData Id="SIGNED_BY_CALLER">
<MessageID>8b8278fb-4faa-4ad6-b54e-733bb9d2175c</MessageID>
<ReferenceMessageID>8b8278fb-4faa-4ad6-b54e-733bb9d2175c</ReferenceMessageID>
<MessagePrimaryContent>
<dicts:Request xmlns:dicts="urn://x-artefacts-mcx-gov-ru/fgiz-zerno/api/ws/dictionaries/1.0.3">
<dicts:Dictionary>Agriculture</dicts:Dictionary>
<dicts:Paging pageLength="500" pageNumber="1"/>
</dicts:Request>
</MessagePrimaryContent>
</MessageData>
<InformationSystemSignature>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<ds:Reference URI="#SIGNED_BY_CALLER">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>sQHz/eSOd4AqKVOfAqRLQwMGEz40+qadBqDoev/9T8s=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>gBCqubSyZpSlSfVL2A3a0KgpYv+FGoSbpHWIOqE06HtwjQ41m2cv7ofvFEFQL279vVNxBdUzrQCpbT4GM6Unxg==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</InformationSystemSignature>
</SendRequestRequest>
</s:Body>
</s:Envelope>
В документации ФГИС Зерно в разделе ЭЦП сказано следующее: 1. Формат подписи: версия 1.5 спецификации PKCS#7 2. Для корневого элемента ContentInfo единственный допустимый contentType - SignedData. 3. Подпись должна быть detached, т.е. для элемента SignedData/contentInfo/contentType единственное допустимое значение - 1.2.840.113549.1.7.1, а элемент SignedData/contentInfo/content должен отсутствовать. 4. Для генерации ЭЦП применяется алгоритм ГОСТ Р 34.10-2012. Какими методами в pycades можно сгенерировать подпись такого формата? Я пробовал SignCades, Sign, передавал разные аргументы в эти функции, но подпись получается как минимум совершенно другого размера, ~1500 символов вместо короткой как в эталоне. Буду признателен за любые советы, за примеры реализации на питоне, php или просто через browser plugin как описано в документации https://docs.cryptopro.ru/cades/pycades
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close