Функция CryptImportPublicKeyInfo (wincrypt.h)
Синтаксис
BOOL CryptImportPublicKeyInfo(
[in] HCRYPTPROV hCryptProv,
[in] DWORD dwCertEncodingType,
[in] PCERT_PUBLIC_KEY_INFO pInfo,
[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 , содержащей открытый ключ для импорта в поставщик.
[out] phKey
Адрес переменной HCRYPTKEY , которая получает дескриптор импортированного открытого ключа. Завершив использование открытого ключа, отпустите дескриптор, вызвав функцию CryptDeographyKey .
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение не равно нулю (TRUE).
Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE). Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
Код возврата | Описание |
---|---|
|
Не удалось найти функцию импорта, которую можно установить или зарегистрировать для указанных параметров dwCertEncodingType и pInfo-Algorithm.pszObjId>. |
Если функция завершается сбоем, 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 |