Función BCryptImportKey (bcrypt.h)

La función BCryptImportKey importa una clave simétrica de una clave BLOB. La función BCryptImportKeyPair se usa para importar un par de claves pública y privada.

Sintaxis

NTSTATUS BCryptImportKey(
  [in]            BCRYPT_ALG_HANDLE hAlgorithm,
  [in, optional]  BCRYPT_KEY_HANDLE hImportKey,
  [in]            LPCWSTR           pszBlobType,
  [out]           BCRYPT_KEY_HANDLE *phKey,
  [out, optional] PUCHAR            pbKeyObject,
  [in]            ULONG             cbKeyObject,
  [in]            PUCHAR            pbInput,
  [in]            ULONG             cbInput,
  [in]            ULONG             dwFlags
);

Parámetros

[in] hAlgorithm

Identificador del proveedor de algoritmos para importar la clave. Este identificador se obtiene llamando a la función BCryptOpenAlgorithmProvider .

[in, optional] hImportKey

Identificador de la clave de cifrado de clave necesaria para desencapsular la clave BLOB en el parámetro pbInput .

Nota El identificador debe ser proporcionado por el mismo proveedor que proporcionó la clave que se está importando.

 

Windows Server 2008 y Windows Vista: Este parámetro no se usa y debe establecerse en NULL.

[in] pszBlobType

Cadena Unicode terminada en null que contiene un identificador que especifica el tipo de BLOB que se encuentra en el búfer pbInput . Puede ser uno de los siguientes valores.

Valor Significado
BCRYPT_AES_WRAP_KEY_BLOB
Importe una clave simétrica desde un BLOB de clave encapsulada con clave AES. El parámetro hImportKey debe hacer referencia a un puntero de BCRYPT_KEY_HANDLE válido a la clave de cifrado de claves.

Windows Server 2008 y Windows Vista: Este tipo BLOB no se admite.

BCRYPT_KEY_DATA_BLOB
Importe una clave simétrica desde un BLOB de datos. El parámetro pbInput es un puntero a una estructura de BCRYPT_KEY_DATA_BLOB_HEADER inmediatamente seguida de la clave BLOB.
BCRYPT_OPAQUE_KEY_BLOB
Importe un BLOB de clave simétrica en un formato específico de un único CSP. Los BLOB opacos no se pueden transferir y deben importarse mediante el mismo CSP que generó el BLOB. Los BLOB opacos solo están diseñados para usarse para la transferencia entre procesos de claves y no son adecuados para conservarse y leerse en todas las versiones de un proveedor.

[out] phKey

Puntero a un BCRYPT_KEY_HANDLE que recibe el identificador de la clave importada. 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, optional] pbKeyObject

Puntero a un búfer que recibe el objeto de clave importado. 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 que se destruya el identificador de clave phKey .

[in] cbKeyObject

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

[in] pbInput

Dirección de un búfer que contiene la clave BLOB que se va a importar. El parámetro cbInput contiene el tamaño de este búfer. El parámetro pszBlobType especifica el tipo de clave BLOB que contiene este búfer.

[in] cbInput

Tamaño, en bytes, del búfer pbInput .

[in] dwFlags

Conjunto de marcas que modifican el comportamiento de esta función. Actualmente no hay marcas definidas, 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 del algoritmo en el parámetro hAlgorithm no es válido.
STATUS_INVALID_PARAMETER
Uno o más parámetros no son válidos.
STATUS_NOT_SUPPORTED
El proveedor de algoritmos especificado por el parámetro hAlgorithm no admite el tipo BLOB especificado por el parámetro pszBlobType .

Comentarios

En función de los modos de procesador que admita un proveedor, se puede llamar a BCryptImportKey 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 está DISPATCH_LEVEL, el identificador proporcionado en el parámetro hAlgorithm debe haberse abierto mediante la marca BCRYPT_PROV_DISPATCH y los punteros pasados a la función BCryptImportKey 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

BCryptDestroyKey

BCryptExportKey

BCryptImportKeyPair