Compartir a través de


Función CryptImportPublicKeyInfoEx (wincrypt.h)

Importante Esta API está en desuso. El software nuevo y existente debe empezar a usar las API cryptography Next Generation. Microsoft puede quitar esta API en futuras versiones.
 
La función CryptImportPublicKeyInfoEx importa información de clave pública en el proveedor de servicios criptográficos (CSP) y devuelve un identificador de la clave pública. Se proporcionan parámetros adicionales para invalidar los valores predeterminados para complementarlos en CERT_PUBLIC_KEY_INFO.

Sintaxis

BOOL CryptImportPublicKeyInfoEx(
  [in]  HCRYPTPROV            hCryptProv,
  [in]  DWORD                 dwCertEncodingType,
  [in]  PCERT_PUBLIC_KEY_INFO pInfo,
  [in]  ALG_ID                aiKeyAlg,
  [in]  DWORD                 dwFlags,
  [in]  void                  *pvAuxInfo,
  [out] HCRYPTKEY             *phKey
);

Parámetros

[in] hCryptProv

Identificador del CSP para recibir la clave pública importada. Este identificador ya debe haberse creado con CryptAcquireContext.

[in] dwCertEncodingType

Especifica el tipo de codificación usado. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes al combinarlos con una operación OR bit a bit, como se muestra en el ejemplo siguiente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Los tipos de codificación definidos actualmente son:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pInfo

la dirección de una estructura de CERT_PUBLIC_KEY_INFO que contiene la clave pública que se va a importar en el proveedor.

Nota El miembro pzObjId del miembro Algorithm al que apuntan los parámetros pInfo y dwCertEncodingType determinan una función de devolución de llamada CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC instalable. Si no se encuentra una función instalable, se intenta importar la clave como una clave pública RSA (szOID_RSA_RSA).
 

[in] aiKeyAlg

Estructura ALG_ID que contiene un algoritmo específico de CSP para invalidar el algoritmo predeterminado CALG_RSA_KEYX .

[in] dwFlags

Reservado para uso futuro y debe ser cero.

[in] pvAuxInfo

Reservado para uso futuro y debe ser NULL.

[out] phKey

Dirección de una variable HCRYPTKEY que recibe el identificador de la clave pública importada. Cuando haya terminado de usar la clave pública, libere el identificador llamando a la función CryptDestroyKey .

Valor devuelto

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

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

Nota Los errores de las funciones llamadas CryptGetUserKey y CryptExportKey podrían propagarse a esta función. Esta función tiene el siguiente código de error.
 
Valor Descripción
ERROR_FILE_NOT_FOUND
No se encontró una función de importación que se puede instalar o registrar para los parámetros dwCertEncodingType y pInfo especificados.
 

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

Comentarios

Esta función se usa normalmente para recuperar la clave pública de un certificado. Para ello, se pasa la estructura de CERT_PUBLIC_KEY_INFO de una estructura de certificado rellenada, como se muestra en el pseudocódigo siguiente.

PCCERT_CONTEXT pCertContext

// Get the certificate context structure from a certificate.
pCertContext = CertCreateCertificateContext(...)
if(pCertContext)
{
    HCRYPTKEY hCertPubKey

    // Get the public key information for the certificate.
    CryptImportPublicKeyInfo(
        hCryptProv, 
        X509_ASN_ENCODING, 
        &pCertContext->pCertInfo->SubjectPublicKeyInfo, 
        &hCertPubKey)

    CertFreeCertificateContext(pCertContext)
}

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

CryptExportPublicKeyInfoEx

Funciones de Administración de datos