<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Рутокен &mdash; CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0]]></title>
		<link>https://forum.rutoken.ru/topic/4439/</link>
		<atom:link href="https://forum.rutoken.ru/feed/rss/topic/4439/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0».]]></description>
		<lastBuildDate>Mon, 09 Sep 2024 06:03:47 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0]]></title>
			<link>https://forum.rutoken.ru/post/25955/#p25955</link>
			<description><![CDATA[<p>Здравствуйте.<br />Ожидаемо помогло удаление данного CSP.<br />Но хотелось бы разобраться, в чем проблема?<br />Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (brend)]]></author>
			<pubDate>Mon, 09 Sep 2024 06:03:47 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/25955/#p25955</guid>
		</item>
		<item>
			<title><![CDATA[CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0]]></title>
			<link>https://forum.rutoken.ru/post/25935/#p25935</link>
			<description><![CDATA[<p>Здравствуйте.<br />у клиента появилась проблема: зависает наш софт, зависает именно на освобождении контекста провайдера Rutoken CSP v 1.0 - самое долгое 2 с лишним часа.<br /></p><div class="codebox"><pre><code>DWORD index = 0;
    DWORD len = 0;
    DWORD provType;
    CString provName;
    HCRYPTPROV prov(0);
    while (CryptEnumProviders(index, 0, 0, &amp;provType, 0, &amp;len))
    {
        if (CryptEnumProviders(index, 0, 0, &amp;provType, provName.GetBufferSetLength(len), &amp;len))
        {
            provName.ReleaseBuffer();
            ca_log_event(L&quot;CryptAcquireContext CSP &quot; + provName, false);
            if (CryptAcquireContext(&amp;prov, 0, provName, provType, CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
            {
                if (AlgorithmIsSupported(prov, algId, keyLength))
                {
                    ca_log_event(L&quot;CSP found &quot; + provName, false);
                    break;
                }
                ca_log_event(L&quot;CryptReleaseContext CSP &quot; + provName, false);
                CryptReleaseContext(prov, 0);
                prov = 0;
            }
            else
            {
                ca_log_err(GetLastError());
            }
        }
        index++;
    }</code></pre></div><p>Лог для наглядности:<br /></p><div class="codebox"><pre><code>03.09.2024 16:13:30.164 (ThreadId: 7312) FindProvByAlgId: CryptAcquireContext CSP Aktiv ruToken CSP v1.0
03.09.2024 16:13:30.975 (ThreadId: 7312) FindProvByAlgId: CryptReleaseContext CSP Aktiv ruToken CSP v1.0
03.09.2024 18:42:49.247 (ThreadId: 7312) FindProvByAlgId: CryptAcquireContext CSP FCP Cryptographic Service Provider
03.09.2024 18:42:49.247 (ThreadId: 7312) FindProvByAlgId: CryptReleaseContext CSP FCP Cryptographic Service Provider</code></pre></div><p>Далее попытка следующего вызова функции завершается с ошибкой(формулировка наша, но код ошибки есть):<br /></p><div class="codebox"><pre><code>03.09.2024 18:42:49.250 (ThreadId: 7312) FindProvByAlgId: CryptAcquireContext CSP Aktiv ruToken CSP v1.0
ERROR 03.09.2024 18:42:49.257 (ThreadId: 7312) FindProvByAlgId: Контекст криптопровайдера не был получен, или уже был освобожден
ERROR 03.09.2024 18:42:49.257 (ThreadId: 7312) FindProvByAlgId: Thu Dec 22 02:25:51 2022; CryptUtil.cpp:526
ERROR 03.09.2024 18:42:49.259 (ThreadId: 7312) FindProvByAlgId: ERROR Неизвестная ошибка. (0x8010001d)</code></pre></div><p>Подскажите, пожалуйста, в чем может быть причина и как решить проблему?</p>]]></description>
			<author><![CDATA[null@example.com (brend)]]></author>
			<pubDate>Thu, 05 Sep 2024 11:33:53 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/25935/#p25935</guid>
		</item>
	</channel>
</rss>
