CryptExportPKCS8-Funktion (wincrypt.h)

[Die Funktion CryptExportPKCS8 steht ab Windows Server 2008 und Windows Vista nicht mehr zur Verfügung. Verwenden Sie stattdessen die Funktion PFXExportCertStoreEx .]

Die Funktion CryptExportPKCS8 exportiert den privaten Schlüssel im PKCS #8-Format. Die Funktion wird durch CryptExportPKCS8Ex ersetzt, das auch in nachfolgenden Versionen geändert oder nicht verfügbar ist.

Syntax

BOOL CryptExportPKCS8(
  [in]            HCRYPTPROV hCryptProv,
  [in]            DWORD      dwKeySpec,
  [in]            LPSTR      pszPrivateKeyObjId,
  [in]            DWORD      dwFlags,
  [in, optional]  void       *pvAuxInfo,
  [out, optional] BYTE       *pbPrivateKeyBlob,
  [in, out]       DWORD      *pcbPrivateKeyBlob
);

Parameter

[in] hCryptProv

Eine HCRYPTPROV-Variable , die den Kryptografiedienstanbieter (Cryptographic Service Provider , CSP) enthält. Dies ist ein Handle für den CSP, der durch aufrufen von CryptAcquireContext abgerufen wird.

[in] dwKeySpec

Eine DWORD-Variable , die die Schlüsselspezifikation enthält. Die folgenden dwKeySpec-Werte werden für den Standardanbieter definiert.

Wert Bedeutung
AT_KEYEXCHANGE
Schlüssel, die zum Verschlüsseln/Entschlüsseln von Sitzungsschlüsseln verwendet werden.
AT_SIGNATURE
Schlüssel, die zum Erstellen und Überprüfen digitaler Signaturen verwendet werden.

[in] pszPrivateKeyObjId

Eine LPSTR-Variable , die den Private Key Object Identifier (OID) enthält.

[in] dwFlags

Dieser Parameter sollte null sein, wenn pbPrivateKeyBlobNULL ist und andernfalls 0x8000.

[in, optional] pvAuxInfo

Dieser Parameter muss auf NULL festgelegt werden.

[out, optional] pbPrivateKeyBlob

Ein Zeiger auf ein Array von BYTE-Strukturen , um den zu exportierenden privaten Schlüssel zu empfangen.

Der private Schlüssel enthält die Informationen in einem PKCS #8 PrivateKeyInfo Abstract Syntax Notation One (ASN.1) Typ im PKCS #8-Standard.

Zur Speicherzuordnung können Sie die Größe des zu exportierenden privaten Schlüssels abrufen, indem Sie diesen Parameter auf NULL festlegen. Weitere Informationen finden Sie unter Abrufen von Daten unbekannter Länge.

[in, out] pcbPrivateKeyBlob

Ein Zeiger auf ein DWORD , das bei der Eingabe die Größe der Speicherzuordnung in Bytes enthalten kann, die erforderlich ist, um den pbPrivateKeyBlob zu enthalten. Wenn pbPrivateKeyBlobNULL ist, gibt dieser Parameter die Größe der Speicherbelegung zurück, die für einen zweiten Aufruf der Funktion erforderlich ist. Weitere Informationen finden Sie unter Abrufen von Daten unbekannter Länge.

Rückgabewert

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

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

Die folgenden Fehlercodes sind spezifisch für diese Funktion.

Rückgabecode Beschreibung
ERROR_UNSUPPORTED_TYPE
Eine Exportfunktion, die installiert oder registriert werden kann, konnte nicht gefunden werden.
ERROR_MORE_DATA
Wenn der vom pbPrivateKeyBlob-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 Bytes in der Variablen, auf die vom parameter pcbPrivateKeyBlob verwiesen wird.
 

Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise einen ASN.1-Codierungs-/Decodierungsfehler zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1 Encoding/Decoding Return Values.

Hinweise

Diese Funktion wird nur für asymmetrische Schlüssel unterstützt.

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

CryptAcquireContext

CryptExportPKCS8Ex

Abrufen von Daten unbekannter Länge