Compartilhar via


Função SslGenerateMasterKey

A função SslGenerateMasterKey calcula a chave secreta do protocolo SSL (Secure Sockets Layer) master.

Sintaxe

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]

O identificador para a instância do provedor de protocolo SSL.

hPrivateKey [in]

O identificador para a chave privada usada na troca.

hPublicKey [in]

O identificador para a chave pública usada na troca.

phMasterKey [out]

Um ponteiro para o identificador para a chave de master gerada.

dwProtocol [in]

Um dos valores do Identificador de Protocolo do Provedor de SSL do CNG .

dwCipherSuite [in]

Um dos valores do Identificador do Pacote de Criptografia do Provedor de SSL do CNG .

pParameterList [in]

Um ponteiro para uma matriz de buffers NCryptBuffer que contêm informações usadas como parte da operação de troca de chaves. O conjunto preciso de buffers depende do protocolo e do conjunto de criptografia usados. No mínimo, a lista conterá buffers que contêm os valores aleatórios fornecidos pelo cliente e pelo servidor.

pbOutput [out]

O endereço de um buffer que recebe o segredo do premaster criptografado com a chave pública do servidor. O parâmetro cbOutput contém o tamanho desse buffer. Se esse parâmetro for NULL, essa função retornará o tamanho necessário, em bytes, no DWORD apontado pelo parâmetro pcbResult .

Observação

Esse buffer é usado ao executar uma troca de chaves RSA.

cbOutput [in]

O tamanho, em bytes, do buffer pbOutput .

pcbResult [out]

Um ponteiro para um valor DWORD no qual colocar o número de bytes gravados no buffer pbOutput .

dwFlags [in]

Especifica se essa função está sendo usada para troca de chaves do lado do cliente ou do servidor.

Valor Significado
NCRYPT_SSL_CLIENT_FLAG
0x00000001
Especifica uma troca de chaves do lado do cliente.
NCRYPT_SSL_SERVER_FLAG
0x00000002
Especifica uma troca de chaves do lado do servidor.

Valor retornado

Se a função for bem-sucedida, ela retornará zero.

Se a função falhar, ela retornará um valor de erro diferente de zero.

Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.

Retornar código/valor Descrição
NTE_NO_MEMORY
0x8009000EL
Não há memória suficiente disponível para alocar buffers necessários.
NTE_INVALID_HANDLE
0x80090026L
Um dos identificadores fornecidos não é válido.
NTE_INVALID_PARAMETER
0x80090027L
O parâmetro phMasterKey ou hPublicKey não é válido.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho
Sslprovider.h
DLL
Ncrypt.dll