Compartir a través de


Función BCryptDuplicateKey (bcrypt.h)

La función BCryptDuplicateKey crea un duplicado de una clave simétrica .

Sintaxis

NTSTATUS BCryptDuplicateKey(
  [in]  BCRYPT_KEY_HANDLE hKey,
  [out] BCRYPT_KEY_HANDLE *phNewKey,
  [out] PUCHAR            pbKeyObject,
  [in]  ULONG             cbKeyObject,
  [in]  ULONG             dwFlags
);

Parámetros

[in] hKey

Identificador de la clave que se va a duplicar. Debe ser un identificador de una clave simétrica.

[out] phNewKey

Puntero a una variable BCRYPT_KEY_HANDLE que recibe el identificador de la clave duplicada. Este identificador se usa en funciones posteriores que requieren una clave, como BCryptEncrypt. Este identificador debe liberarse cuando ya no sea necesario pasandolo a la función BCryptDestroyKey .

[out] pbKeyObject

Puntero a un búfer que recibe el objeto de clave duplicado. El parámetro cbKeyObject contiene el tamaño de este búfer. El tamaño necesario de este búfer se puede obtener llamando a la función BCryptGetProperty para obtener la propiedad BCRYPT_OBJECT_LENGTH. Esto proporcionará el tamaño del objeto de clave para el algoritmo especificado.

Esta memoria solo se puede liberar después de destruir el identificador de clave phNewKey.

[in] cbKeyObject

Tamaño, en bytes, del búfer de pbKeyObject.

[in] dwFlags

Conjunto de marcas que modifican el comportamiento de esta función. Actualmente no se definen marcas, por lo que este parámetro debe ser cero.

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_BUFFER_TOO_SMALL
El tamaño del objeto de clave especificado por el parámetro cbKeyObject no es lo suficientemente grande como para contener el objeto de clave.
STATUS_INVALID_HANDLE
El identificador de clave del parámetro hKey no es válido. Este valor también se devuelve si la clave que se va a duplicar no es una clave simétrica.
STATUS_INVALID_PARAMETER
Uno o varios parámetros no son válidos.

Observaciones

En función de los modos de procesador que admita un proveedor, se puede llamar a BCryptDuplicateKey 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, el identificador proporcionado en el parámetro hKey debe derivarse de un identificador de algoritmo devuelto por un proveedor que se abrió con la marca BCRYPT_PROV_DISPATCH y los punteros pasados a la función BCryptDuplicateKey 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