Freigeben über


CryptExportPublicKeyInfoEx-Funktion (wincrypt.h)

Die Funktion CryptExportPublicKeyInfoEx exportiert die informationen zum öffentlichen Schlüssel , die dem entsprechenden privaten Schlüssel des Anbieters zugeordnet sind. Mit dieser Funktion kann die Anwendung den Algorithmus für öffentliche Schlüssel angeben und dabei den vom Kryptografiedienstanbieter (CSP ) bereitgestellten Standard außer Kraft setzen.

Syntax

BOOL CryptExportPublicKeyInfoEx(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [in]      LPSTR                           pszPublicKeyObjId,
  [in]      DWORD                           dwFlags,
  [in]      void                            *pvAuxInfo,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Parameter

[in] hCryptProvOrNCryptKey

Ein Handle des CSP, der beim Exportieren der Öffentlichen Schlüsselinformationen verwendet werden soll. Bei diesem Handle muss es sich um ein HCRYPTPROV-Handle sein, das mithilfe der CryptAcquireContext-Funktion oder eines NCRYPT_KEY_HANDLE-Handle erstellt wurde, das mithilfe der NCryptOpenKey-Funktion erstellt wurde. Neue Anwendungen sollten immer im NCRYPT_KEY_HANDLE Handle eines CNG-CSP übergeben werden.

[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

[in] pszPublicKeyObjId

Gibt den Algorithmus für öffentliche Schlüssel an.

Hinweis:pszPublicKeyObjId und dwCertEncodingType werden zusammen verwendet, um die installierbaren CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC zu bestimmen, die aufgerufen werden sollen. Wenn für den Parameter pszPublicKeyObjId keine installierbare Funktion gefunden wurde, wird versucht, den Schlüssel als öffentlichen RSA-Schlüssel (szOID_RSA_RSA) zu exportieren.
 

[in] dwFlags

Ein DWORD-Flagwert , der angibt, wie die Informationen zum öffentlichen Schlüssel exportiert werden. Der Flagwert wird direkt an die CryptFindOIDInfo-Funktion übergeben, wenn der Objektbezeichner des öffentlichen Schlüssels der entsprechenden Unicode-Zeichenfolge des öffentlichen CNG-Algorithmus zugeordnet wird. Die folgenden Flagwerte können festgelegt werden.

Wert Bedeutung
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Überspringt öffentliche Schlüssel in der CRYPT_PUBKEY_ALG_OID_GROUP_ID Gruppe, die explizit mit dem CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG Flag gekennzeichnet ist.
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Überspringt öffentliche Schlüssel in der CRYPT_PUBKEY_ALG_OID_GROUP_ID Gruppe, die explizit mit dem CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG-Flag gekennzeichnet ist.

[in] pvAuxInfo

Dieser Parameter ist für die zukünftige Verwendung reserviert und muss auf NULL festgelegt werden.

[out] pInfo

Ein Zeiger auf eine CERT_PUBLIC_KEY_INFO Struktur zum Empfangen der zu exportierenden Informationen zum öffentlichen Schlüssel.

Dieser Parameter kann NULL sein, um die Größe dieser Informationen für Speicherzuordnungszwecke festzulegen. Weitere Informationen finden Sie unter Abrufen von Daten 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 im Puffer gespeicherten Bytes.

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 sein als die Größe des Puffers, der bei der Eingabe angegeben wird. (Bei der Eingabe werden Puffergrößen normalerweise 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, 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 die folgenden Fehlercodes auf.
Rückgabecode Beschreibung
ERROR_FILE_NOT_FOUND
Eine Exportfunktion, die installiert oder registriert werden kann, konnte für die angegebenen Parameter dwCertEncodingType und pszPublicKeyObjId nicht gefunden werden.
ERROR_MORE_DATA
Wenn der vom pInfo-Parameter angegebene Puffer nicht groß genug ist, um die zurückgegebenen Daten aufzunehmen, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Bytes in der Variablen, auf die vom pcbInfo-Parameter verwiesen wird.
 

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.

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

CryptImportPublicKeyInfoEx

Datenverwaltung-Funktionen