Share via


CryptExportPublicKeyInfo-Funktion (wincrypt.h)

Die Funktion CryptExportPublicKeyInfo exportiert die Öffentlichen Schlüsselinformationen , die dem entsprechenden privaten Schlüssel des Anbieters zugeordnet sind. Eine aktualisierte Version dieser Funktion finden Sie unter CryptExportPublicKeyInfoEx.

Syntax

BOOL CryptExportPublicKeyInfo(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Parameter

[in] hCryptProvOrNCryptKey

Handle des Kryptografiedienstanbieters (Kryptografiedienstanbieter , CSP), der beim Exportieren der Informationen des öffentlichen Schlüssels verwendet werden soll. Bei diesem Handle muss es sich um ein HCRYPTPROV-Handle handelt, das mit der CryptAcquireContext-Funktion oder einem NCRYPT_KEY_HANDLE Handle erstellt wurde, das mithilfe der NCryptOpenKey-Funktion erstellt wurde. Neue Anwendungen sollten immer das NCRYPT_KEY_HANDLE Handle eines CNG-CSP übergeben.

[in] dwKeySpec

Gibt den privaten Schlüssel an, der aus dem Container des Anbieters verwendet werden soll. Es kann AT_KEYEXCHANGE oder AT_SIGNATURE sein. Dieser Parameter wird ignoriert, wenn ein NCRYPT_KEY_HANDLE im hCryptProvOrNCryptKey-Parameter verwendet wird.

[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

[out] pInfo

Ein Zeiger auf eine CERT_PUBLIC_KEY_INFO-Struktur , um die zu exportierenden Öffentlichen Schlüsselinformationen zu empfangen.

Um die Größe dieser Informationen für die Speicherbelegung festzulegen, kann dieser Parameter NULL sein. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.

[in, out] pcbInfo

Ein Zeiger auf ein DWORD , das die Größe des Puffers in Bytes enthält, auf den der pInfo-Parameter verweist. Wenn die Funktion zurückgibt, enthält das DWORD die Anzahl der Bytes, die für den Rückgabepuffer benötigt werden.

Hinweis Bei der Verarbeitung der im Puffer zurückgegebenen Daten müssen Anwendungen die tatsächliche Größe der zurückgegebenen Daten verwenden. Die tatsächliche Größe kann etwas kleiner als die Größe des bei der Eingabe angegebenen Puffers sein. (Bei der Eingabe werden Puffergrößen in der Regel groß genug angegeben, um sicherzustellen, dass die größtmöglichen Ausgabedaten in den Puffer passen.) Bei der Ausgabe wird die Variable aktualisiert, auf die dieser Parameter verweist, um die tatsächliche Größe der in den Puffer kopierten Daten widerzuspiegeln.
 

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 die folgenden Fehlercodes auf.
Rückgabecode Beschreibung
ERROR_MORE_DATA
Wenn der vom pInfo-Parameter angegebene Puffer nicht groß genug ist, um die zurückgegebenen Daten zu speichern, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Byte in der Variablen, auf die von pcbInfo verwiesen wird.
ERROR_FILE_NOT_FOUND
Ungültiger Zertifikatcodierungstyp. Derzeit wird nur X509_ASN_ENCODING unterstützt.
 

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.

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

CryptImportPublicKeyInfo

Datenverwaltung-Funktionen