КриптоПро CAPILite  

CryptAcquireCertificatePrivateKey

Функция CryptAcquireCertificatePrivateKey получает дескриптор HCRYPTPROV CSP , включая доступ к связанному с ним ключевому контейнеруи параметр dwKeySpec для определенного пользователем контекста сертификата. Эта функция используется для получения доступа к закрытому ключу пользователя, когда сертификат пользователя доступен, а дескриптор CSP с пользовательским ключевым контейнером не является доступным. Эту функцию может использовать только владелец закрытого ключа, а не любой пользователь.

Если дескриптор CSP и ключевой контейнер, содержащие закрытый ключ пользователя, являются доступными, то можно использовать функцию CryptGetUserKey.

WINCRYPT32API BOOL WINAPI CryptAcquireCertificatePrivateKey(
  IN PCCERT_CONTEXT pCert,
  IN DWORD dwFlags,
  IN void * pvReserved,
  OUT HCRYPTPROV * phCryptProv,
  OUT OPTIONAL DWORD * pdwKeySpec,
  OUT OPTIONAL BOOL * pfCallerFreeProv
);

Примечания

С помощью параметра dwFlags можно управлять кэшированием открываемого дескриптора криптопровайдера. При первом вызове функции:

ФлагОписание
CRYPT_ACQUIRE_CACHE_FLAG Дескриптор будет закэширован в свойстве CERT_KEY_CONTEXT_PROP_ID контекста сертификата.
CRYPT_ACQUIRE_USE_PROV_INFO_FLAG Если в ссылке на ключ прописан флаг CERT_SET_KEY_CONTEXT_PROP_ID, дескриптор будет закэширован в свойстве CERT_KEY_CONTEXT_PROP_ID контекста сертификата.
При последующих вызовах функции, если указан один из флагов CRYPT_ACQUIRE_CACHE_FLAG, CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, делается попытка получить дескриптор криптропровайдера из кэша. * pfCallerFreeProv выставляется в TRUE, если возвращенный дескриптор требует освобождения с помощью CryptReleaseContext

Требования:

AIX: 5/6/7 или выше.
FreeBSD: 7/8/9 или выше.
Linux: LSB 3.1 (RHEL 4, SuSE 10) или выше.
Solaris: 10/11 или выше.
Mac OSX: 10.7/8 или выше.
iOS: 6/7 или выше.
Файл описания: Прототип описан в файлах CSP_WinCrypt.h и WinCryptEx.h.

См. также

Функции генерации и обмена ключа , CryptReleaseContext, CertSetCertificateContextProperty, CryptAcquireCertificatePrivateKey в MS CryptoAPI 2.0 World Wide Web link