<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/4439/" />
	<updated>2024-09-09T06:03:47Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/4439/</id>
		<entry>
			<title type="html"><![CDATA[Re: CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/25955/#p25955" />
			<content type="html"><![CDATA[<p>Здравствуйте.<br />Ожидаемо помогло удаление данного CSP.<br />Но хотелось бы разобраться, в чем проблема?<br />Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[brend]]></name>
				<uri>https://forum.rutoken.ru/user/15815/</uri>
			</author>
			<updated>2024-09-09T06:03:47Z</updated>
			<id>https://forum.rutoken.ru/post/25955/#p25955</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CryptoAPI: Очень долгое CryptReleaseContext  Rutoken CSP v 1.0]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/25935/#p25935" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[brend]]></name>
				<uri>https://forum.rutoken.ru/user/15815/</uri>
			</author>
			<updated>2024-09-05T11:33:53Z</updated>
			<id>https://forum.rutoken.ru/post/25935/#p25935</id>
		</entry>
</feed>
