Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función BCryptImportKeyPair importa un par de claves pública y privada desde un BLOB de clave. La función BCryptImportKey se usa para importar una clave simétrica.
Sintaxis
NTSTATUS BCryptImportKeyPair(
[in] BCRYPT_ALG_HANDLE hAlgorithm,
[in, out] BCRYPT_KEY_HANDLE hImportKey,
[in] LPCWSTR pszBlobType,
[out] BCRYPT_KEY_HANDLE *phKey,
[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 mediante una llamada a la función BCryptOpenAlgorithmProvider .
[in, out] hImportKey
Este parámetro no se usa actualmente y debe ser NULL
.
[in] pszBlobType
Cadena Unicode terminada en null que contiene un identificador que especifica el tipo de BLOB que está incluido en el búfer pbInput . Puede ser uno de los siguientes valores:
Valor | Significado |
---|---|
BCRYPT_DH_PRIVATE_BLOB | El BLOB es un blob de Diffie-Hellman par de claves pública y privada. El búfer pbInput debe contener una estructura BCRYPT_DH_KEY_BLOB inmediatamente seguida de los datos de clave. |
BCRYPT_DH_PUBLIC_BLOB | El BLOB es un BLOB de clave pública Diffie-Hellman. El búfer pbInput debe contener una estructura BCRYPT_DH_KEY_BLOB inmediatamente seguida de los datos de clave. |
BCRYPT_DSA_PRIVATE_BLOB | El BLOB es un blob de par de claves pública y privada de DSA. El búfer pbInput debe contener una estructura BCRYPT_DSA_KEY_BLOB o BCRYPT_DSA_KEY_BLOB_V2 inmediatamente seguida de los datos de clave.
BCRYPT_DSA_KEY_BLOB se usa para longitudes de clave de 512 a 1024 bits.
BCRYPT_DSA_KEY_BLOB_V2 se usa para longitudes de clave que superan los 1024 bits, pero son menores o iguales a 3072 bits. Windows 8: Comienza la compatibilidad con BCRYPT_DSA_KEY_BLOB_V2 . |
BCRYPT_DSA_PUBLIC_BLOB | El BLOB es un BLOB de clave pública DSA. El búfer pbInput debe contener una estructura BCRYPT_DSA_KEY_BLOB o BCRYPT_DSA_KEY_BLOB_V2 inmediatamente seguida de los datos de clave.
BCRYPT_DSA_KEY_BLOB se usa para longitudes de clave de 512 a 1024 bits.
BCRYPT_DSA_KEY_BLOB_V2 se usa para longitudes de clave que superan los 1024 bits, pero son menores o iguales a 3072 bits. Windows 8: Comienza la compatibilidad con BCRYPT_DSA_KEY_BLOB_V2 . |
BCRYPT_ECCPRIVATE_BLOB | El BLOB es una clave privada de criptografía de curva elíptica (ECC). El búfer pbInput debe contener una estructura BCRYPT_ECCKEY_BLOB inmediatamente seguida de los datos de clave. |
BCRYPT_ECCPUBLIC_BLOB | El BLOB es una clave pública ECC. El búfer pbInput debe contener una estructura BCRYPT_ECCKEY_BLOB inmediatamente seguida de los datos de clave. |
BCRYPT_MLKEM_PUBLIC_BLOB | El BLOB es un blob de ML-KEM que proporciona importación y exportación de claves de encapsulación de bytes estándar ML-KEM por FIPS 203. El búfer pbInput debe contener una estructura de BCRYPT_MLKEM_KEY_BLOB que contenga la clave de encapsulación KEM codificada por bytes, BCRYPT_MLKEM_PUBLIC_MAGIC y conjunto de parámetros ML-KEM. |
BCRYPT_MLKEM_PRIVATE_BLOB | El BLOB es un blob de ML-KEM que proporciona importación y exportación de claves de descapsulación de bytes estándar ML-KEM por FIPS 203. El búfer pbInput debe contener una estructura de BCRYPT_MLKEM_KEY_BLOB que contenga la clave de descapsulación KEM codificada por bytes, BCRYPT_MLKEM_PRIVATE_MAGIC y ML-KEM conjunto de parámetros. |
BCRYPT_MLKEM_PRIVATE_SEED_BLOB | El BLOB es una ML-KEM BLOB que proporciona importación y exportación de semillas de ML-KEM por FIPS 203. El búfer pbInput debe contener una estructura de BCRYPT_MLKEM_KEY_BLOB que contenga el conjunto de parámetros keM, BCRYPT_MLKEM_SEED_MAGIC y ML-KEM. |
BCRYPT_PQDSA_PUBLIC_BLOB | El BLOB es un BLOB de ML-DSA, SLH-DSA, LMS o XMSS que proporciona importación y exportación de claves públicas de firma digital PQ por FIPS 204 y 205. El búfer pbInput debe contener una estructura de BCRYPT_PQDSA_KEY_BLOB que contenga el material clave, la instrucción mágica pública y el conjunto de parámetros PQ. |
BCRYPT_PQDSA_PRIVATE_BLOB | El BLOB es un BLOB de ML-DSA, SLH-DSA, LMS o XMSS BLOB que proporciona importación y exportación de claves privadas de firma digital PQ por FIPS 204 y 205. El búfer pbInput debe contener una estructura de BCRYPT_PQDSA_KEY_BLOB que contenga el material clave, la magia privada y el conjunto de parámetros PQ. |
BCRYPT_PQDSA_PRIVATE_SEED_BLOB | El BLOB es un BLOB de ML-DSA, SLH-DSA, LMS o XMSS BLOB que proporciona importación y exportación de semillas privadas de firma digital PQ por FIPS 204 y 205. El búfer pbInput debe contener una estructura de BCRYPT_PQDSA_KEY_BLOB que contenga el valor de inicialización, la magia de inicialización privada y el conjunto de parámetros PQ. |
BCRYPT_PRIVATE_KEY_BLOB | El BLOB es una clave privada genérica de cualquier tipo. La clave privada no contiene necesariamente la clave pública. El tipo de clave de este BLOB viene determinado por el miembro Magic de la estructura BCRYPT_KEY_BLOB . |
BCRYPT_PUBLIC_KEY_BLOB | El BLOB es una clave pública genérica de cualquier tipo. El tipo de clave de este BLOB viene determinado por el miembro Magic de la estructura BCRYPT_KEY_BLOB . |
BCRYPT_RSAPRIVATE_BLOB | El BLOB es un blob de pares de claves pública y privada RSA. El búfer pbInput debe contener una estructura BCRYPT_RSAKEY_BLOB inmediatamente seguida de los datos de clave. |
BCRYPT_RSAPUBLIC_BLOB | El BLOB es un BLOB de clave pública RSA. El búfer pbInput debe contener una estructura BCRYPT_RSAKEY_BLOB inmediatamente seguida de los datos de clave. |
LEGACY_DH_PUBLIC_BLOB | El BLOB es un blob de clave pública Diffie-Hellman que se exportó mediante CryptoAPI. El proveedor primitivo de Microsoft no admite la importación de este tipo BLOB. |
LEGACY_DH_PRIVATE_BLOB | El BLOB es un blob de clave privada heredadoDiffie-Hellman versión 3 que contiene un par de claves pública o privada Diffie-Hellman que se exportó mediante CryptoAPI. |
LEGACY_DSA_PRIVATE_BLOB | El BLOB es un blob de par de claves pública y privada de DSA que se exportó mediante CryptoAPI. |
LEGACY_DSA_PUBLIC_BLOB | El BLOB es un BLOB de clave pública DSA que se exportó mediante CryptoAPI. El proveedor primitivo de Microsoft no admite la importación de este tipo BLOB. |
LEGACY_DSA_V2_PRIVATE_BLOB | El BLOB es una clave privada de la versión 2 de DSA en un formulario que se puede importar mediante CryptoAPI. |
LEGACY_RSAPRIVATE_BLOB | El BLOB es un blob de pares de claves pública y privada RSA que se exportó mediante CryptoAPI. |
LEGACY_RSAPUBLIC_BLOB | El BLOB es un BLOB de clave pública RSA que se exportó mediante CryptoAPI. El proveedor primitivo de Microsoft no admite la importación de este tipo BLOB. |
[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 BCryptSignHash. Este identificador debe liberarse cuando ya no sea necesario pasandolo a la función BCryptDestroyKey.
[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 blob de clave 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. Puede ser cero o el siguiente valor.
Valor | Significado |
---|---|
BCRYPT_NO_KEY_VALIDATION | No participar en las pruebas automáticas de FIPS aplicables. |
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_BUFFER_SIZE | Si el pbInput del búfer no tiene el tamaño correcto para la combinación del conjunto de parámetros de ML-KEM asociado a hAlgorithm y para el tipo de blob que se va a importar. |
STATUS_INVALID_HANDLE | El identificador de algoritmo del parámetro hAlgorithm no es válido. |
STATUS_INVALID_PARAMETER | Uno o varios 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 . |
Observaciones
En función de los modos de procesador que admita un proveedor, se puede llamar a BCryptImportKeyPair 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, 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 BCryptImportKeyPair deben hacer referencia a la memoria no paginada (o bloqueada).
El autor de la llamada debe liberar hKey con BCryptDestroyKey cuando la clave ya no se use.
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 compatible | 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 | bcrypt.h |
Biblioteca | Bcrypt.lib |
DLL de | Bcrypt.dll |