Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция CryptExportPublicKeyInfoEx экспортирует сведения об открытом ключе , связанные с соответствующим закрытым ключом поставщика. Эта функция позволяет приложению указать алгоритм открытого ключа, переопределяя значение по умолчанию, предоставляемое поставщиком служб шифрования (CSP).
Синтаксис
BOOL CryptExportPublicKeyInfoEx(
[in] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPSTR pszPublicKeyObjId,
[in] DWORD dwFlags,
[in] void *pvAuxInfo,
[out] PCERT_PUBLIC_KEY_INFO pInfo,
[in, out] DWORD *pcbInfo
);
Параметры
[in] hCryptProvOrNCryptKey
Дескриптор CSP, используемый при экспорте сведений об открытом ключе. Этот дескриптор должен быть дескриптором HCRYPTPROV , который был создан с помощью функции CryptAcquireContext , или дескриптором NCRYPT_KEY_HANDLE , созданным с помощью функции NCryptOpenKey . Новые приложения всегда должны передавать дескриптор NCRYPT_KEY_HANDLE CSP CNG.
[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
[in] pszPublicKeyObjId
Указывает алгоритм открытого ключа.
[in] dwFlags
Значение флага DWORD , указывающее, как экспортируются сведения об открытом ключе. Значение флага передается непосредственно в функцию CryptFindOIDInfo при сопоставлении идентификатора объекта открытого ключа с соответствующей строкой Юникода алгоритма открытого ключа CNG. Можно задать следующие значения флагов.
| Значение | Значение |
|---|---|
|
Пропускает открытые ключи в группе CRYPT_PUBKEY_ALG_OID_GROUP_ID , явно помеченной флагом CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG . |
|
Пропускает открытые ключи в группе CRYPT_PUBKEY_ALG_OID_GROUP_ID , явно помеченной флагом CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG . |
[in] pvAuxInfo
Этот параметр зарезервирован для использования в будущем и должен иметь значение NULL.
[out] pInfo
Указатель на структуру CERT_PUBLIC_KEY_INFO для получения сведений открытого ключа для экспорта.
Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.
[in, out] pcbInfo
Указатель на DWORD , содержащий размер (в байтах) буфера, на который указывает параметр pInfo . При возврате функции DWORD содержит количество байтов, хранящихся в буфере.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение не равно нулю (TRUE).
Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE). Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
| Код возврата | Описание |
|---|---|
|
Не удалось найти функцию экспорта, которую можно установить или зарегистрировать для указанных параметров dwCertEncodingType и pszPublicKeyObjId . |
|
Если буфер, заданный параметром pInfo , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает параметр pcbInfo . |
Если функция завершается сбоем, GetLastError может вернуть ошибку кодирования и декодирования абстрактной синтаксической нотации 1 (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows XP [только классические приложения] |
| Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
| Целевая платформа | Windows |
| Header | wincrypt.h |
| Библиотека | Crypt32.lib |
| DLL | Crypt32.dll |