Статус: Участник
Группы: Участники
Зарегистрирован: 10.01.2018(UTC) Сообщений: 15  Сказал(а) «Спасибо»: 1 раз
|
 c14.txt (1kb) загружен 11 раз(а). body.txt (1kb) загружен 15 раз(а). fss.xml (7kb) загружен 14 раз(а).Помогите разобраться как правильно вычисляется HASH для <DigestValue>? ФСС ругается на не корректность подписи отправляемого мною xml-файла. Поэтому решил пойти от обратного и проверить HASH в ответном сообщении от ФСС.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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"> <SOAP-ENV:Header> <wsse:Security S:actor="http://eln.fss.ru/actor/fss/ca/1027739443236"> <wsse:BinarySecurityToken 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" wsu:Id="http://eln.fss.ru/actor/fss/ca/1027739443236">MIIJcTCCCRygAwIBAgIQAdV4RMhCEaAAAAFHA+gAAjAMBggqhQMHAQEDAgUAMIIB2DEYMBYGBSqF A2QBEg0xMDI3NzM5NDQzMjM2MT0wOwYDVQQJDDTQntGA0LvQuNC60L7QsiDQv9C10YDQtdGD0LvQ vtC6LCDQtC4gMywg0LrQvtGA0L8uINCQMRowGAYIKoUDA4EDAQESDDAwNzczNjA1NjY0NzELMAkG A1UEBhMCUlUxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxGDAWBgNVBAgMDzc3INCc0L7RgdC6 0LLQsDEdMBsGCSqGSIb3DQEJARYOaW5mby11Y0Bmc3MucnUxZzBlBgNVBAoMXtCk0L7QvdC0INGB 0L7RhtC40LDQu9GM0L3QvtCz0L4g0YHRgtGA0LDRhdC+0LLQsNC90LjRjyDQoNC+0YHRgdC40LnR gdC60L7QuSDQpNC10LTQtdGA0LDRhtC40LgxLjAsBgNVBAsMJdCm0LXQvdGC0YDQsNC70YzQvdGL 0Lkg0LDQv9C/0LDRgNCw0YIxZzBlBgNVBAMMXtCk0L7QvdC0INGB0L7RhtC40LDQu9GM0L3QvtCz 0L4g0YHRgtGA0LDRhdC+0LLQsNC90LjRjyDQoNC+0YHRgdC40LnRgdC60L7QuSDQpNC10LTQtdGA 0LDRhtC40LgwHhcNMTkxMDAxMTA0MzAwWhcNMjEwMTAxMTA0MzAwWjCCAbkxGjAYBggqhQMDgQMB ARIMMDA3NzM2MDU2NjQ3MRgwFgYFKoUDZAESDTEwMjc3Mzk0NDMyMzYxLjAsBgNVBAsMJdCm0LXQ vdGC0YDQsNC70YzQvdGL0Lkg0LDQv9C/0LDRgNCw0YIxZzBlBgNVBAoMXtCk0L7QvdC0INGB0L7R htC40LDQu9GM0L3QvtCz0L4g0YHRgtGA0LDRhdC+0LLQsNC90LjRjyDQoNC+0YHRgdC40LnRgdC6 0L7QuSDQpNC10LTQtdGA0LDRhtC40LgxPTA7BgNVBAkMNNCe0YDQu9C40LrQvtCyINC/0LXRgNC1 0YPQu9C+0LosINC0LiAzLCDQutC+0YDQvy4g0JAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAx GDAWBgNVBAgMDzc3INCc0L7RgdC60LLQsDELMAkGA1UEBhMCUlUxZzBlBgNVBAMMXtCk0L7QvdC0 INGB0L7RhtC40LDQu9GM0L3QvtCz0L4g0YHRgtGA0LDRhdC+0LLQsNC90LjRjyDQoNC+0YHRgdC4 0LnRgdC60L7QuSDQpNC10LTQtdGA0LDRhtC40LgwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggq hQMHAQECAgNDAARAWE547ZGPxMp9MQeDCwvQyicAobxGamrrqzOFpabdEeDE3YGrQPjAIcTLp76E AAbvZV+u4XjjOXfrpMiwh5hiI4EJADAzRTgwMDAyo4IExzCCBMMwDgYDVR0PAQH/BAQDAgPYMB0G A1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAnBgNVHSAEIDAeMAgGBiqFA2RxATAIBgYqhQNk cQIwCAYGKoUDZHEDMDIGBSqFA2RvBCkMJ9Ca0YDQuNC/0YLQvtCf0YDQviBDU1Ag0LLQtdGA0YHQ uNGPIDQuMDCCAaAGBSqFA2RwBIIBlTCCAZEMb9Ch0YDQtdC00YHRgtCy0L4g0LrRgNC40L/RgtC+ 0LPRgNCw0YTQuNGH0LXRgdC60L7QuSDQt9Cw0YnQuNGC0Ysg0LjQvdGE0L7RgNC80LDRhtC40Lgg KNCh0JrQl9CYKSAiVmlQTmV0IENTUCA0Igxa0J/RgNC+0LPRgNCw0LzQvNC90YvQuSDQutC+0LzQ v9C70LXQutGBICJWaVBOZXQg0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGA IDQiDFzQl9Cw0LrQu9GO0YfQtdC90LjQtSDQviDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Lgg4oSW IDE0OS8zLzIvMi0yMDUyINC+0YIgMjkuMDEuMjAxNCDQs9C+0LTQsAxk0KHQtdGA0YLQuNGE0LjQ utCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yOTMyINC+0YIgMTAg 0LDQstCz0YPRgdGC0LAgMjAxNiDQs9C+0LTQsDAMBgNVHRMBAf8EAjAAMH8GCCsGAQUFBwEBBHMw cTBvBggrBgEFBQcwAoZjaHR0cDovL2UtdHJ1c3QuZ29zdXNsdWdpLnJ1L1NoYXJlZC9Eb3dubG9h ZENlcnQ/dGh1bWJwcmludD1CNjIzMDRCMTU0Qjk2NTk5MUYwMkQ0OThBM0UyN0M4M0YxMkE1RkMz MDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9mc3MucnUvdWMvR1VDX0ZTU19SRl8yMDE5LmNybDCC AWAGA1UdIwSCAVcwggFTgBSVVLlVMbdsssTrKkJyGP7xZnjflqGCASykggEoMIIBJDEeMBwGCSqG SIb3DQEJARYPZGl0QG1pbnN2eWF6LnJ1MQswCQYDVQQGEwJSVTEYMBYGA1UECAwPNzcg0JzQvtGB 0LrQstCwMRkwFwYDVQQHDBDQsy4g0JzQvtGB0LrQstCwMS4wLAYDVQQJDCXRg9C70LjRhtCwINCi 0LLQtdGA0YHQutCw0Y8sINC00L7QvCA3MSwwKgYDVQQKDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GM INCg0L7RgdGB0LjQuDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMRowGAYIKoUDA4EDAQESDDAw NzcxMDQ3NDM3NTEsMCoGA1UEAwwj0JzQuNC90LrQvtC80YHQstGP0LfRjCDQoNC+0YHRgdC40LiC CwC1RWhKAAAAAAGfMCsGA1UdEAQkMCKADzIwMTkxMDAxMTA0MzAwWoEPMjAyMDEwMDExMDQzMDBa MBsGA1UdEQQUMBKBEGcucHJ5YW1vdkBmc3MucnUwHQYDVR0OBBYEFAryzW2jdIM8hWYyJf12iPSn N5iRMAwGCCqFAwcBAQMCBQADQQChumRyc4IqrADZN9NGvJBAYeEspDEMx06Gth6HvJMDAnaeps7I O5h39pPIcDKc5agj316WPHpHmkzG78i+U/RU</wsse:BinarySecurityToken> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/> <SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/> <Reference URI="#OGRN_1027739443236"> <Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/> </Transforms> <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/> <DigestValue>jinpHKkJFN2YCEQnVnzwFYHwuWe0v+InQwlVWjiHEGo=</DigestValue> </Reference> </SignedInfo> <SignatureValue>aaBaUQpEk5RIa/dZeH3Q/Z9FtDr9VobV9CUGs/ziZuhknfUQe3Mzmd+9nLrTZe/g+WTKTOaHGTd/ qx+ooTJ5Rw==</SignatureValue> <KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI="#http://eln.fss.ru/actor/fss/ca/1027739443236" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/> </wsse:SecurityTokenReference> </KeyInfo> </Signature> </wsse:Security> </SOAP-ENV:Header> <S:Body wsu:Id="OGRN_1027739443236"> <ns1:getNewLNNumResponse xmlns:ns1="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <ns1:fileOperationsLnUserGetNewLNNumOut> <ns1:REQUEST_ID>LNNUMMO_1022601163970_2020_10_21_00009</ns1:REQUEST_ID> <ns1:STATUS>0</ns1:STATUS> <ns1:MESS>ORA-20001: Некорректная подпись головной организации: ЭЦП неверна. INVALID_SIGNATURE ЭП недействительна. Обратитесь к разработчику программного обеспечения, на котором осуществлялось подписание данных.</ns1:MESS> <ns1:DATA xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </ns1:fileOperationsLnUserGetNewLNNumOut> </ns1:getNewLNNumResponse> </S:Body> </S:Envelope>
1. беру узел <body> сообщения от ФСС, и вставляю его в файл body.txt Код:
<S:Body wsu:Id="OGRN_1027739443236">
<ns1:getNewLNNumResponse xmlns:ns1="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<ns1:fileOperationsLnUserGetNewLNNumOut>
<ns1:REQUEST_ID>LNNUMMO_1022601163970_2020_10_21_00009</ns1:REQUEST_ID>
<ns1:STATUS>0</ns1:STATUS>
<ns1:MESS>ORA-20001: Некорректная подпись головной организации: ЭЦП неверна. INVALID_SIGNATURE ЭП недействительна. Обратитесь к разработчику программного обеспечения, на котором осуществлялось подписание данных.</ns1:MESS>
<ns1:DATA xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</ns1:fileOperationsLnUserGetNewLNNumOut>
</ns1:getNewLNNumResponse>
</S:Body>
2. утилитой xmllint привожу этот файл к каноническому виду Код:
xmllint --exc-c14n body.txt >c14.txt
3. получаю файл c14.txt Код:
<S:Body wsu:Id="OGRN_1027739443236">
<ns1:getNewLNNumResponse xmlns:ns1="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl">
<ns1:fileOperationsLnUserGetNewLNNumOut>
<ns1:REQUEST_ID>LNNUMMO_1022601163970_2020_10_21_00009</ns1:REQUEST_ID>
<ns1:STATUS>0</ns1:STATUS>
<ns1:MESS>ORA-20001: Некорректная подпись головной организации: ЭЦП неверна. INVALID_SIGNATURE ЭП недействительна. Обратитесь к разработчику программного обеспечения, на котором осуществлялось подписание данных.</ns1:MESS>
<ns1:DATA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></ns1:DATA>
</ns1:fileOperationsLnUserGetNewLNNumOut>
</ns1:getNewLNNumResponse>
</S:Body>
4. утилитой cpverify вычисляю HASH файла c14.txt, получаю результат в HEX Код:
cpverify -mk -alg GR3411_2012_256 c14.txt
6476C35D3455FCFF588BD00DDC823F598C0BDE94CA2E99E80989349C48C7A2F2
или после перевода в base64 Код:
ZHbDXTRV/P9Yi9AN3II/WYwL3pTKLpnoCYk0nEjHovI=
Однако значение <DigestValue> ФСС отображает как Код:
<DigestValue>jinpHKkJFN2YCEQnVnzwFYHwuWe0v+InQwlVWjiHEGo=</DigestValue>
что соответствует hex Код:
8E29E91CA90914DD98084427567CF01581F0B967B4BFE2274309555A3887106A
т.е. получаются разные значения HASH
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.01.2018(UTC) Сообщений: 15  Сказал(а) «Спасибо»: 1 раз
|
ФУУУ!!! Сам разобрался. Оказывается в <BODY> надо вставить атребуты родителя, а xmllint уже сам выкинет от туда все лишнее
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.09.2020(UTC) Сообщений: 5
Сказал(а) «Спасибо»: 3 раз
|
Напиши подробнее какие аттрибуты?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.01.2018(UTC) Сообщений: 15  Сказал(а) «Спасибо»: 1 раз
|
Автор: maslito  Напиши подробнее какие аттрибуты? запустите в командной строке Код:
xmllint --exc-c14n body.txt
xmllint - сам "ругнется" чего там не хватает Методом "тыка" вставьте недостающий атрибут из родительского узла например было Код:
<ds:Signature Id="SIG-2b48f7f4-bf09-42be-947a-1daf1c48729f" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
надо добавить атрибут xmlns:ds="http://www.w3.org/2000/09/xmldsig# чтобы стало так Код:
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#>
можно даже вставить все атрибуты родителя, xmllint все равно удалит лишние Удачи
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Добавлю такие поправки по терминологии: 1) это не просто все подряд атрибуты, а "объявления пространств имен" (xmlns [двоеточие префикс]="URN_имя_пространства_имен") и специальные атрибуты с префиксом xml (xml:lang="ru" например) - они отличаются от остальных тем, что наследуются в теги-потомки; 2) само их множество называется "ancestor context" или "контекст предков"; 3) если не копировать часть строки, а использовать библиотеки работы с xml для выделения фрагмента из документа, то контекст предков вставится в результат автоматически, без подбора методом тыка.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.01.2018(UTC) Сообщений: 15  Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans  3) если использовать библиотеки работы с xml для выделения фрагмента из документа, то контекст предков вставится в результат автоматически, без подбора методом тыка.
А вот это интересно. В xmllint я такого не шел в параметрах
Parse the XML files and output the result of the parsing --version : display the version of the XML library used --debug : dump a debug tree of the in-memory document --shell : run a navigating shell --debugent : debug the entities defined in the document --copy : used to test the internal copy implementation --recover : output what was parsable on broken XML documents --huge : remove any internal arbitrary parser limits --noent : substitute entity references by their value --noenc : ignore any encoding specified inside the document --noout : don't output the result tree --path 'paths': provide a set of paths for resources --load-trace : print trace of all external entities loaded --nonet : refuse to fetch DTDs or entities over network --nocompact : do not generate compact text nodes --htmlout : output results as HTML --nowrap : do not put HTML doc wrapper --valid : validate the document in addition to std well-formed check --postvalid : do a posteriori validation, i.e after parsing --dtdvalid URL : do a posteriori validation against a given DTD --dtdvalidfpi FPI : same but name the DTD with a Public Identifier --timing : print some timings --output file or -o file: save to a given file --repeat : repeat 100 times, for timing or profiling --insert : ad-hoc test for valid insertions --compress : turn on gzip compression of output --html : use the HTML parser --xmlout : force to use the XML serializer when using --html --nodefdtd : do not default HTML doctype --push : use the push mode of the parser --pushsmall : use the push mode of the parser using tiny increments --memory : parse from memory --maxmem nbbytes : limits memory allocation to nbbytes bytes --nowarning : do not emit warnings from parser/validator --noblanks : drop (ignorable?) blanks spaces --nocdata : replace cdata section with text nodes --format : reformat/reindent the output --encode encoding : output in the given encoding --dropdtd : remove the DOCTYPE of the input docs --pretty STYLE : pretty-print in a particular style 0 Do not pretty print 1 Format the XML content, as --format 2 Add whitespace inside tags, preserving content --c14n : save in W3C canonical format v1.0 (with comments) --c14n11 : save in W3C canonical format v1.1 (with comments) --exc-c14n : save in W3C exclusive canonical format (with comments) --nsclean : remove redundant namespace declarations --testIO : test user I/O support --catalogs : use SGML catalogs from $SGML_CATALOG_FILES otherwise XML Catalogs starting from file:///etc/xml/catalog are activated by default --nocatalogs: deactivate all catalogs --auto : generate a small doc on the fly --xinclude : do XInclude processing --noxincludenode : same but do not generate XInclude nodes --nofixup-base-uris : do not fixup xml:base uris --loaddtd : fetch external DTD --dtdattr : loaddtd + populate the tree with inherited attributes --stream : use the streaming interface to process very large files --walker : create a reader and walk though the resulting doc --pattern pattern_value : test the pattern support --chkregister : verify the node registration code --relaxng schema : do RelaxNG validation against the schema --schema schema : do validation against the WXS schema --schematron schema : do validation against a schematron --sax1: use the old SAX1 interfaces for processing --sax: do not build a tree but work just at the SAX level --oldxml10: use XML-1.0 parsing rules before the 5th edition --xpath expr: evaluate the XPath expression, imply --noout
Можете посоветовать такую либу? Желательно для WIN/MAC/LINUX И либо с командной строки, либо на С++ Или лучше канонизировать весь файл, а потом вытащить от туда нужный мне блок? Просто я подумал, что есть либа которой указываешь весь файл и блок который надо канонизировать. Отредактировано пользователем 24 октября 2020 г. 14:41:12(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: cutecode  В xmllint я такого не шел в параметрах ... --xpath expr: evaluate the XPath expression, imply --noout ... Можете посоветовать такую либу? Желательно для WIN/MAC/LINUX И либо с командной строки, либо на С++ Через XPath в теории можно выбрать все что угодно. По спецификации первой версии это работает так: документ представляется в виде дерева узлов и для каждого узла вычисляется указанное выражение: если оно истинно, то узел включается в результат. Можно, например, указать выбор если ancestor-or-self (предок, не обязательно родитель, или сам узел) имеет атрибут Id с нужным значением (или является определенным тегом), что как раз выберет поддерево ниже нужного узла (фрагмент). Есть еще Xpath2. Конкретно про xmllint не проверял вставляет ли он при вычислении XPath весь контекст предков, но теоретически должен как минимум добавить недостающее. Автор: cutecode  Или лучше канонизировать весь файл, а потом вытащить от туда нужный мне блок? Просто я подумал, что есть либа которой указываешь весь файл и блок который надо канонизировать. К сожалению, если применить 1) приведение к каноническому виду потом 2) взятие фрагмента результат будет иной чем если применить сначала 2) потом 1). Ну, для простых фрагментов (как SignedInfo) конечно разницы не будет, но более-менее сложный фрагмент запроса уже даст различие. Так что обычно это 2 разные операции - сначала выбор, потом каноничный вид. В целом, проблема еще шире - каноничный вид во версии конкретной отечественной ГИС может не совпасть с каноничным видом из зарубежных библиотек.
В своей программе в итоге сделал вычисление контекста предков через постепенное поднятие по дереву от целевого фрагмента к корню. Создаю "виртуальный тег" для контекста предков. Добавляю только наследуемые атрибуты и объявления пространств имен. Если атрибут с таким именем уж есть, то новый игнорируется (при поднятии по дереву). В итоге фрагмент и "виртуальный тег" (контекст) идут на вход c14n, где постепенно затребываются недостающие данные из контекста. Все вроде хорошо, но просто ужасно долго.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.08.2017(UTC) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
Добрый день. Пытаюсь понять, от чего рассчитан хеш в спецификации ФСС версии 2:  full_from_spec_v20.xml (17kb) загружен 11 раз(а).Судя по <Reference URI="#REGNO_6312023223">, то от всего тега <BODY>. Привел <BODY> к каноническому виду:  body_from_spec_v20.xml (2kb) загружен 12 раз(а).Но хеш не совпадает. Привел к каноническому виду тег <ROW>:  row_from_spec_v20_canonical.xml (1kb) загружен 2 раз(а).Но и от него хеш не совпадает с тем, что в спецификации. Так и застрял на этом моменте...
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.11.2020(UTC) Сообщений: 17  Поблагодарили: 2 раз в 2 постах
|
Автор: Михаил К.  Добрый день. Пытаюсь понять, от чего рассчитан хеш в спецификации ФСС версии 2:  full_from_spec_v20.xml (17kb) загружен 11 раз(а).Судя по <Reference URI="#REGNO_6312023223">, то от всего тега <BODY>. Привел <BODY> к каноническому виду:  body_from_spec_v20.xml (2kb) загружен 12 раз(а).Но хеш не совпадает. А вы заменили CRLF на LF? Они должны быть заменены, а пробелы сохранены. Иначе будет ой.
|
 1 пользователь поблагодарил Norguhtar за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.08.2017(UTC) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
Исправил переносы строк, пробелы оставил  body_from_spec_v20.xml (2kb) загружен 6 раз(а).. Считал хэш и с коментариями и без. Все равно не выхожу на тот хеш, что в примере.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close