none
SignedXml - подписание запроса с дпоплнительной трансформацией "urn://smev-gov-ru/xmldsig/transform" RRS feed

  • Вопрос

  • Добрый день, коллеги!

    Пытаюсь подписать SOAP запрос для СМЭВ 3 отсоединенной подписью. Для подписания используется SignedXml.

    Перед подписанием необходимо провести две трансформации : стандартную XmlDsigExcC14NTransform - с ней нет проблем. И нестандартную, реализации которой от Transform не унаследовано.

    Трансформацию эту, насколько я понимаю, можно проделать и руками до передачи данных в SignedXml, однако в этом случае в блоке SignedInfo запись о ней не появится.

    Собственно, вопрос следующий. Возможно ли добавить в блок <Transforms> блок записи о трансформации (которая кстати имеет алгоритм : "urn://smev-gov-ru/xmldsig/transform") без проведения этой трансформации и (естественно) порчи подписи?

    Т.е. структура результирующего документа должна быть следующей (за вычетом комментариев)

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns1="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"> <soapenv:Header /> <soapenv:Body> <ns:SendResponseRequest> <ns:SenderProvidedResponseData Id="SIGNED_BY_PROVIDER" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns1="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"> <ns:MessageID>d37b6d00-ed9c-11e4-b80c-0800200c9a66</ns:MessageID> <ns:To>3219|x-artefacts-gibdd-gov-ru_breach_root_1.0_BreachRequest|0e8cfc01-5e81-11e4-a9ff-d4c9eff07b77</ns:To> <ns1:MessagePrimaryContent> <ns2:Response xmlns:ns2="http://ns.rospotrebnadzor.ru/rpnopeka3/1.0.0">1</ns2:Response> </ns1:MessagePrimaryContent> </ns:SenderProvidedResponseData> <ns:CallerInformationSystemSignature> <Signature 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="#SIGNED_BY_PROVIDER"> <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> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" /> <DigestValue>digest_value</DigestValue> </Reference> </SignedInfo> <SignatureValue>signature_value</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>certificate_info</X509Certificate> </X509Data> </KeyInfo> </Signature> </ns:CallerInformationSystemSignature></ns:SendResponseRequest> </soapenv:Body> </soapenv:Envelope>

    Спасибо!

    28 апреля 2015 г. 13:10