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

Behandeln des kryptografischen Dienstanbieters (CSP), der beim Exportieren der öffentlichen Schlüsselinformationen verwendet werden soll. Dieser Handle muss ein HCRYPTPROV-Handle sein, das mithilfe der Funktion CryptAcquireContext oder eines NCRYPT_KEY_HANDLE Handle erstellt wurde, das mithilfe der Funktion NCryptOpenKey erstellt wurde. Neue Anwendungen sollten immer im NCRYPT_KEY_HANDLE Handle eines CNG-CSP übergeben werden.

[in] dwKeySpec

Identifiziert den privaten Schlüssel, der vom Container des Anbieters verwendet werden soll. Es kann AT_KEYEXCHANGE oder AT_SIGNATURE sein. Dieser Parameter wird ignoriert, wenn ein NCRYPT_KEY_HANDLE im Parameter "hCryptProvOrNCryptKey " verwendet wird.

[in] dwCertEncodingType

Gibt den verwendeten Codierungstyp an. Es ist immer zulässig, sowohl die Zertifikat- als auch die Nachrichtencodierungstypen anzugeben, indem sie mit einem Bitzeiger-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 erhalten.

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

[in, out] pcbInfo

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

Hinweis Bei der Verarbeitung der in den 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 sein als die Größe des auf eingabe angegebenen Puffers. (Bei eingaben werden Puffergrößen in der Regel groß genug angegeben, um sicherzustellen, dass die größten möglichen Ausgabedaten in den Puffer passen.) Bei der Ausgabe wird die variable, auf die dieser Parameter verweist, aktualisiert, um die tatsächliche Größe der in den Puffer kopierten Daten darzustellen.
 

Rückgabewert

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

Wenn die Funktion fehlschlägt, wird null (FALSE) zurückgegeben. Rufen Sie getLastError für erweiterte Fehlerinformationen auf.

Hinweis Fehler aus den aufgerufenen Funktionen CryptGetUserKey und CryptExportKey werden möglicherweise an diese Funktion verteilt.
 
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 halten, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Byte in die Variable, die von pcbInfo darauf verweist.
ERROR_FILE_NOT_FOUND
Ungültiger Zertifikatcodierungstyp. Derzeit wird nur X509_ASN_ENCODING unterstützt.
 

Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise eine abstrakte Syntax Notation One (ASN.1)-Codierung/Decodierungsfehler zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Codierung/Decodierung von Rückgabewerten.

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

CryptImportPublicKeyInfo

Datenverwaltung Funktionen