Función CryptExportPKCS8 (wincrypt.h)

[La función CryptExportPKCS8 ya no está disponible para su uso a partir de Windows Server 2008 y Windows Vista. En su lugar, use la función PFXExportCertStoreEx .

La función CryptExportPKCS8 exporta la clave privada en formato PKCS #8. La función se sustituye por CryptExportPKCS8Ex, que también puede modificarse o no estar disponible en versiones posteriores.

Sintaxis

BOOL CryptExportPKCS8(
  [in]            HCRYPTPROV hCryptProv,
  [in]            DWORD      dwKeySpec,
  [in]            LPSTR      pszPrivateKeyObjId,
  [in]            DWORD      dwFlags,
  [in, optional]  void       *pvAuxInfo,
  [out, optional] BYTE       *pbPrivateKeyBlob,
  [in, out]       DWORD      *pcbPrivateKeyBlob
);

Parámetros

[in] hCryptProv

Variable HCRYPTPROV que contiene el proveedor de servicios criptográficos (CSP). Se trata de un identificador del CSP obtenido mediante una llamada a CryptAcquireContext.

[in] dwKeySpec

Variable DWORD que contiene la especificación de clave. Los siguientes valores dwKeySpec se definen para el proveedor predeterminado.

Valor Significado
AT_KEYEXCHANGE
Claves usadas para cifrar o descifrar claves de sesión.
AT_SIGNATURE
Claves usadas para crear y comprobar firmas digitales.

[in] pszPrivateKeyObjId

Variable LPSTR que contiene el identificador de objeto de clave privada (OID).

[in] dwFlags

Este parámetro debe ser cero si pbPrivateKeyBlob es NULL y 0x8000 en caso contrario.

[in, optional] pvAuxInfo

Este parámetro debe establecerse en NULL.

[out, optional] pbPrivateKeyBlob

Puntero a una matriz de estructuras BYTE para recibir la clave privada que se va a exportar.

La clave privada contendrá la información de un tipo PKCS #8 PrivateKeyInfo Abstract Syntax Notation One (ASN.1) que se encuentra en el estándar PKCS #8.

Para fines de asignación de memoria, puede obtener el tamaño de la clave privada que se va a exportar estableciendo este parámetro en NULL. Para obtener más información, vea Recuperación de datos de longitud desconocida.

[in, out] pcbPrivateKeyBlob

Puntero a un DWORD que puede contener, en la entrada, el tamaño, en bytes, de la asignación de memoria necesaria para contener el pbPrivateKeyBlob. Si pbPrivateKeyBlob es NULL, este parámetro devolverá el tamaño de la asignación de memoria necesaria para una segunda llamada a la función. Para obtener más información, vea Recuperación de datos de longitud desconocida.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.

Los códigos de error siguientes son específicos de esta función.

Código devuelto Descripción
ERROR_UNSUPPORTED_TYPE
No se encontró una función de exportación que se puede instalar o registrar.
ERROR_MORE_DATA
Si el búfer especificado por el parámetro pbPrivateKeyBlob no es lo suficientemente grande como para contener los datos devueltos, la función establece el código ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta el parámetro pcbPrivateKeyBlob .
 

Si se produce un error en la función, GetLastError puede devolver un error de codificación o descodificación de ASN.1. Para obtener información sobre estos errores, vea Valores devueltos de codificación y descodificación de ASN.1.

Comentarios

Esta función solo se admite para claves asimétricas.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CryptAcquireContext

CryptExportPKCS8Ex

Recuperar datos de longitud desconocida