Поделиться через


Функция CryptImportPublicKeyInfo (wincrypt.h)

Важно Этот API является устаревшим. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
 
Функция CryptImportPublicKeyInfo преобразует и импортирует сведения об открытом ключе в поставщик и возвращает дескриптор открытого ключа. CryptImportPublicKeyInfoEx предоставляет измененную версию этой функции.

Синтаксис

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.

Примечание Ошибки из вызываемых функций CryptGetUserKey и CryptExportKey могут распространяться на эту функцию. Эта функция имеет следующий код ошибки.
 
Код возврата Описание
ERROR_FILE_NOT_FOUND
Не удалось найти функцию импорта, которую можно установить или зарегистрировать для указанных параметров 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

См. также раздел

CryptExportPublicKeyInfo

Функции Управление данными