В CryptAcquireCertificatePrivateKey можно указать флаг
CRYPT_ACQUIRE_CACHE_FLAG для кэширования провайдера, которое осуществляется CAPI установкой свойства сертификата CERT_KEY_CONTEXT_PROP_ID. Все последующие вызовы для данного контекста сертификата будут брать провайдера из этого свойства, даже если не указывать флаг CRYPT_ACQUIRE_CACHE_FLAG.
А если надо прекратить кэширование (например если к ключу не обращались определенное время), что нужно сделать? Сбросить свойство CERT_KEY_CONTEXT_PROP_ID? Если да, то нужно ли освобождать закэшированный там провайдер или это произойдет автоматом? |