Función BCryptSecretAgreement (bcrypt.h)

La función BCryptSecretAgreement crea un valor de acuerdo secreto a partir de una clave privada y pública.

Sintaxis

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

Parámetros

[in] hPrivKey

Identificador de la clave privada que se va a usar para crear el valor del contrato secreto. Esta clave y la clave hPubKey deben proceder del mismo proveedor de algoritmos criptográficos CNG.

[in] hPubKey

Identificador de la clave pública que se va a usar para crear el valor del contrato secreto. Esta clave y la clave hPrivKey deben proceder del mismo proveedor de algoritmos criptográficos CNG.

[out] phAgreedSecret

Puntero a un BCRYPT_SECRET_HANDLE que recibe un identificador que representa el valor del acuerdo secreto. Este identificador se debe liberar pasando a la función BCryptDestroySecret cuando ya no es necesario.

[in] dwFlags

Conjunto de marcas que modifican el comportamiento de esta función. No se definen marcas para esta función.

Valor devuelto

Devuelve un código de estado que indica el éxito o error de la función.

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

Código devuelto Descripción
STATUS_SUCCESS
La función se realizó correctamente.
STATUS_INVALID_HANDLE
El identificador de clave del parámetro hPrivKey o hPubKey no es válido.
STATUS_INVALID_PARAMETER
Uno o más parámetros no son válidos.
STATUS_NOT_SUPPORTED
El identificador de clave del parámetro hPrivKey no es una clave Diffie-Hellman.

Comentarios

En función de los modos de procesador que admita un proveedor, se puede llamar a BCryptSecretAgreement desde el modo de usuario o el modo kernel. Los autores de llamadas en modo kernel se pueden ejecutar en PASSIVE_LEVELIRQL o DISPATCH_LEVEL IRQL. Si el nivel irQL actual es DISPATCH_LEVEL, los identificadores proporcionados en los parámetros hPrivKey y hPubKey deben derivarse de un identificador de algoritmo devuelto por un proveedor que se abrió mediante la marca BCRYPT_PROV_DISPATCH y los punteros pasados a la función BCryptSecretAgreement deben hacer referencia a la memoria no paginada (o bloqueada).

Para llamar a esta función en modo kernel, use Cng.lib, que forma parte del Kit de desarrollo de controladores (DDK). Windows Server 2008 y Windows Vista: Para llamar a esta función en modo kernel, use Ksecdd.lib.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado bcrypt.h
Library Bcrypt.lib
Archivo DLL Bcrypt.dll

Consulte también

BCryptDestroySecret