Función NCryptExportKey (ncrypt.h)
La función NCryptExportKey exporta una clave CNG a un BLOB de memoria.
Sintaxis
SECURITY_STATUS NCryptExportKey(
[in] NCRYPT_KEY_HANDLE hKey,
[in, optional] NCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[in, optional] NCryptBufferDesc *pParameterList,
[out, optional] PBYTE pbOutput,
[in] DWORD cbOutput,
[out] DWORD *pcbResult,
[in] DWORD dwFlags
);
Parámetros
[in] hKey
Identificador de la clave que se va a exportar.
[in, optional] hExportKey
Identificador de una clave criptográfica del usuario de destino. Los datos de clave dentro de la clave exportada BLOB se cifran mediante esta clave. Esto garantiza que solo el usuario de destino pueda usar la clave BLOB.
[in] pszBlobType
Cadena Unicode terminada en null que contiene un identificador que especifica el tipo de BLOB que se va a exportar. Puede ser uno de los siguientes valores.
BCRYPT_DH_PRIVATE_BLOB
Exporte un par de claves pública y privada Diffie-Hellman. El búfer pbOutput recibe una estructura de BCRYPT_DH_KEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_DH_PUBLIC_BLOB
Exporte una clave pública Diffie-Hellman. El búfer pbOutput recibe una estructura de BCRYPT_DH_KEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_DSA_PRIVATE_BLOB
Exporte un par de claves pública y privada de DSA. El búfer pbOutput recibe una estructura de BCRYPT_DSA_KEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_DSA_PUBLIC_BLOB
Exporte una clave pública DSA. El búfer pbOutput recibe una estructura de BCRYPT_DSA_KEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_ECCPRIVATE_BLOB
Exporte una clave privada de criptografía de curva elíptica (ECC). El búfer pbOutput recibe una estructura de BCRYPT_ECCKEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_ECCPUBLIC_BLOB
Exporte una clave pública ECC. El búfer pbOutput recibe una estructura de BCRYPT_ECCKEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_PUBLIC_KEY_BLOB
Exporte 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_PRIVATE_KEY_BLOB
Exporte 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_RSAFULLPRIVATE_BLOB
Exporte un par de claves pública y privada RSA completa. El búfer pbOutput recibe una estructura de BCRYPT_RSAKEY_BLOB inmediatamente seguida de los datos de clave. Este BLOB incluirá material clave adicional en comparación con el tipo de BCRYPT_RSAPRIVATE_BLOB .
BCRYPT_RSAPRIVATE_BLOB
Exporte un par de claves pública y privada RSA. El búfer pbOutput recibe una estructura de BCRYPT_RSAKEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_RSAPUBLIC_BLOB
Exporte una clave pública RSA. El búfer pbOutput recibe una estructura de BCRYPT_RSAKEY_BLOB inmediatamente seguida de los datos de clave.
LEGACY_DH_PRIVATE_BLOB
Exporte un BLOB de clave privada heredado diffie-Hellman versión 3 que contiene un par de claves pública y privada Diffie-Hellman que se puede importar mediante CryptoAPI.
LEGACY_DH_PUBLIC_BLOB
Exporte un BLOB de clave privada heredado diffie-Hellman versión 3 que contiene una clave pública Diffie-Hellman que se puede importar mediante CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Exporte un par de claves públicas y privadas de DSA en un formulario que se puede importar mediante CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
Exporte una clave pública de DSA en un formulario que se pueda importar mediante CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
Exporte un par de claves pública y privada RSA en un formulario que se pueda importar mediante CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
Exporte una clave pública RSA en un formulario que se pueda importar mediante CryptoAPI.
NCRYPT_CIPHER_KEY_BLOB
Exporte una clave de cifrado en una estructura de NCRYPT_KEY_BLOB_HEADER .
Windows 8 y Windows Server 2012: comienza la compatibilidad con este valor.
NCRYPT_OPAQUETRANSPORT_BLOB
Exporte una clave en un formato específico de un único CSP y sea adecuada para el transporte. Los BLOB opacos no se pueden transferir y deben importarse mediante el mismo CSP que generó el BLOB.
NCRYPT_PKCS7_ENVELOPE_BLOB
Exporte un BLOB de sobre PKCS #7. Los parámetros identificados por el parámetro pParameterList pueden o deben contener los parámetros siguientes, como se indica en la columna Requerida o opcional.
Parámetro | Obligatorio u opcional |
---|---|
NCRYPTBUFFER_CERT_BLOB | Requerido |
NCRYPTBUFFER_PKCS_ALG_OID | Requerido |
NCRYPTBUFFER_PKCS_ALG_PARAM | Opcionales |
NCRYPT_PKCS8_PRIVATE_KEY_BLOB
Exporte un BLOB de clave privada PKCS #8. Los parámetros identificados por el parámetro pParameterList pueden o deben contener los parámetros siguientes, como se indica en la columna Requerida o opcional.
Parámetro | Obligatorio u opcional |
---|---|
NCRYPTBUFFER_PKCS_ALG_OID | Opcionales |
NCRYPTBUFFER_PKCS_ALG_PARAM | Opcionales |
NCRYPTBUFFER_PKCS_SECRET | Opcionales |
NCRYPT_PROTECTED_KEY_BLOB
Exporte una clave protegida en una estructura de NCRYPT_KEY_BLOB_HEADER .
Windows 8 y Windows Server 2012: comienza la compatibilidad con este valor.
[in, optional] pParameterList
Dirección de una estructura NCryptBufferDesc que recibe información de parámetros para la clave. Este parámetro puede ser NULL si no se necesita esta información.
[out, optional] pbOutput
Dirección de un búfer que recibe la clave BLOB. El parámetro cbOutput contiene el tamaño de este búfer. Si este parámetro es NULL, esta función colocará el tamaño necesario, en bytes, en el DWORD al que apunta el parámetro pcbResult .
[in] cbOutput
Tamaño, en bytes, del búfer pbOutput .
[out] pcbResult
Dirección de una variable DWORD que recibe el número de bytes copiados en el búfer pbOutput . Si el parámetro pbOutput es NULL, esta función colocará el tamaño necesario, en bytes, en el DWORD al que apunta este parámetro.
[in] dwFlags
Marcas que modifican el comportamiento de la función. Puede ser cero o una combinación de uno o varios de los valores siguientes. El conjunto de marcas válidas es específico de cada proveedor de almacenamiento de claves. La marca siguiente se aplica a todos los proveedores.
Valor | Significado |
---|---|
NCRYPT_SILENT_FLAG | Solicita que el proveedor de servicios clave (KSP) no muestre ninguna interfaz de usuario. Si el proveedor debe mostrar la interfaz de usuario para funcionar, se produce un error en la llamada y el KSP debe establecer el código de error NTE_SILENT_CONTEXT como último error. |
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 |
---|---|
ERROR_SUCCESS | La función se realizó correctamente. |
NTE_BAD_FLAGS | El parámetro dwFlags contiene un valor que no es válido. |
NTE_BAD_KEY_STATE | La clave especificada por el parámetro hKey no es válida. La causa más común de este error es que la clave no se completó mediante la función NCryptFinalizeKey . |
NTE_BAD_TYPE | La clave especificada por el parámetro hKey no se puede exportar al tipo BLOB especificado por el parámetro pszBlobType . |
NTE_INVALID_HANDLE | El parámetro hKey o hExportKey no es válido. |
NTE_INVALID_PARAMETER | Uno o más parámetros no son válidos. |
Comentarios
Un servicio no debe llamar a esta función desde su función StartService. Si un servicio llama a esta función desde su función StartService , se puede producir un interbloqueo y el servicio puede dejar de responder.
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 | ncrypt.h |
Library | Ncrypt.lib |
Archivo DLL | Ncrypt.dll |