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


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

Функция CryptExportPublicKeyInfo экспортирует сведения о открытом ключе, связанные с соответствующим закрытым ключом поставщика. Обновленную версию этой функции см. в разделе CryptExportPublicKeyInfoEx.

Синтаксис

BOOL CryptExportPublicKeyInfo(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Параметры

[in] hCryptProvOrNCryptKey

Дескриптор поставщика служб шифрования (CSP), используемый при экспорте сведений об открытом ключе. Это должен быть дескриптор HCRYPTPROV , созданный с помощью функции CryptAcquireContext , или дескриптор NCRYPT_KEY_HANDLE , созданный с помощью функции NCryptOpenKey . Новые приложения всегда должны передавать NCRYPT_KEY_HANDLE дескриптор CNG CSP.

[in] dwKeySpec

Определяет закрытый ключ для использования из контейнера поставщика. Это может быть AT_KEYEXCHANGE или AT_SIGNATURE. Этот параметр игнорируется, если в параметре hCryptProvOrNCryptKey используется NCRYPT_KEY_HANDLE.

[in] dwCertEncodingType

Указывает используемый тип кодирования . Всегда допустимо указывать типы кодирования сертификатов и сообщений, объединяя их с побитовой операцией ИЛИ , как показано в следующем примере:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

В настоящее время определены следующие типы кодирования:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[out] pInfo

Указатель на структуру CERT_PUBLIC_KEY_INFO для получения экспортируемых сведений открытого ключа.

Чтобы задать размер этих сведений для целей выделения памяти, этот параметр может иметь значение NULL. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbInfo

Указатель на DWORD , содержащий размер (в байтах) буфера, на который указывает параметр pInfo . Когда функция возвращает значение, DWORD содержит количество байтов, необходимых для возвращаемого буфера.

Примечание При обработке данных, возвращаемых в буфере, приложения должны использовать фактический размер возвращаемых данных. Фактический размер может быть немного меньше размера буфера, указанного во входных данных. (На входных данных размеры буфера обычно указываются достаточно большими, чтобы гарантировать, что максимально возможные выходные данные поместятся в буфер.) В выходных данных переменная, на которую указывает этот параметр, обновляется с учетом фактического размера данных, скопированных в буфер.
 

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ненулевое значение (TRUE).

Если функция завершается сбоем, она возвращает ноль (FALSE). Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.

Примечание Ошибки из вызываемых функций CryptGetUserKey и CryptExportKey могут быть распространены на эту функцию.
 
Эта функция имеет следующие коды ошибок.
Код возврата Описание
ERROR_MORE_DATA
Если буфер, заданный параметром pInfo , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbInfo.
ERROR_FILE_NOT_FOUND
Недопустимый тип кодирования сертификата. В настоящее время поддерживается только X509_ASN_ENCODING.
 

В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

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

CryptImportPublicKeyInfo

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