Функция SslExportKey

Функция SslExportKey возвращает ключ сеанса ПРОТОКОЛА SSL или открытый временный ключ протокола SSL в сериализованный BLOB.

Синтаксис

SECURITY_STATUS WINAPI SslExportKey(
  _In_      NCRYPT_PROV_HANDLE hSslProvider,
  _In_      NCRYPT_KEY_HANDLE  hKey,
  _In_      LPCWSTR            pszBlobType,
  _Out_opt_ PBYTE              pbOutput,
  _In_      DWORD              cbOutput,
  _Out_     DWORD              *pcbResult,
  _In_      DWORD              dwFlags
);

Параметры

hSslProvider [in]

Дескриптор экземпляра поставщика протокола SSL.

hKey [in]

Дескриптор ключа для экспорта.

Если ключ не указан, задайте для этого параметра значение NULL.

Примечание

Дескриптор hKey получается путем вызова функции SslOpenPrivateKey . Дескрипторы, полученные из функции NCryptOpenKey , не поддерживаются.

pszBlobType [in]

Строка Юникода, завершающаяся значением NULL, содержащая идентификатор, указывающий тип экспортируемых BLOB-объектов. Это может быть одно из следующих значений.

Значение Значение
BCRYPT_DH_PUBLIC_BLOB
Экспорт открытого ключа Diffie-Hellman. Буфер pbOutputполучает BCRYPT_DH_KEY_BLOB структуру сразу после ключевых данных.
BCRYPT_ECCPUBLIC_BLOB
Экспорт открытого ключа с многоточием кривой (ECC). Буфер pbOutputполучает BCRYPT_ECCKEY_BLOB структуру сразу после ключевых данных.
BCRYPT_OPAQUE_KEY_BLOB
Экспорт симметричного ключа в формате, относящийся к одному поставщику служб шифрования (CSP). Непрозрачные BLOB-объекты не переносятся и должны быть импортированы с помощью того же поставщика служб шифрования (CSP), который создал BLOB.
BCRYPT_RSAPUBLIC_BLOB
Экспорт открытого ключа RSA. Буфер pbOutputполучает BCRYPT_RSAKEY_BLOB структуру сразу после ключевых данных.

pbOutput [out, необязательный]

Адрес буфера, который получает ключевой BLOB-объект. Параметр cbOutput содержит размер этого буфера. Если этот параметр имеет значение NULL, эта функция будет размещать требуемый размер в байтах в параметре DWORD , на который указывает параметр pcbResult .

cbOutput [in]

Размер буфера pbOutput в байтах.

pcbResult [out]

Адрес переменной DWORD , получающей количество байтов, скопированных в буфер pbOutput . Если параметр pbOutput имеет значение NULL при вызове функции, требуемый размер буфера pbOutput в байтах возвращается в параметре DWORD , на который указывает этот параметр.

dwFlags [in]

Зарезервировано для последующего использования.

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

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

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

Возможные коды возврата включают в себя, но не ограничиваются следующими кодами.

Возвращаемый код или значение Описание
NTE_INVALID_HANDLE
0x80090026L
Один из предоставленных дескрипторов недопустим.

Remarks

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

При экспорте ключей сеанса тип BLOB непрозрачн, то есть формат БОЛЬШОго двоичного объекта не имеет значения, если функции SslExportKey и SslImportKey могут интерпретировать его.

При экспорте общедоступной части эфемерного ключа тип BLOB должен быть соответствующим типом, например NCRYPT_DH_PUBLIC_BLOB или NCRYPT_ECCPUBLIC_BLOB.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2008 [только классические приложения]
Header
Sslprovider.h
DLL
Ncrypt.dll