Atom Лента - Форум КриптоПро - Тема:Ошибка при проверки ЭЦП (ФСС, две подписи) - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:OshibkapriproverkiEhCP(FSS,dvepodpisi)-10:1Copyright 2024 Форум КриптоПро2024-03-28T18:15:16Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruРафикhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50741&name=РафикРафикhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50741&name=РафикРафикhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50741&name=Рафикevarlamovhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=39169&name=evarlamovtwo_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceansevarlamovhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=39169&name=evarlamovtwo_oceanshttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=36490&name=two_oceansevarlamovhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=39169&name=evarlamovYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid128071:1Ошибка при проверки ЭЦП (ФСС, две подписи)<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Рафик <a href="/forum2/default.aspx?g=posts&m=128066#post128066"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Может кто подскажет, делаю метод prParseFilelnlpuRequest<br />Подписываю файл все согласно алгоритмов<br />почему то выдает подпись не действительная при чем обе, уже не знаю где искать проблему<br /><br />прикладываю файлик<br /><br />Подпись 1<br />Результат проверки<br />Подпись не действительна<br /><br /><br /><br /><br /><br /><br />[attach]10037[/attach]<br /></div></div><br /><br />Разобрался, неправильно канонизировал файл<br /></td></tr></table>2021-10-17T20:10:36+03:002021-10-17T20:10:36+03:00Рафик<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Рафик <a href="/forum2/default.aspx?g=posts&m=128066#post128066"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Может кто подскажет, делаю метод prParseFilelnlpuRequest<br />Подписываю файл все согласно алгоритмов<br />почему то выдает подпись не действительная при чем обе, уже не знаю где искать проблему<br /><br />прикладываю файлик<br /><br />Подпись 1<br />Результат проверки<br />Подпись не действительна<br /><br /><br /><br /><br /><br /><br />[attach]10037[/attach]<br /></div></div><br /><br />Разобрался, неправильно канонизировал файл<br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid128066:1Ошибка при проверки ЭЦП (ФСС, две подписи)<table class="content postContainer" width="100%"><tr><td>Может кто подскажет, делаю метод prParseFilelnlpuRequest<br />Подписываю файл все согласно алгоритмов<br />почему то выдает подпись не действительная при чем обе, уже не знаю где искать проблему<br /><br />прикладываю файлик<br /><br />Подпись 1<br />Результат проверки<br />Подпись не действительна<br /><br /><br /><br /><br /><br /><br />[attach]10037[/attach]<br /></td></tr></table>2021-10-17T02:16:44+03:002021-10-17T02:16:44+03:00Рафик<table class="content postContainer" width="100%"><tr><td>Может кто подскажет, делаю метод prParseFilelnlpuRequest<br />Подписываю файл все согласно алгоритмов<br />почему то выдает подпись не действительная при чем обе, уже не знаю где искать проблему<br /><br />прикладываю файлик<br /><br />Подпись 1<br />Результат проверки<br />Подпись не действительна<br /><br /><br /><br /><br /><br /><br />[attach]10037[/attach]<br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid126645:1Ошибка при проверки ЭЦП (ФСС, две подписи)<table class="content postContainer_Alt" width="100%"><tr><td>Спасибо. <br />Постараюсь повторить вашу схему. <br />Обнаружил, что если в документе встречается строка типа <date1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><br />то подпись становится некорректной. (даже если этот namespace прописать где-то в родительских элементах)<br />Это как-то можно объяснить? Т.е. есть два документа, подписываемые по одной схеме, отличаются лишь на одну строку. Но один проходит проверку, второй - нет<br />[attach]9886[/attach]<br />[attach]9887[/attach]</td></tr></table>2021-08-16T11:03:03+03:002021-08-16T11:03:03+03:00evarlamov<table class="content postContainer_Alt" width="100%"><tr><td>Спасибо. <br />Постараюсь повторить вашу схему. <br />Обнаружил, что если в документе встречается строка типа <date1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><br />то подпись становится некорректной. (даже если этот namespace прописать где-то в родительских элементах)<br />Это как-то можно объяснить? Т.е. есть два документа, подписываемые по одной схеме, отличаются лишь на одну строку. Но один проходит проверку, второй - нет<br />[attach]9886[/attach]<br />[attach]9887[/attach]</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid126596:1Ошибка при проверки ЭЦП (ФСС, две подписи)Алгоритмы стандартизированы по процедурному типу - исходный буфер, конечный буфер, аргумент-флаг, до 3 аргументов специфичных для алгоритма. Для хэша это числовой AlgId и дескриптор ключа (0 для гост-2012), для подписи алгоритм хэша, hProv и dwKeySpec, для эксклюзивной каноникализации строка InclusiveNamespaces, для xpath строка преобразования и т.д. Специальный объект хранит таблицу соответствия текстового идентификатора алгоритма в xml файле и переменных процедурного типа, также предоставляет методы для добавления/удаления, поиска, применения алгоритмов с 1/2/3 аргументами. При добавлении указывается флаг типа алгоритма (например, каноникализация, расчет хэша, расчет значения подписи), количество аргументов и аргумент-флаг, который будет передан с процедуру (например, каноникализация эксклюзивная и с комментариями обозначаются разными значениями флага для одной и той же процедуры). В одном из вариантов реализации процедуры каноникализации туда же до кучи включен трансформ для смэв. Перед алгоритмами с флагом каноникализации автоматически вызывается нормализация фрагмента (замена сочетания символов #13#10 на #10 и #13 на #10). Если в документе несколько подписей на один и тот же фрагмент (с одинаковыми URI, трансформами и алгоритмом хэша), то считается хэш только раз, для последующих подписей значение копируется из первой подписи.2021-08-13T07:12:02+03:002021-08-13T07:12:02+03:00two_oceansАлгоритмы стандартизированы по процедурному типу - исходный буфер, конечный буфер, аргумент-флаг, до 3 аргументов специфичных для алгоритма. Для хэша это числовой AlgId и дескриптор ключа (0 для гост-2012), для подписи алгоритм хэша, hProv и dwKeySpec, для эксклюзивной каноникализации строка InclusiveNamespaces, для xpath строка преобразования и т.д. Специальный объект хранит таблицу соответствия текстового идентификатора алгоритма в xml файле и переменных процедурного типа, также предоставляет методы для добавления/удаления, поиска, применения алгоритмов с 1/2/3 аргументами. При добавлении указывается флаг типа алгоритма (например, каноникализация, расчет хэша, расчет значения подписи), количество аргументов и аргумент-флаг, который будет передан с процедуру (например, каноникализация эксклюзивная и с комментариями обозначаются разными значениями флага для одной и той же процедуры). В одном из вариантов реализации процедуры каноникализации туда же до кучи включен трансформ для смэв. Перед алгоритмами с флагом каноникализации автоматически вызывается нормализация фрагмента (замена сочетания символов #13#10 на #10 и #13 на #10). Если в документе несколько подписей на один и тот же фрагмент (с одинаковыми URI, трансформами и алгоритмом хэша), то считается хэш только раз, для последующих подписей значение копируется из первой подписи.urn:https:--www-cryptopro-ru:ftPosts:st1:meid126581:1Ошибка при проверки ЭЦП (ФСС, две подписи)<table class="content postContainer_Alt" width="100%"><tr><td>Добрый день. <br />Спасибо, помогло. Путаницу со ссылками Reference URI сам обнаружил, а вот за объяснение того, что не нужно канонализировать подписываемый элемент - еще раз спасибо.<br />Добился корректных подписей от сервиса <a rel="nofollow" href="https://www.justsign.me/verifyqca/Verify/" title="https://www.justsign.me/verifyqca/Verify/">https://www.justsign.me/verifyqca/Verify/</a> <br /><br />Но поменял подписываемые блоки, опять что-то сломалось. Одна из подписей стала некорректна.<br /><br />Не подскажете, в чем может быть дело?<br />В приложенном примере подписью 1 подписан элемент treatPeriod, а подписью 2 - элемент row<br /> [attach]9872[/attach]<br /></td></tr></table>2021-08-12T12:01:24+03:002021-08-12T12:01:24+03:00evarlamov<table class="content postContainer_Alt" width="100%"><tr><td>Добрый день. <br />Спасибо, помогло. Путаницу со ссылками Reference URI сам обнаружил, а вот за объяснение того, что не нужно канонализировать подписываемый элемент - еще раз спасибо.<br />Добился корректных подписей от сервиса <a rel="nofollow" href="https://www.justsign.me/verifyqca/Verify/" title="https://www.justsign.me/verifyqca/Verify/">https://www.justsign.me/verifyqca/Verify/</a> <br /><br />Но поменял подписываемые блоки, опять что-то сломалось. Одна из подписей стала некорректна.<br /><br />Не подскажете, в чем может быть дело?<br />В приложенном примере подписью 1 подписан элемент treatPeriod, а подписью 2 - элемент row<br /> [attach]9872[/attach]<br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid126538:1Ошибка при проверки ЭЦП (ФСС, две подписи)<div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup"> // str,str2:array[1..max]of char // или byte;
// Len,Len2,i,j:cardinal;
Len2:=Len;
j:=0;
for i:=Len downto 1 do begin
inc(j);
str2[j]:=str[i];
end;</code></pre>
</div></div>Можно сделать с одним буфером, так:<div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup"> L:=Len shr 1; // делим длину пополам, если нечетное - средний байт остается на месте и нам не нужен
j:=Len;
for i:=1 to L do begin
c:=str[j];
str[j]:=str[i];
str[i]:=c;
dec(j);
end;</code></pre>
</div></div>2021-08-11T13:12:38+03:002021-08-11T13:12:38+03:00two_oceans<div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup"> // str,str2:array[1..max]of char // или byte;
// Len,Len2,i,j:cardinal;
Len2:=Len;
j:=0;
for i:=Len downto 1 do begin
inc(j);
str2[j]:=str[i];
end;</code></pre>
</div></div>Можно сделать с одним буфером, так:<div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup"> L:=Len shr 1; // делим длину пополам, если нечетное - средний байт остается на месте и нам не нужен
j:=Len;
for i:=1 to L do begin
c:=str[j];
str[j]:=str[i];
str[i]:=c;
dec(j);
end;</code></pre>
</div></div>urn:https:--www-cryptopro-ru:ftPosts:st1:meid126489:1Ошибка при проверки ЭЦП (ФСС, две подписи)<table class="content postContainer_Alt" width="100%"><tr><td>Помогите справиться, что-то застрял.<br />При взаимодействии с тестовым контуром ФСС получаю ошибку: <br /><strong>Ошибка при проверки ЭЦП. Алгоритм ключа не соответствует алгоритму подписи</strong><br /><br />Инструменты: delphi, JwaWinCrypt<br /><br /> Формирую xml-запрос (PrParseFilelnlpu) и пытаюсь подписать его двумя подписями. <br /> Первой подписываю элемент body. Для этого:<br /> 0) обращаюсь к контексту нужного криптопровайдера <br /> 1) канонизирую элемент, <br /> 2) создаю хэш CryptCreateHash(ACryptoProvider, CALG_GR3411_2012_256, 0, 0, hash)<br /> 3) добавляю данные из шага 1) в хеш<br /> 4) вычисляю данные по полученному хэшу (CryptHashData(hash, PByte(aByte), Length(aByte), 0))<br /> 5) конвертировав результат в строку, помещаю все в digestValue<br /> 6) повторяю шаги 1)-5) уже ля элемента SignedInfo и помещаю конвертированный в строку результат в SignatureValue<br /> <br /> Второй пописью подписываю каждый элемент row в теле документа. Для этого делаю те же шаги, но обращаюсь к другому контейнеру.<br /> Подпись (digestValue, SignatureValue) будет размещена в новой секции Security<br /> <br /> - как выбираю нужный контейнер: <br /> вызываю CryptAcquireContext(AProvider, <Имя нужного контейнера>, nil, 80, 0))<br /> и использую AProvider<br /> <br /> Подписанный файл не проходит проверку и здесь <a rel="nofollow" href="https://www.justsign.me/verifyqca/Verify/" title="https://www.justsign.me/verifyqca/Verify/">https://www.justsign.me/verifyqca/Verify/</a> - XML подпись не верна.<br /> В чем может быть причина?<br /> Приложу этот самый подписанный документ [attach]9867[/attach]</td></tr></table>2021-08-09T08:38:44+03:002021-08-09T08:38:44+03:00evarlamov<table class="content postContainer_Alt" width="100%"><tr><td>Помогите справиться, что-то застрял.<br />При взаимодействии с тестовым контуром ФСС получаю ошибку: <br /><strong>Ошибка при проверки ЭЦП. Алгоритм ключа не соответствует алгоритму подписи</strong><br /><br />Инструменты: delphi, JwaWinCrypt<br /><br /> Формирую xml-запрос (PrParseFilelnlpu) и пытаюсь подписать его двумя подписями. <br /> Первой подписываю элемент body. Для этого:<br /> 0) обращаюсь к контексту нужного криптопровайдера <br /> 1) канонизирую элемент, <br /> 2) создаю хэш CryptCreateHash(ACryptoProvider, CALG_GR3411_2012_256, 0, 0, hash)<br /> 3) добавляю данные из шага 1) в хеш<br /> 4) вычисляю данные по полученному хэшу (CryptHashData(hash, PByte(aByte), Length(aByte), 0))<br /> 5) конвертировав результат в строку, помещаю все в digestValue<br /> 6) повторяю шаги 1)-5) уже ля элемента SignedInfo и помещаю конвертированный в строку результат в SignatureValue<br /> <br /> Второй пописью подписываю каждый элемент row в теле документа. Для этого делаю те же шаги, но обращаюсь к другому контейнеру.<br /> Подпись (digestValue, SignatureValue) будет размещена в новой секции Security<br /> <br /> - как выбираю нужный контейнер: <br /> вызываю CryptAcquireContext(AProvider, <Имя нужного контейнера>, nil, 80, 0))<br /> и использую AProvider<br /> <br /> Подписанный файл не проходит проверку и здесь <a rel="nofollow" href="https://www.justsign.me/verifyqca/Verify/" title="https://www.justsign.me/verifyqca/Verify/">https://www.justsign.me/verifyqca/Verify/</a> - XML подпись не верна.<br /> В чем может быть причина?<br /> Приложу этот самый подписанный документ [attach]9867[/attach]</td></tr></table>