CryptImportPublicKeyInfoEx-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollte mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Versionen entfernen.
 
Die Funktion CryptImportPublicKeyInfoEx importiert Informationen für öffentliche Schlüssel in den Kryptografiedienstanbieter (CSP ) und gibt ein Handle des öffentlichen Schlüssels zurück. Zusätzliche Parameter zum Außerkraftsetzen von Standardwerten werden bereitgestellt, um die Parameter in CERT_PUBLIC_KEY_INFO zu ergänzen.

Syntax

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
);

Parameter

[in] hCryptProv

Das Handle des CSP zum Empfangen des importierten öffentlichen Schlüssels. Dieses Handle muss bereits mit CryptAcquireContext erstellt worden sein.

[in] dwCertEncodingType

Gibt den verwendeten Codierungstyp an. Es ist immer akzeptabel, sowohl den Zertifikat- als auch den Nachrichtencodierungstyp anzugeben, indem sie mit einem bitweisen OR-Vorgang kombiniert werden, wie im folgenden Beispiel gezeigt:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Derzeit definierte Codierungstypen sind:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pInfo

die Adresse einer CERT_PUBLIC_KEY_INFO Struktur, die den öffentlichen Schlüssel enthält, der in den Anbieter importiert werden soll.

Hinweis Das pzObjId-Element des Algorithm-Elements , auf das durch die Parameter pInfo und dwCertEncodingType verwiesen wird, bestimmen eine installierbare CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC Rückruffunktion. Wenn keine installierbare Funktion gefunden wird, wird versucht, den Schlüssel als öffentlichen RSA-Schlüssel (szOID_RSA_RSA) zu importieren.
 

[in] aiKeyAlg

Eine ALG_ID-Struktur , die einen CSP-spezifischen Algorithmus enthält, um den CALG_RSA_KEYX Standardalgorithmus außer Kraft zu setzen.

[in] dwFlags

Für die zukünftige Verwendung reserviert und muss null sein.

[in] pvAuxInfo

Für die zukünftige Verwendung reserviert und muss NULL sein.

[out] phKey

Die Adresse einer HCRYPTKEY-Variablen , die das Handle des importierten öffentlichen Schlüssels empfängt. Wenn Sie die Verwendung des öffentlichen Schlüssels abgeschlossen haben, lassen Sie das Handle los, indem Sie die CryptDestroyKey-Funktion aufrufen.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion ungleich null (TRUE) zurück.

Wenn die Funktion fehlschlägt, gibt sie null (FALSE) zurück. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Hinweis Fehler aus den aufgerufenen Funktionen CryptGetUserKey und CryptExportKey können an diese Funktion weitergegeben werden. Diese Funktion weist den folgenden Fehlercode auf.
 
Wert BESCHREIBUNG
ERROR_FILE_NOT_FOUND
Eine Importfunktion, die installiert oder registriert werden kann, konnte für die angegebenen Parameter dwCertEncodingType und pInfo nicht gefunden werden.
 

Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise einen ASN.1-Codierungs-/Decodierungsfehler ( Abstract Syntax Notation One ) zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Rückgabewerte für Codierung/Decodierung.

Hinweise

Diese Funktion wird normalerweise verwendet, um den öffentlichen Schlüssel aus einem Zertifikat abzurufen. Dies geschieht, indem die CERT_PUBLIC_KEY_INFO-Struktur aus einer ausgefüllten Zertifikatstruktur übergeben wird, wie im folgenden Pseudocode gezeigt.

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)
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CryptExportPublicKeyInfoEx

Datenverwaltung-Funktionen