Atom Лента - Форум КриптоПро - Тема:ФСС и xml-подпись. Как вычислить DigestValue? - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:FSSixml-podpis'.Kakvychislit'DigestValue?-10:1Copyright 2024 Форум КриптоПро2024-03-29T18:14:31Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.rutwo_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceanstwo_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceanszlovrednaya_dgohttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=61488&name=zlovrednaya_dgoМихаил К.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=46160&name=Михаил К.Norguhtarhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=57888&name=NorguhtarМихаил К.https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=46160&name=Михаил К.two_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceanscutecodehttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47490&name=cutecodetwo_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceanscutecodehttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47490&name=cutecodemaslitohttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=57457&name=maslitoYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid131030:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: zlovrednaya_dgo <a href="/forum2/default.aspx?g=posts&m=131020#post131020"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>странно то, что у ФСС хэш рассчитывается на основании госта CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 (ну то есть 34.11 2012), а в спецификации указано, что должен быть ГОСТ Р 34.11-94 (для первого хэша):<div class="quote"><span class="quotetitle">Цитата:</span><blockquote> К подписываемому элементу и его потомкам, включая атрибуты, применяется каноникализация <a rel="nofollow" href="http://www.w3.org/2001/10/xml-exc-c14n#," title="http://www.w3.org/2001/10/xml-exc-c14n#,">http://www.w3.org/2001/10/xml-exc-c14n#,</a> на основе результата рассчитывается хэш по алгоритму ГОСТ Р 34.11-94 и заносится в <ds:DigestValue> в формате Base64.</div></div></div></div>Коллега. "Спокойно, ... никакого секрета здесь нет". Проверяющему ПО глубоко все равно на спецификацию. Главное, что бы алгоритм распознавался этим ПО и хэш был вычислен по указанному алгоритму. Технически Вы можете вычислить DigestValue по алгоритму не совместимому с SignatureValue. Это алгоритм хэша от SignedInfo обязательно должен согласоваться с алгоритмом закрытого ключа. Текущий сертификат ФСС естественно выдан уже с алгоритмом ГОСТ-2012, ПО автоматически подстроило параметры под сертификат. Попутно скажу, что согласовать шифрование между сторонами, использующими гост-2001 и гост-2012, насколько помню не удавалось, а все клиенты тоже на гост-2012.<br /><br />А спецификацию поменять забыли - работает же.<br /><br /></td></tr></table>2022-02-01T11:52:48+03:002022-02-01T11:52:48+03:00two_oceans<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: zlovrednaya_dgo <a href="/forum2/default.aspx?g=posts&m=131020#post131020"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>странно то, что у ФСС хэш рассчитывается на основании госта CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 (ну то есть 34.11 2012), а в спецификации указано, что должен быть ГОСТ Р 34.11-94 (для первого хэша):<div class="quote"><span class="quotetitle">Цитата:</span><blockquote> К подписываемому элементу и его потомкам, включая атрибуты, применяется каноникализация <a rel="nofollow" href="http://www.w3.org/2001/10/xml-exc-c14n#," title="http://www.w3.org/2001/10/xml-exc-c14n#,">http://www.w3.org/2001/10/xml-exc-c14n#,</a> на основе результата рассчитывается хэш по алгоритму ГОСТ Р 34.11-94 и заносится в <ds:DigestValue> в формате Base64.</div></div></div></div>Коллега. "Спокойно, ... никакого секрета здесь нет". Проверяющему ПО глубоко все равно на спецификацию. Главное, что бы алгоритм распознавался этим ПО и хэш был вычислен по указанному алгоритму. Технически Вы можете вычислить DigestValue по алгоритму не совместимому с SignatureValue. Это алгоритм хэша от SignedInfo обязательно должен согласоваться с алгоритмом закрытого ключа. Текущий сертификат ФСС естественно выдан уже с алгоритмом ГОСТ-2012, ПО автоматически подстроило параметры под сертификат. Попутно скажу, что согласовать шифрование между сторонами, использующими гост-2001 и гост-2012, насколько помню не удавалось, а все клиенты тоже на гост-2012.<br /><br />А спецификацию поменять забыли - работает же.<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid131020:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer" width="100%"><tr><td>насчет хэша у cutecode (расчет DigestValue aka хэш). <br />если брать прилагаемый файл body.txt - то хэш не сойдется, но если же удалить пробелы из него - то станет ок.<br />проверяю через <a rel="nofollow" href="https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_xmldsig_sample.html" title="https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_xmldsig_sample.html">https://www.cryptopro.ru...ades_xmldsig_sample.html</a><br />и полученное на клиенте и сравниваю<br /><br />странно то, что у ФСС хэш рассчитывается на основании госта CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 (ну то есть 34.11 2012), а в спецификации указано, что должен быть ГОСТ Р 34.11-94 (для первого хэша):<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote> К подписываемому элементу и его потомкам, включая атрибуты, применяется каноникализация <a rel="nofollow" href="http://www.w3.org/2001/10/xml-exc-c14n#," title="http://www.w3.org/2001/10/xml-exc-c14n#,">http://www.w3.org/2001/10/xml-exc-c14n#,</a> на основе результата рассчитывается хэш по алгоритму ГОСТ Р 34.11-94 и заносится в <ds:DigestValue> в формате Base64.</div></div><br /></td></tr></table>2022-01-31T23:35:28+03:002022-01-31T23:35:28+03:00zlovrednaya_dgo<table class="content postContainer" width="100%"><tr><td>насчет хэша у cutecode (расчет DigestValue aka хэш). <br />если брать прилагаемый файл body.txt - то хэш не сойдется, но если же удалить пробелы из него - то станет ок.<br />проверяю через <a rel="nofollow" href="https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_xmldsig_sample.html" title="https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_xmldsig_sample.html">https://www.cryptopro.ru...ades_xmldsig_sample.html</a><br />и полученное на клиенте и сравниваю<br /><br />странно то, что у ФСС хэш рассчитывается на основании госта CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 (ну то есть 34.11 2012), а в спецификации указано, что должен быть ГОСТ Р 34.11-94 (для первого хэша):<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote> К подписываемому элементу и его потомкам, включая атрибуты, применяется каноникализация <a rel="nofollow" href="http://www.w3.org/2001/10/xml-exc-c14n#," title="http://www.w3.org/2001/10/xml-exc-c14n#,">http://www.w3.org/2001/10/xml-exc-c14n#,</a> на основе результата рассчитывается хэш по алгоритму ГОСТ Р 34.11-94 и заносится в <ds:DigestValue> в формате Base64.</div></div><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid122273:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer_Alt" width="100%"><tr><td>Исправил переносы строк, пробелы оставил [attach]9419[/attach].<br />Считал хэш и с коментариями и без. Все равно не выхожу на тот хеш, что в примере.</td></tr></table>2021-01-22T14:43:05+03:002021-01-22T14:43:05+03:00Михаил К.<table class="content postContainer_Alt" width="100%"><tr><td>Исправил переносы строк, пробелы оставил [attach]9419[/attach].<br />Считал хэш и с коментариями и без. Все равно не выхожу на тот хеш, что в примере.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid122136:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Михаил К. <a href="/forum2/default.aspx?g=posts&m=121858#post121858"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добрый день.<br /><br />Пытаюсь понять, от чего рассчитан хеш в спецификации ФСС версии 2:[attach]9383[/attach]<br />Судя по <span class="highlight"><Reference URI="#REGNO_6312023223"></span>, то от всего тега <BODY>.<br />Привел <BODY> к каноническому виду:[attach]9384[/attach]<br />Но хеш не совпадает.<br /></div></div><br />А вы заменили CRLF на LF? Они должны быть заменены, а пробелы сохранены. Иначе будет ой.<br /><br /></td></tr></table>2021-01-19T13:33:46+03:002021-01-19T13:33:46+03:00Norguhtar<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Михаил К. <a href="/forum2/default.aspx?g=posts&m=121858#post121858"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добрый день.<br /><br />Пытаюсь понять, от чего рассчитан хеш в спецификации ФСС версии 2:[attach]9383[/attach]<br />Судя по <span class="highlight"><Reference URI="#REGNO_6312023223"></span>, то от всего тега <BODY>.<br />Привел <BODY> к каноническому виду:[attach]9384[/attach]<br />Но хеш не совпадает.<br /></div></div><br />А вы заменили CRLF на LF? Они должны быть заменены, а пробелы сохранены. Иначе будет ой.<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid121858:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer_Alt" width="100%"><tr><td>Добрый день.<br /><br />Пытаюсь понять, от чего рассчитан хеш в спецификации ФСС версии 2:[attach]9383[/attach]<br />Судя по <span class="highlight"><Reference URI="#REGNO_6312023223"></span>, то от всего тега <BODY>.<br />Привел <BODY> к каноническому виду:[attach]9384[/attach]<br />Но хеш не совпадает.<br />Привел к каноническому виду тег <ROW>:[attach]9385[/attach]<br />Но и от него хеш не совпадает с тем, что в спецификации.<br />Так и застрял на этом моменте...</td></tr></table>2021-01-11T12:52:35+03:002021-01-11T12:52:35+03:00Михаил К.<table class="content postContainer_Alt" width="100%"><tr><td>Добрый день.<br /><br />Пытаюсь понять, от чего рассчитан хеш в спецификации ФСС версии 2:[attach]9383[/attach]<br />Судя по <span class="highlight"><Reference URI="#REGNO_6312023223"></span>, то от всего тега <BODY>.<br />Привел <BODY> к каноническому виду:[attach]9384[/attach]<br />Но хеш не совпадает.<br />Привел к каноническому виду тег <ROW>:[attach]9385[/attach]<br />Но и от него хеш не совпадает с тем, что в спецификации.<br />Так и застрял на этом моменте...</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid120029:1ФСС и xml-подпись. Как вычислить DigestValue?В своей программе в итоге сделал вычисление контекста предков через постепенное поднятие по дереву от целевого фрагмента к корню. Создаю "виртуальный тег" для контекста предков. Добавляю только наследуемые атрибуты и объявления пространств имен. Если атрибут с таким именем уж есть, то новый игнорируется (при поднятии по дереву). В итоге фрагмент и "виртуальный тег" (контекст) идут на вход c14n, где постепенно затребываются недостающие данные из контекста. Все вроде хорошо, но просто ужасно долго.2020-10-24T17:07:30+03:002020-10-24T17:07:30+03:00two_oceansВ своей программе в итоге сделал вычисление контекста предков через постепенное поднятие по дереву от целевого фрагмента к корню. Создаю "виртуальный тег" для контекста предков. Добавляю только наследуемые атрибуты и объявления пространств имен. Если атрибут с таким именем уж есть, то новый игнорируется (при поднятии по дереву). В итоге фрагмент и "виртуальный тег" (контекст) идут на вход c14n, где постепенно затребываются недостающие данные из контекста. Все вроде хорошо, но просто ужасно долго.urn:https:--www-cryptopro-ru:ftPosts:st1:meid120028:1ФСС и xml-подпись. Как вычислить DigestValue? Parse the XML files and output the result of the parsing<br /> --version : display the version of the XML library used<br /> --debug : dump a debug tree of the in-memory document<br /> --shell : run a navigating shell<br /> --debugent : debug the entities defined in the document<br /> --copy : used to test the internal copy implementation<br /> --recover : output what was parsable on broken XML documents<br /> --huge : remove any internal arbitrary parser limits<br /> --noent : substitute entity references by their value<br /> --noenc : ignore any encoding specified inside the document<br /> --noout : don't output the result tree<br /> --path 'paths': provide a set of paths for resources<br /> --load-trace : print trace of all external entities loaded<br /> --nonet : refuse to fetch DTDs or entities over network<br /> --nocompact : do not generate compact text nodes<br /> --htmlout : output results as HTML<br /> --nowrap : do not put HTML doc wrapper<br /> --valid : validate the document in addition to std well-formed check<br /> --postvalid : do a posteriori validation, i.e after parsing<br /> --dtdvalid URL : do a posteriori validation against a given DTD<br /> --dtdvalidfpi FPI : same but name the DTD with a Public Identifier<br /> --timing : print some timings<br /> --output file or -o file: save to a given file<br /> --repeat : repeat 100 times, for timing or profiling<br /> --insert : ad-hoc test for valid insertions<br /> --compress : turn on gzip compression of output<br /> --html : use the HTML parser<br /> --xmlout : force to use the XML serializer when using --html<br /> --nodefdtd : do not default HTML doctype<br /> --push : use the push mode of the parser<br /> --pushsmall : use the push mode of the parser using tiny increments<br /> --memory : parse from memory<br /> --maxmem nbbytes : limits memory allocation to nbbytes bytes<br /> --nowarning : do not emit warnings from parser/validator<br /> --noblanks : drop (ignorable?) blanks spaces<br /> --nocdata : replace cdata section with text nodes<br /> --format : reformat/reindent the output<br /> --encode encoding : output in the given encoding<br /> --dropdtd : remove the DOCTYPE of the input docs<br /> --pretty STYLE : pretty-print in a particular style<br /> 0 Do not pretty print<br /> 1 Format the XML content, as --format<br /> 2 Add whitespace inside tags, preserving content<br /> --c14n : save in W3C canonical format v1.0 (with comments)<br /> --c14n11 : save in W3C canonical format v1.1 (with comments)<br /> --exc-c14n : save in W3C exclusive canonical format (with comments)<br /> --nsclean : remove redundant namespace declarations<br /> --testIO : test user I/O support<br /> --catalogs : use SGML catalogs from $SGML_CATALOG_FILES<br /> otherwise XML Catalogs starting from <br /> file:///etc/xml/catalog are activated by default<br /> --nocatalogs: deactivate all catalogs<br /> --auto : generate a small doc on the fly<br /> --xinclude : do XInclude processing<br /> --noxincludenode : same but do not generate XInclude nodes<br /> --nofixup-base-uris : do not fixup xml:base uris<br /> --loaddtd : fetch external DTD<br /> --dtdattr : loaddtd + populate the tree with inherited attributes <br /> --stream : use the streaming interface to process very large files<br /> --walker : create a reader and walk though the resulting doc<br /> --pattern pattern_value : test the pattern support<br /> --chkregister : verify the node registration code<br /> --relaxng schema : do RelaxNG validation against the schema<br /> --schema schema : do validation against the WXS schema<br /> --schematron schema : do validation against a schematron<br /> --sax1: use the old SAX1 interfaces for processing<br /> --sax: do not build a tree but work just at the SAX level<br /> --oldxml10: use XML-1.0 parsing rules before the 5th edition<br /> --xpath expr: evaluate the XPath expression, imply --noout<br />2020-10-24T14:41:12+03:002020-10-24T14:41:12+03:00cutecode Parse the XML files and output the result of the parsing<br /> --version : display the version of the XML library used<br /> --debug : dump a debug tree of the in-memory document<br /> --shell : run a navigating shell<br /> --debugent : debug the entities defined in the document<br /> --copy : used to test the internal copy implementation<br /> --recover : output what was parsable on broken XML documents<br /> --huge : remove any internal arbitrary parser limits<br /> --noent : substitute entity references by their value<br /> --noenc : ignore any encoding specified inside the document<br /> --noout : don't output the result tree<br /> --path 'paths': provide a set of paths for resources<br /> --load-trace : print trace of all external entities loaded<br /> --nonet : refuse to fetch DTDs or entities over network<br /> --nocompact : do not generate compact text nodes<br /> --htmlout : output results as HTML<br /> --nowrap : do not put HTML doc wrapper<br /> --valid : validate the document in addition to std well-formed check<br /> --postvalid : do a posteriori validation, i.e after parsing<br /> --dtdvalid URL : do a posteriori validation against a given DTD<br /> --dtdvalidfpi FPI : same but name the DTD with a Public Identifier<br /> --timing : print some timings<br /> --output file or -o file: save to a given file<br /> --repeat : repeat 100 times, for timing or profiling<br /> --insert : ad-hoc test for valid insertions<br /> --compress : turn on gzip compression of output<br /> --html : use the HTML parser<br /> --xmlout : force to use the XML serializer when using --html<br /> --nodefdtd : do not default HTML doctype<br /> --push : use the push mode of the parser<br /> --pushsmall : use the push mode of the parser using tiny increments<br /> --memory : parse from memory<br /> --maxmem nbbytes : limits memory allocation to nbbytes bytes<br /> --nowarning : do not emit warnings from parser/validator<br /> --noblanks : drop (ignorable?) blanks spaces<br /> --nocdata : replace cdata section with text nodes<br /> --format : reformat/reindent the output<br /> --encode encoding : output in the given encoding<br /> --dropdtd : remove the DOCTYPE of the input docs<br /> --pretty STYLE : pretty-print in a particular style<br /> 0 Do not pretty print<br /> 1 Format the XML content, as --format<br /> 2 Add whitespace inside tags, preserving content<br /> --c14n : save in W3C canonical format v1.0 (with comments)<br /> --c14n11 : save in W3C canonical format v1.1 (with comments)<br /> --exc-c14n : save in W3C exclusive canonical format (with comments)<br /> --nsclean : remove redundant namespace declarations<br /> --testIO : test user I/O support<br /> --catalogs : use SGML catalogs from $SGML_CATALOG_FILES<br /> otherwise XML Catalogs starting from <br /> file:///etc/xml/catalog are activated by default<br /> --nocatalogs: deactivate all catalogs<br /> --auto : generate a small doc on the fly<br /> --xinclude : do XInclude processing<br /> --noxincludenode : same but do not generate XInclude nodes<br /> --nofixup-base-uris : do not fixup xml:base uris<br /> --loaddtd : fetch external DTD<br /> --dtdattr : loaddtd + populate the tree with inherited attributes <br /> --stream : use the streaming interface to process very large files<br /> --walker : create a reader and walk though the resulting doc<br /> --pattern pattern_value : test the pattern support<br /> --chkregister : verify the node registration code<br /> --relaxng schema : do RelaxNG validation against the schema<br /> --schema schema : do validation against the WXS schema<br /> --schematron schema : do validation against a schematron<br /> --sax1: use the old SAX1 interfaces for processing<br /> --sax: do not build a tree but work just at the SAX level<br /> --oldxml10: use XML-1.0 parsing rules before the 5th edition<br /> --xpath expr: evaluate the XPath expression, imply --noout<br />urn:https:--www-cryptopro-ru:ftPosts:st1:meid120025:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer" width="100%"><tr><td>Добавлю такие поправки по терминологии:<br />1) это не просто все подряд атрибуты, а "объявления пространств имен" (xmlns [двоеточие префикс]="URN_имя_пространства_имен") и специальные атрибуты с префиксом xml (xml:lang="ru" например) - они отличаются от остальных тем, что наследуются в теги-потомки;<br />2) само их множество называется "ancestor context" или "контекст предков";<br />3) если не копировать часть строки, а использовать библиотеки работы с xml для выделения фрагмента из документа, то контекст предков вставится в результат автоматически, без подбора методом тыка.</td></tr></table>2020-10-24T13:05:54+03:002020-10-24T13:05:54+03:00two_oceans<table class="content postContainer" width="100%"><tr><td>Добавлю такие поправки по терминологии:<br />1) это не просто все подряд атрибуты, а "объявления пространств имен" (xmlns [двоеточие префикс]="URN_имя_пространства_имен") и специальные атрибуты с префиксом xml (xml:lang="ru" например) - они отличаются от остальных тем, что наследуются в теги-потомки;<br />2) само их множество называется "ancestor context" или "контекст предков";<br />3) если не копировать часть строки, а использовать библиотеки работы с xml для выделения фрагмента из документа, то контекст предков вставится в результат автоматически, без подбора методом тыка.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119980:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: maslito <a href="/forum2/default.aspx?g=posts&m=119977#post119977"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Напиши подробнее какие аттрибуты?</div></div><br /><br />запустите в командной строке<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
xmllint --exc-c14n body.txt
</code></pre>
</div></div><br /><br />xmllint - сам "ругнется" чего там не хватает<br />Методом "тыка" вставьте недостающий атрибут из родительского узла<br /><br />например было<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
<ds:Signature Id="SIG-2b48f7f4-bf09-42be-947a-1daf1c48729f" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
</code></pre>
</div></div><br /><br />надо добавить атрибут xmlns:ds="http://www.w3.org/2000/09/xmldsig#<br />чтобы стало так<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#>
</code></pre>
</div></div><br /><br />можно даже вставить все атрибуты родителя, xmllint все равно удалит лишние<br /><br />Удачи</td></tr></table>2020-10-22T19:21:33+03:002020-10-22T19:21:33+03:00cutecode<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: maslito <a href="/forum2/default.aspx?g=posts&m=119977#post119977"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Напиши подробнее какие аттрибуты?</div></div><br /><br />запустите в командной строке<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
xmllint --exc-c14n body.txt
</code></pre>
</div></div><br /><br />xmllint - сам "ругнется" чего там не хватает<br />Методом "тыка" вставьте недостающий атрибут из родительского узла<br /><br />например было<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
<ds:Signature Id="SIG-2b48f7f4-bf09-42be-947a-1daf1c48729f" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
</code></pre>
</div></div><br /><br />надо добавить атрибут xmlns:ds="http://www.w3.org/2000/09/xmldsig#<br />чтобы стало так<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#>
</code></pre>
</div></div><br /><br />можно даже вставить все атрибуты родителя, xmllint все равно удалит лишние<br /><br />Удачи</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid119977:1ФСС и xml-подпись. Как вычислить DigestValue?<table class="content postContainer" width="100%"><tr><td>Напиши подробнее какие аттрибуты?</td></tr></table>2020-10-22T18:04:46+03:002020-10-22T18:04:46+03:00maslito<table class="content postContainer" width="100%"><tr><td>Напиши подробнее какие аттрибуты?</td></tr></table>