Compartilhar via


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 usado para criar o valor do contrato secreto. Essa chave e a chave de hPubKey devem vir do mesmo provedor de algoritmo criptográfico CNG.

[in] hPubKey

O identificador do chave pública a ser usado 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 ela não for mais necessária.

[in] dwFlags

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

Valor de retorno

Retorna um código de 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 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.

Observações

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 no hPrivKey e parâmetros de 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 devem 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
de cliente com suporte mínimo Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho bcrypt.h
biblioteca Bcrypt.lib
de DLL Bcrypt.dll

Consulte também

BCryptDestroySecret