Функция CryptExportPublicKeyInfoEx (wincrypt.h)
Функция 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 |