Função BCryptSecretAgreement (bcrypt.h)

A função BCryptSecretAgreement cria um valor de contrato secreto de uma chave pública e privada.

Sintaxe

NTSTATUS BCryptSecretAgreement(
  [in]  BCRYPT_KEY_HANDLE    hPrivKey,
  [in]  BCRYPT_KEY_HANDLE    hPubKey,
  [out] BCRYPT_SECRET_HANDLE *phAgreedSecret,
  [in]  ULONG                dwFlags
);

Parâmetros

[in] hPrivKey

O identificador da chave privada a ser usada para criar o valor do contrato secreto. Essa chave e a chave hPubKey devem vir do mesmo provedor de algoritmo criptográfico CNG.

[in] hPubKey

O identificador da chave pública a ser usada para criar o valor do contrato secreto. Essa chave e a chave hPrivKey devem vir do mesmo provedor de algoritmo criptográfico CNG.

[out] phAgreedSecret

Um ponteiro para um BCRYPT_SECRET_HANDLE que recebe um identificador que representa o valor do contrato secreto. Esse identificador deve ser liberado passando-o para a função BCryptDestroySecret quando não for mais necessário.

[in] dwFlags

Um conjunto de sinalizadores que modificam o comportamento dessa função. Nenhum sinalizador é definido para essa função.

Retornar valor

Retorna um código status que indica o êxito ou a falha da função.

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

Código de retorno Descrição
STATUS_SUCCESS
A função foi bem-sucedida.
STATUS_INVALID_HANDLE
O identificador de chave no parâmetro hPrivKey ou hPubKey não é válido.
STATUS_INVALID_PARAMETER
Um ou mais dos parâmetros não são válidos.
STATUS_NOT_SUPPORTED
O identificador de chave no parâmetro hPrivKey não é uma chave Diffie-Hellman.

Comentários

Dependendo de quais modos de processador um provedor dá suporte, BCryptSecretAgreement pode ser chamado do modo de usuário ou do modo kernel. Os chamadores do modo kernel podem ser executados em PASSIVE_LEVELIRQL ou DISPATCH_LEVEL IRQL. Se o nível IRQL atual for DISPATCH_LEVEL, os identificadores fornecidos nos parâmetros hPrivKey e hPubKey deverão ser derivados de um identificador de algoritmo retornado por um provedor que foi aberto usando o sinalizador BCRYPT_PROV_DISPATCH e quaisquer ponteiros passados para a função BCryptSecretAgreement deverão se referir à memória não paga (ou bloqueada).

Para chamar essa função no modo kernel, use Cng.lib, que faz parte do DDK (Driver Development Kit). Windows Server 2008 e Windows Vista: Para chamar essa função no modo kernel, use Ksecdd.lib.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho bcrypt.h
Biblioteca Bcrypt.lib
DLL Bcrypt.dll

Confira também

BCryptDestroySecret