Compartir a través de


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 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 contrato secreto. Este identificador se debe liberar pasando a la función BCryptDestroySecret cuando ya no se necesite.

[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 códigos de retorno posibles 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 hPrivKey o parámetro hPubKey no es válido.
STATUS_INVALID_PARAMETER
Uno o varios parámetros no son válidos.
STATUS_NOT_SUPPORTED
El identificador de clave del parámetro hPrivKey no es una clave Diffie-Hellman.

Observaciones

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 de IRQL actual es DISPATCH_LEVEL, los identificadores proporcionados en el hPrivKey y parámetros 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 al BCryptSecretAgreement función 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 Valor
cliente mínimo admitido Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de bcrypt.h
biblioteca de Bcrypt.lib
DLL de Bcrypt.dll

Consulte también

BCryptDestroySecret