Atom Лента - Форум КриптоПро - Тема:расширение для языка PYTHON - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:rasshireniedljajazykaPYTHON-10:1Copyright 2024 Форум КриптоПро2024-03-19T08:49:23Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Mogabahttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=67557&name=MogabaАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Mogabahttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=67557&name=MogabaАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Mogabahttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=67557&name=MogabaEgorKenkhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=67242&name=EgorKenkАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *EgorKenkhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=67242&name=EgorKenkEgorKenkhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=67242&name=EgorKenkYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid146027:1расширение для языка PYTHON<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Mogaba <a href="/forum2/default.aspx?g=posts&m=146025#post146025"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=146022#post146022"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Потому что в коде есть вызов <span class="highlight">base64.b64encode(sign)</span>? <br /><br />Что будет на выходе, если ЭП не была закодирована в base64?</div></div><br /><br />Да, без кодирования в base64 заработало.<br />Т.е. получается, что подписи могут храниться и в текстовом, и в двоичном формате?<br /></div></div><br /><br />как и любые файлы, <br />зависит от ИС\программы. которая делает\требует base64.</td></tr></table>2024-03-04T11:21:45+03:002024-03-04T11:21:45+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Mogaba <a href="/forum2/default.aspx?g=posts&m=146025#post146025"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=146022#post146022"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Потому что в коде есть вызов <span class="highlight">base64.b64encode(sign)</span>? <br /><br />Что будет на выходе, если ЭП не была закодирована в base64?</div></div><br /><br />Да, без кодирования в base64 заработало.<br />Т.е. получается, что подписи могут храниться и в текстовом, и в двоичном формате?<br /></div></div><br /><br />как и любые файлы, <br />зависит от ИС\программы. которая делает\требует base64.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid146025:1расширение для языка PYTHON<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=146022#post146022"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Потому что в коде есть вызов <span class="highlight">base64.b64encode(sign)</span>? <br /><br />Что будет на выходе, если ЭП не была закодирована в base64?</div></div><br /><br />Да, без кодирования в base64 заработало.<br />Т.е. получается, что подписи могут храниться и в текстовом, и в двоичном формате?<br /></td></tr></table>2024-03-04T11:10:15+03:002024-03-04T11:10:15+03:00Mogaba<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=146022#post146022"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Потому что в коде есть вызов <span class="highlight">base64.b64encode(sign)</span>? <br /><br />Что будет на выходе, если ЭП не была закодирована в base64?</div></div><br /><br />Да, без кодирования в base64 заработало.<br />Т.е. получается, что подписи могут храниться и в текстовом, и в двоичном формате?<br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid146022:1расширение для языка PYTHON<table class="content postContainer_Alt" width="100%"><tr><td>Потому что в коде есть вызов <span class="highlight">base64.b64encode(sign)</span>? <br /><br />Что будет на выходе, если ЭП не была закодирована в base64?</td></tr></table>2024-03-04T10:07:43+03:002024-03-04T10:07:43+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td>Потому что в коде есть вызов <span class="highlight">base64.b64encode(sign)</span>? <br /><br />Что будет на выходе, если ЭП не была закодирована в base64?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid146021:1расширение для языка PYTHON<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=146010#post146010"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><br />No signature was present in the subject. (0x800B0100)<br />В этом объекте нет подписи. (0x800B0100)<br /><br /><br />Смотреть, что передаётся на вход.<br />Проверять, на том, что ранее успешно проверялось. </div></div><br /><br />Что я выяснил: если я в Линуксе подписываю файл в cptools, то для этих подписей код работает. А вот для тех файлов, которые нам присылают из другой организации, не работает. Хотя их подписи успешно проверяются через cryptcp.<br />Они каким-то другим способом могут подписывать? Но почему тогда cryptcp нормально проверяет?</td></tr></table>2024-03-04T10:01:14+03:002024-03-04T10:01:14+03:00Mogaba<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=146010#post146010"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><br />No signature was present in the subject. (0x800B0100)<br />В этом объекте нет подписи. (0x800B0100)<br /><br /><br />Смотреть, что передаётся на вход.<br />Проверять, на том, что ранее успешно проверялось. </div></div><br /><br />Что я выяснил: если я в Линуксе подписываю файл в cptools, то для этих подписей код работает. А вот для тех файлов, которые нам присылают из другой организации, не работает. Хотя их подписи успешно проверяются через cryptcp.<br />Они каким-то другим способом могут подписывать? Но почему тогда cryptcp нормально проверяет?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid146010:1расширение для языка PYTHON<table class="content postContainer_Alt" width="100%"><tr><td><br />No signature was present in the subject. (0x800B0100)<br />В этом объекте нет подписи. (0x800B0100)<br /><br /><br />Смотреть, что передаётся на вход.<br />Проверять, на том, что ранее успешно проверялось. </td></tr></table>2024-03-02T15:04:26+03:002024-03-02T15:04:26+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td><br />No signature was present in the subject. (0x800B0100)<br />В этом объекте нет подписи. (0x800B0100)<br /><br /><br />Смотреть, что передаётся на вход.<br />Проверять, на том, что ранее успешно проверялось. </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid146003:1расширение для языка PYTHON<table class="content postContainer" width="100%"><tr><td>Внезапно перестал работать код, который до этого прекрасно работал:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-python">sign = open(sign_file, "rb").read()
enc_sign = base64.b64encode(sign)
signed_data = pycades.SignedData()
signed_data.Content = "Random data"
try:
signed_data.VerifyCades(enc_sign.decode("utf-8"), pycades.CADESCOM_CADES_BES, True)
except Exception:
pass
cert = signed_data.Signers.Item(1).Certificate</code></pre>
</div></div><br /><br />Выдает вот такое:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">Traceback (most recent call last):
File "./sign.py", line 31, in <module>
cert = signed_data.Signers.Item(1).Certificate
Exception: Internal error. (0x800B0100)</code></pre>
</div></div><br /><br />С чем это может быть связано?</td></tr></table>2024-03-02T12:11:03+03:002024-03-02T12:11:03+03:00Mogaba<table class="content postContainer" width="100%"><tr><td>Внезапно перестал работать код, который до этого прекрасно работал:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-python">sign = open(sign_file, "rb").read()
enc_sign = base64.b64encode(sign)
signed_data = pycades.SignedData()
signed_data.Content = "Random data"
try:
signed_data.VerifyCades(enc_sign.decode("utf-8"), pycades.CADESCOM_CADES_BES, True)
except Exception:
pass
cert = signed_data.Signers.Item(1).Certificate</code></pre>
</div></div><br /><br />Выдает вот такое:<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup">Traceback (most recent call last):
File "./sign.py", line 31, in <module>
cert = signed_data.Signers.Item(1).Certificate
Exception: Internal error. (0x800B0100)</code></pre>
</div></div><br /><br />С чем это может быть связано?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid144334:1расширение для языка PYTHON<table class="content postContainer_Alt" width="100%"><tr><td>На выходе скорее всего требуется подпись, которая включает в себя данные о сертификате. Я так понимаю, что это cms формат, так как в raw формате нельзя получить данные о сертификате. <br />Я как раз таки и хотел узнать, что на выходе этой функции получается, так как это единственный пример от ЕСИА, который показывает, как подписывать данные при помощи их алгоритма подписи data hash. </td></tr></table>2023-11-25T19:18:18+03:002023-11-25T19:18:18+03:00EgorKenk<table class="content postContainer_Alt" width="100%"><tr><td>На выходе скорее всего требуется подпись, которая включает в себя данные о сертификате. Я так понимаю, что это cms формат, так как в raw формате нельзя получить данные о сертификате. <br />Я как раз таки и хотел узнать, что на выходе этой функции получается, так как это единственный пример от ЕСИА, который показывает, как подписывать данные при помощи их алгоритма подписи data hash. </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid144333:1расширение для языка PYTHON<table class="content postContainer" width="100%"><tr><td>на выходе требуется cms (хеш, подпись, сертификат) или raw?<br />тогда пример выше, там алгоритм автоматически подставляется, в зависимости от сертификата.<br /><br /><br />или<br /><a rel="nofollow" href="https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_class/rawsignature" title="https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_class/rawsignature">rawsignature</a><br /><br /><a rel="nofollow" href="https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature" title="https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature">plugin-samples-raw-signature</a></td></tr></table>2023-11-25T18:14:56+03:002023-11-25T18:14:56+03:00Андрей *<table class="content postContainer" width="100%"><tr><td>на выходе требуется cms (хеш, подпись, сертификат) или raw?<br />тогда пример выше, там алгоритм автоматически подставляется, в зависимости от сертификата.<br /><br /><br />или<br /><a rel="nofollow" href="https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_class/rawsignature" title="https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_class/rawsignature">rawsignature</a><br /><br /><a rel="nofollow" href="https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature" title="https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-raw-signature">plugin-samples-raw-signature</a></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid144331:1расширение для языка PYTHON<table class="content postContainer_Alt" width="100%"><tr><td>Просто в исходном коде в параметр algorithm метода Signature.getInstance(algorithm, JCP.PROVIDER_NAME) подставляется значение JCP.GOST_SIGN_2012_256_NAME. Я так думаю, что данные, передаваемые в этот метод просто подписываются, без хеширования, но до конца в этом не уверен.</td></tr></table>2023-11-25T17:46:46+03:002023-11-25T17:46:46+03:00EgorKenk<table class="content postContainer_Alt" width="100%"><tr><td>Просто в исходном коде в параметр algorithm метода Signature.getInstance(algorithm, JCP.PROVIDER_NAME) подставляется значение JCP.GOST_SIGN_2012_256_NAME. Я так думаю, что данные, передаваемые в этот метод просто подписываются, без хеширования, но до конца в этом не уверен.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid144329:1расширение для языка PYTHON<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=144328#post144328"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: EgorKenk <a href="/forum2/default.aspx?g=posts&m=144327#post144327"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Здравствуйте! Можете подсказать, есть ли пример данного кода с JS на Python с использованием библиотеки pycades?<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-javascript">public String signMap(Map<String, String> paramsToSign) {
try {
PrivateKey privateKey = getKey();
Certificate certificate = getCert();
StringBuilder toSign = new StringBuilder();
for (String s : paramsToSign.values()) {
toSign.append(s);
}
System.out.println("toSign:");
System.out.println(toSign);
byte[] data = toSign.toString().getBytes(StandardCharsets.UTF_8);
String algorithmFromCert = certificate.getPublicKey().getAlgorithm();
String algorithm = getAlgorithm(algorithmFromCert);
Signature signature = Signature.getInstance(algorithm, JCP.PROVIDER_NAME);
signature.initSign(privateKey);
signature.update(data);
byte[] secretBytes = signature.sign();
return Base64.encodeBase64URLSafeString(secretBytes);
} catch (Exception e) {
throw new RuntimeException(e);
}
}</code></pre>
</div></div></div></div><br /><br />Здравствуйте.<br /><br />В примерах есть <a rel="nofollow" href="https://docs.cryptopro.ru/cades/pycades/pycades-samples/pycades-sign-verify" title="https://docs.cryptopro.ru/cades/pycades/pycades-samples/pycades-sign-verify">подписание</a><br /><br /><br /><br />p.s.<br />не это js, а java<br /><br /></div></div><br /><br />Спасибо, с утра голова совсем не варит, раз перепутал Java с JS. <br />Не подскажите, в данном примере на Java данные не хешируются перед подписанием?<br /></td></tr></table>2023-11-25T15:31:23+03:002023-11-25T15:31:23+03:00EgorKenk<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Андрей * <a href="/forum2/default.aspx?g=posts&m=144328#post144328"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><div class="quote"><span class="quotetitle">Автор: EgorKenk <a href="/forum2/default.aspx?g=posts&m=144327#post144327"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Здравствуйте! Можете подсказать, есть ли пример данного кода с JS на Python с использованием библиотеки pycades?<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-javascript">public String signMap(Map<String, String> paramsToSign) {
try {
PrivateKey privateKey = getKey();
Certificate certificate = getCert();
StringBuilder toSign = new StringBuilder();
for (String s : paramsToSign.values()) {
toSign.append(s);
}
System.out.println("toSign:");
System.out.println(toSign);
byte[] data = toSign.toString().getBytes(StandardCharsets.UTF_8);
String algorithmFromCert = certificate.getPublicKey().getAlgorithm();
String algorithm = getAlgorithm(algorithmFromCert);
Signature signature = Signature.getInstance(algorithm, JCP.PROVIDER_NAME);
signature.initSign(privateKey);
signature.update(data);
byte[] secretBytes = signature.sign();
return Base64.encodeBase64URLSafeString(secretBytes);
} catch (Exception e) {
throw new RuntimeException(e);
}
}</code></pre>
</div></div></div></div><br /><br />Здравствуйте.<br /><br />В примерах есть <a rel="nofollow" href="https://docs.cryptopro.ru/cades/pycades/pycades-samples/pycades-sign-verify" title="https://docs.cryptopro.ru/cades/pycades/pycades-samples/pycades-sign-verify">подписание</a><br /><br /><br /><br />p.s.<br />не это js, а java<br /><br /></div></div><br /><br />Спасибо, с утра голова совсем не варит, раз перепутал Java с JS. <br />Не подскажите, в данном примере на Java данные не хешируются перед подписанием?<br /></td></tr></table>