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


Функция SslGenerateMasterKey

Функция SslGenerateMasterKey вычисляет секретный ключ протокола SSL master.

Синтаксис

SECURITY_STATUS WINAPI SslGenerateMasterKey(
  _In_  NCRYPT_PROV_HANDLE hSslProvider,
  _In_  NCRYPT_KEY_HANDLE  hPrivateKey,
  _In_  NCRYPT_KEY_HANDLE  hPublicKey,
  _Out_ NCRYPT_KEY_HANDLE  *phMasterKey,
  _In_  DWORD              dwProtocol,
  _In_  DWORD              dwCipherSuite,
  _In_  PNCryptBufferDesc  pParameterList,
  _Out_ PBYTE              pbOutput,
  _In_  DWORD              cbOutput,
  _Out_ DWORD              *pcbResult,
  _In_  DWORD              dwFlags
);

Параметры

hSslProvider [in]

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

hPrivateKey [in]

Дескриптор закрытого ключа , используемого в обмене.

hPublicKey [in]

Дескриптор открытого ключа, используемого в обмене.

phMasterKey [out]

Указатель на дескриптор созданного ключа master.

dwProtocol [in]

Одно из значений идентификатора протокола поставщика SSL CNG .

dwCipherSuite [in]

Одно из значений идентификатора комплекта шифров поставщика SSL CNG .

pParameterList [in]

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

pbOutput [out]

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

Примечание

Этот буфер используется при обмене ключами RSA.

cbOutput [in]

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

pcbResult [out]

Указатель на значение DWORD , в котором помещалось количество байтов, записанных в буфер pbOutput .

dwFlags [in]

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

Значение Значение
NCRYPT_SSL_CLIENT_FLAG
0x00000001
Указывает обмен ключами на стороне клиента.
NCRYPT_SSL_SERVER_FLAG
0x00000002
Указывает обмен ключами на стороне сервера.

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

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

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

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

Возвращаемый код/значение Описание
NTE_NO_MEMORY
0x8009000EL
Недостаточно памяти для выделения необходимых буферов.
NTE_INVALID_HANDLE
0x80090026L
Один из предоставленных дескрипторов недопустим.
NTE_INVALID_PARAMETER
0x80090027L
Недопустимый параметр phMasterKey или hPublicKey .

Требования

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