SignWSSE - как разместить подпись в одну строку

Здравствуйте!

Подскажите, пожалуйста, как разместить подпись в одну строку без переносов.

Дело в том, что мой подписанный xml-файл не проходит валидацию на ВШЭП. Выдает ошибку “The signature or decryption was invalid”. Хотя со стороны Калкан проверяю подпись через VerifyXML, валидация проходит успешно, пишет “Signature is ok”.

С АО НИТ написали, что нужно разместить подпись в одну строку без переносов. Подскажите, возможно ли реализовать это и каким образом? Поискала в списке флагов и не нашла ничего.

Заранее спасибо!

Здравствуйте.
Можете свой xml показать?

Добрый день. Такой возможности нет. И менять подпись после ее выхода не стоит - проверка будет отрицательной.

Если проверка в Kalkan проходит успешно, а ВШЭП “ругается” на подпись, то чаще всего ошибка в процессе отправки запроса.
Попросите, чтобы ВШЭП прислал именно тот вариант XML-файла, который они приняли для проверки.
И попробуйте отправить запрос через curl.

Здравствуйте!

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" S:mustUnderstand="1"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="sig-bb189f2c-f357-58b6-51c8-f707205cacd0">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soap"/>
</ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311"/>
<ds:Reference URI="#id-47a46987-5ce2-458c-8420-c66c8620750f">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34311"/>
<ds:DigestValue>/aZYZEPZtR6b6MRhibjsMETo1r95pPwFvV70j6Jthj8=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>nb4DDBUDw5XzdhPKB7sTDo9kj8wnNLTbubMgW25rgfLjRnB05OnDXaU7tU4nHlwO
3Jp3gGuDMZy7pFT6bnq5cw==</ds:SignatureValue>
<ds:KeyInfo Id="ki-bb189f2c-f357-58b6-51c8-f707205cacd1"><wsse:SecurityTokenReference wsu:Id="str-bb189f2c-f357-58b6-51c8-f707205cacd2"><wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">MIIEszCCBF2gAwIBAgIUPokgRj1rvq05RJXpg9KrT73Hj9YwDQYJKoMOAwoBAQEC

BQAwUzELMAkGA1UEBhMCS1oxRDBCBgNVBAMMO9Kw0JvQotCi0KvSmiDQmtCj05jQ

m9CQ0J3QlNCr0KDQo9Co0Ksg0J7QoNCi0JDQm9Cr0pogKEdPU1QpMB4XDTIzMDEw

OTA5NDUwOVoXDTI0MDEwOTA5NDUwOVowggFFMSQwIgYDVQQDDBvQqNCY0JHQmNCi

0J7QkiDQkNCd0JTQoNCV0JkxFzAVBgNVBAQMDtCo0JjQkdCY0KLQntCSMRgwFgYD

VQQFEw9JSU43ODEwMDczMDMzMDMxCzAJBgNVBAYTAktaMX0wewYDVQQKDHTQotC+

0LLQsNGA0LjRidC10YHRgtCy0L4g0YEg0L7Qs9GA0LDQvdC40YfQtdC90L3QvtC5

INC+0YLQstC10YLRgdGC0LLQtdC90L3QvtGB0YLRjNGOICLQmtCw0YDQsNC60YPQ

tNGD0LrQvNGD0L3QsNC5IjEYMBYGA1UECwwPQklOMDYwNDQwMDAyOTQyMR0wGwYD

VQQqDBTQndCY0JrQntCb0JDQldCS0JjQpzElMCMGCSqGSIb3DQEJARYWQW5kcmV5

LlNoaWJpdG92QGtrbS5rejBsMCUGCSqDDgMKAQEBATAYBgoqgw4DCgEBAQEBBgoq

gw4DCgEDAQEAA0MABEDc7c3BKPTsSJVYlQCurOvHm0qjusURl5Vi6LJYuonOsgKx

molVS9L5hcGXxb8QznhmFNujUA/oX7ABPzT+SxiOo4ICAzCCAf8wDgYDVR0PAQH/

BAQDAgbAMCgGA1UdJQQhMB8GCCsGAQUFBwMEBggqgw4DAwQBAgYJKoMOAwMEAQIC

MF4GA1UdIARXMFUwUwYHKoMOAwMCATBIMCEGCCsGAQUFBwIBFhVodHRwOi8vcGtp

Lmdvdi5rei9jcHMwIwYIKwYBBQUHAgIwFwwVaHR0cDovL3BraS5nb3Yua3ovY3Bz

MFgGA1UdHwRRME8wTaBLoEmGImh0dHA6Ly9jcmwucGtpLmdvdi5rei9uY2FfZ29z

dC5jcmyGI2h0dHA6Ly9jcmwxLnBraS5nb3Yua3ovbmNhX2dvc3QuY3JsMFwGA1Ud

LgRVMFMwUaBPoE2GJGh0dHA6Ly9jcmwucGtpLmdvdi5rei9uY2FfZF9nb3N0LmNy

bIYlaHR0cDovL2NybDEucGtpLmdvdi5rei9uY2FfZF9nb3N0LmNybDBjBggrBgEF

BQcBAQRXMFUwLwYIKwYBBQUHMAKGI2h0dHA6Ly9wa2kuZ292Lmt6L2NlcnQvbmNh

X2dvc3QuY2VyMCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC5wa2kuZ292Lmt6MB0G

A1UdDgQWBBQ+iSBGPWu+rTlElemD0qtPvceP1jAPBgNVHSMECDAGgARbanPpMBYG

BiqDDgMDBQQMMAoGCCqDDgMDBQEBMA0GCSqDDgMKAQEBAgUAA0EA/U3BD8Qwj0m9

KwgsTASX4Oh8NSaBvGcf/eEvL4r/eOr2p3vY8mWg+nANVCJA89qD616qBp2zo0kQ

OdDv/eI4iQ==</wsse:KeyIdentifier></wsse:SecurityTokenReference></ds:KeyInfo>
</ds:Signature></wsse:Security></SOAP-ENV:Header>
<S:body xmlns:ns2="http://bip.bee.kz/SyncChannel/v10/Types" xmlns:ns3="http://bip.bee.kz/SyncChannel/v10/Types/Request" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-47a46987-5ce2-458c-8420-c66c8620750f">
<ns2:SendMessage>
<request>
<requestInfo>
<messageId>7b794c91-4411-4b18-40cb-441581d117ad</messageId>
<serviceId>ISUN_Service2</serviceId>
<messageDate>2023-10-20T11:21:27.5231318Z</messageDate>
<sender/>
<senderId>*******</senderId>
<password>********</password>
</requestInfo>
<requestData xmlns:ns5="http://message.persistence.interactive.nat" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<data xsi:type="ns5:Request">
<events>
<id>308701</id>
<datetime>2023-10-20T11:21:27.5231318Z</datetime>
<deviceTypeId>2</deviceTypeId>
<operationTypeId>3</operationTypeId>
<deviceNameId>7</deviceNameId>
<productTypeId>1</productTypeId>
<temperature>38.89</temperature>
<density>0.83</density>
<tankLevel>0</tankLevel>
<volume>0</volume>
<pipelineId>0</pipelineId>
<massflowbegin>0</massflowbegin>
<massflowend>0</massflowend>
<mass>0</mass>
</events>
</data>
</requestData>
</request>
</ns2:SendMessage>
</S:body>
</S:Envelope>

Здравствуйте!

Попробую, спасибо за подсказку!

Подскажите каким методом (или способом) формируете подпись что она у вас так странно вставляется в соап конверт.

Метод SignWSSE

kalkan.SignWSSE("", 16777232, xmlString, “id-47a46987-5ce2-458c-8420-c66c8620750f”, out signedXml);

16777232 - числовое значение флага 0x01000010. Этот флаг использовала для того, чтобы задать алгоритм transform в таком виде:

<ds:Transform Algorithm=“http://www.w3.org/2001/10/xml-exc-c14n# ”/>

Подскажите, пожалуйста, может ли неверно отформатированный soap провоцировать данную ошибку?

Добрый день!

Пробовали?

Здравствуйте!

Да, попробовала через curl. Выдает ошибку “Error reading XMLStreamReader”. Насколько я поняла это ошибка вызвана неправильной структурой xml. С АО НИТ говорят, что сбит хэш. Но не знаю, что могла вызвать его изменение, я никак не меняю xml после подписи.

Я даже отправляла простейший xml с подписью и без подписи, чтобы просто посмотреть выдаст ли ВШЭП другую ошибку, но ошибка всегда одна и та же.

Подскажите, пожалуйста, возможно у вас есть предположения, чем может быть вызвана данная ошибка?