Función SslGenerateMasterKey

La función SslGenerateMasterKey calcula la clave secreta maestra del protocolo Secure Sockets Layer (SSL).

Sintaxis

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
);

Parámetros

hSslProvider [in]

Identificador de la instancia del proveedor de protocolo SSL.

hPrivateKey [in]

Identificador de la clave privada usada en el intercambio.

hPublicKey [in]

Identificador de la clave pública usada en el intercambio.

phMasterKey [out]

Puntero al identificador de la clave maestra generada.

dwProtocol [in]

Uno de los valores del identificador de protocolo de proveedor SSL de CNG .

dwCipherSuite [in]

Uno de los valores del identificador del conjunto de cifrado del proveedor SSL de CNG .

pParameterList [in]

Puntero a una matriz de búferes de NCryptBuffer que contienen información utilizada como parte de la operación de intercambio de claves. El conjunto preciso de búferes depende del protocolo y del conjunto de cifrado que se usa. Como mínimo, la lista contendrá búferes que contienen los valores aleatorios proporcionados por el cliente y el servidor.

pbOutput [out]

Dirección de un búfer que recibe el secreto de premaster cifrado con la clave pública del servidor. El parámetro cbOutput contiene el tamaño de este búfer. Si este parámetro es NULL, esta función devuelve el tamaño necesario, en bytes, en el DWORD al que apunta el parámetro pcbResult .

Nota:

Este búfer se usa al realizar un intercambio de claves RSA.

cbOutput [in]

Tamaño, en bytes, del búfer pbOutput .

pcbResult [out]

Puntero a un valor DWORD en el que se va a colocar el número de bytes escritos en el búfer pbOutput .

dwFlags [in]

Especifica si esta función se usa para el intercambio de claves del lado cliente o del lado servidor.

Valor Significado
NCRYPT_SSL_CLIENT_FLAG
0x00000001
Especifica un intercambio de claves del lado cliente.
NCRYPT_SSL_SERVER_FLAG
0x00000002
Especifica un intercambio de claves del lado servidor.

Valor devuelto

Si la función se realiza correctamente, devuelve cero.

Si se produce un error en la función, devuelve un valor de error distinto de cero.

Entre los posibles códigos de retorno se incluyen, entre otros, los siguientes.

Código o valor devuelto Descripción
NTE_NO_MEMORY
0x8009000EL
No hay suficiente memoria disponible para asignar los búferes necesarios.
NTE_INVALID_HANDLE
0x80090026L
Uno de los identificadores proporcionados no es válido.
NTE_INVALID_PARAMETER
0x80090027L
El parámetro phMasterKey o hPublicKey no es válido.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado
Sslprovider.h
Archivo DLL
Ncrypt.dll