Freigeben über


CryptImportPublicKeyInfo-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Releases entfernen.
 
Die Funktion CryptImportPublicKeyInfo konvertiert und importiert die Informationen des öffentlichen Schlüssels in den Anbieter und gibt ein Handle des öffentlichen Schlüssels zurück. CryptImportPublicKeyInfoEx stellt eine überarbeitete Version dieser Funktion bereit.

Syntax

BOOL CryptImportPublicKeyInfo(
  [in]  HCRYPTPROV            hCryptProv,
  [in]  DWORD                 dwCertEncodingType,
  [in]  PCERT_PUBLIC_KEY_INFO pInfo,
  [out] HCRYPTKEY             *phKey
);

Parameter

[in] hCryptProv

Das Handle des Kryptografiedienstanbieters (CSP), der beim Importieren des öffentlichen Schlüssels verwendet werden soll. 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.

[out] phKey

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

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert nonzero (TRUE).

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE). 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.
 
Rückgabecode Beschreibung
ERROR_FILE_NOT_FOUND
Eine Importfunktion, die installiert oder registriert werden kann, konnte für die angegebenen Parameter dwCertEncodingType und pInfo-Algorithm.pszObjId> 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 Encoding/Decoding Return Values.

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

Anforderung Wert
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

CryptExportPublicKeyInfo

Datenverwaltung-Funktionen