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


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

[Функция CryptExportPKCS8 больше не доступна для использования с Windows Server 2008 и Windows Vista. Вместо этого используйте функцию PFXExportCertStoreEx .]

Функция CryptExportPKCS8 экспортирует закрытый ключ в формате PKCS #8. Функция заменяется CryptExportPKCS8Ex, которая также может быть изменена или недоступна в последующих версиях.

Синтаксис

BOOL CryptExportPKCS8(
  [in]            HCRYPTPROV hCryptProv,
  [in]            DWORD      dwKeySpec,
  [in]            LPSTR      pszPrivateKeyObjId,
  [in]            DWORD      dwFlags,
  [in, optional]  void       *pvAuxInfo,
  [out, optional] BYTE       *pbPrivateKeyBlob,
  [in, out]       DWORD      *pcbPrivateKeyBlob
);

Параметры

[in] hCryptProv

Переменная HCRYPTPROV , содержащая поставщика служб шифрования (CSP). Это дескриптор CSP, полученный путем вызова CryptAcquireContext.

[in] dwKeySpec

Переменная DWORD , содержащая спецификацию ключа. Следующие значения dwKeySpec определяются для поставщика по умолчанию.

Значение Значение
AT_KEYEXCHANGE
Ключи, используемые для шифрования и расшифровки ключей сеанса.
AT_SIGNATURE
Ключи, используемые для создания и проверки цифровых подписей.

[in] pszPrivateKeyObjId

Переменная LPSTR , содержащая идентификатор объекта закрытого ключа (OID).

[in] dwFlags

Этот параметр должен иметь нулевое значение, если pbPrivateKeyBlob имеет значение NULL и 0x8000 в противном случае.

[in, optional] pvAuxInfo

Этот параметр должен иметь значение NULL.

[out, optional] pbPrivateKeyBlob

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

Закрытый ключ будет содержать сведения в типе PKCS #8 PrivateKeyInfo Abstract Syntax Notation One (ASN.1), который находится в стандарте PKCS #8.

Для выделения памяти можно получить размер экспортированного закрытого ключа, задав для этого параметра значение NULL. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbPrivateKeyBlob

Указатель на DWORD , который может содержать на входных данных размер в байтах выделения памяти, необходимый для хранения pbPrivateKeyBlob. Если pbPrivateKeyBlob имеет значение NULL, этот параметр возвращает размер выделения памяти, необходимый для второго вызова функции. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

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

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

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

Следующие коды ошибок относятся к этой функции.

Код возврата Описание
ERROR_UNSUPPORTED_TYPE
Не удалось найти функцию экспорта, которую можно установить или зарегистрировать.
ERROR_MORE_DATA
Если буфер, заданный параметром pbPrivateKeyBlob , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает параметр pcbPrivateKeyBlob .
 

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

Комментарии

Эта функция поддерживается только для асимметричных ключей.

Требования

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

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

CryptAcquireContext

CryptExportPKCS8Ex

Получение данных неизвестной длины