Функция CryptImportPublicKeyInfoEx (wincrypt.h)
Синтаксис
BOOL CryptImportPublicKeyInfoEx(
[in] HCRYPTPROV hCryptProv,
[in] DWORD dwCertEncodingType,
[in] PCERT_PUBLIC_KEY_INFO pInfo,
[in] ALG_ID aiKeyAlg,
[in] DWORD dwFlags,
[in] void *pvAuxInfo,
[out] HCRYPTKEY *phKey
);
Параметры
[in] hCryptProv
Дескриптор CSP для получения импортированного открытого ключа. Этот дескриптор уже должен быть создан с помощью CryptAcquireContext.
[in] dwCertEncodingType
Указывает используемый тип кодирования. Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
В настоящее время определены следующие типы кодирования:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pInfo
адрес структуры CERT_PUBLIC_KEY_INFO , содержащей открытый ключ для импорта в поставщик.
[in] aiKeyAlg
Структура ALG_ID , содержащая алгоритм CSP для переопределения алгоритма CALG_RSA_KEYX по умолчанию.
[in] dwFlags
Зарезервировано для использования в будущем и должно быть равно нулю.
[in] pvAuxInfo
Зарезервировано для использования в будущем и должно иметь значение NULL.
[out] phKey
Адрес переменной HCRYPTKEY , которая получает дескриптор импортированного открытого ключа. Завершив использование открытого ключа, отпустите дескриптор, вызвав функцию CryptDeographyKey .
Возвращаемое значение
Если функция выполняется успешно, функция возвращает ненулевое значение (TRUE).
Если функция завершается сбоем, она возвращает ноль (FALSE). Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
Значение | Описание |
---|---|
|
Не удалось найти функцию импорта, которую можно установить или зарегистрировать для указанных параметров dwCertEncodingType и pInfo . |
Если функция завершается сбоем, GetLastError может вернуть ошибку кодирования и декодирования абстрактной синтаксической нотации 1 (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.
Комментарии
Эта функция обычно используется для получения открытого ключа из сертификата. Это делается путем передачи структуры CERT_PUBLIC_KEY_INFO из заполненной структуры сертификата, как показано в следующем псевдокоде.
PCCERT_CONTEXT pCertContext
// Get the certificate context structure from a certificate.
pCertContext = CertCreateCertificateContext(...)
if(pCertContext)
{
HCRYPTKEY hCertPubKey
// Get the public key information for the certificate.
CryptImportPublicKeyInfo(
hCryptProv,
X509_ASN_ENCODING,
&pCertContext->pCertInfo->SubjectPublicKeyInfo,
&hCertPubKey)
CertFreeCertificateContext(pCertContext)
}
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |