Freigeben über


NCryptExportKey-Funktion (ncrypt.h)

Die NCryptExportKey-Funktion exportiert einen CNG-Schlüssel in ein Speicherblob.

Syntax

SECURITY_STATUS NCryptExportKey(
  [in]            NCRYPT_KEY_HANDLE hKey,
  [in, optional]  NCRYPT_KEY_HANDLE hExportKey,
  [in]            LPCWSTR           pszBlobType,
  [in, optional]  NCryptBufferDesc  *pParameterList,
  [out, optional] PBYTE             pbOutput,
  [in]            DWORD             cbOutput,
  [out]           DWORD             *pcbResult,
  [in]            DWORD             dwFlags
);

Parameter

[in] hKey

Ein Handle des zu exportierenden Schlüssels.

[in, optional] hExportKey

Ein Handle für einen kryptografischen Schlüssel des Zielbenutzers. Die Schlüsseldaten im exportierten Schlüsselblob werden mit diesem Schlüssel verschlüsselt. Dadurch wird sichergestellt, dass nur der Zielbenutzer das Schlüsselblob verwenden kann.

[in] pszBlobType

Eine Unicode-Zeichenfolge mit Null-Beendigung, die einen Bezeichner enthält, der den Typ des zu exportierenden BLOB angibt. Dies kann einer der folgenden Werte sein.

BCRYPT_DH_PRIVATE_BLOB

Exportieren eines Diffie-Hellman öffentlichen/privaten Schlüsselpaars. Der pbOutput-Puffer empfängt eine BCRYPT_DH_KEY_BLOB Struktur, gefolgt von den Schlüsseldaten.

BCRYPT_DH_PUBLIC_BLOB

Exportieren sie einen Diffie-Hellman öffentlichen Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_DH_KEY_BLOB Struktur, gefolgt von den Schlüsseldaten.

BCRYPT_DSA_PRIVATE_BLOB

Exportieren eines öffentlichen/privaten DSA-Schlüsselpaars. Der pbOutput-Puffer empfängt eine BCRYPT_DSA_KEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.

BCRYPT_DSA_PUBLIC_BLOB

Exportieren eines öffentlichen DSA-Schlüssels. Der pbOutput-Puffer empfängt eine BCRYPT_DSA_KEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.

BCRYPT_ECCPRIVATE_BLOB

Exportieren Sie einen privaten ECC-Schlüssel (Elliptic Curve Cryptography). Der pbOutput-Puffer empfängt eine BCRYPT_ECCKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.

BCRYPT_ECCPUBLIC_BLOB

Exportieren sie einen öffentlichen ECC-Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_ECCKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.

BCRYPT_PUBLIC_KEY_BLOB

Exportieren Sie einen generischen öffentlichen Schlüssel eines beliebigen Typs. Der Schlüsseltyp in diesem BLOB wird durch das Magic-Element der BCRYPT_KEY_BLOB-Struktur bestimmt.

BCRYPT_PRIVATE_KEY_BLOB

Exportieren Sie einen generischen privaten Schlüssel eines beliebigen Typs. Der private Schlüssel enthält nicht unbedingt den öffentlichen Schlüssel. Der Schlüsseltyp in diesem BLOB wird durch das Magic-Element der BCRYPT_KEY_BLOB-Struktur bestimmt.

BCRYPT_RSAFULLPRIVATE_BLOB

Exportieren Eines vollständigen öffentlichen/privaten RSA-Schlüsselpaars. Der pbOutput-Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. Dieses BLOB enthält im Vergleich zum BCRYPT_RSAPRIVATE_BLOB-Typ zusätzliches Schlüsselmaterial.

BCRYPT_RSAPRIVATE_BLOB

Exportieren eines öffentlichen/privaten RSA-Schlüsselpaars. Der pbOutput-Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.

BCRYPT_RSAPUBLIC_BLOB

Exportieren eines öffentlichen RSA-Schlüssels. Der pbOutput-Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.

LEGACY_DH_PRIVATE_BLOB

Exportieren Sie ein legacy Diffie-Hellman Version 3 Private Key BLOB , das ein Diffie-Hellman öffentliches/privates Schlüsselpaar enthält, das mithilfe von CryptoAPI importiert werden kann.

LEGACY_DH_PUBLIC_BLOB

Exportieren Eines Legacy-Blobs für Diffie-Hellman Version 3 mit privatem Schlüssel , das einen Diffie-Hellman öffentlichen Schlüssel enthält, der mithilfe von CryptoAPI importiert werden kann.

LEGACY_DSA_PRIVATE_BLOB

Exportieren Sie ein öffentliches/privates DSA-Schlüsselpaar in einer Form, die mit CryptoAPI importiert werden kann.

LEGACY_DSA_PUBLIC_BLOB

Exportieren Sie einen öffentlichen DSA-Schlüssel in einem Formular, das mit CryptoAPI importiert werden kann.

LEGACY_RSAPRIVATE_BLOB

Exportieren Sie ein öffentliches/privates RSA-Schlüsselpaar in einer Form, die mithilfe von CryptoAPI importiert werden kann.

LEGACY_RSAPUBLIC_BLOB

Exportieren Sie einen öffentlichen RSA-Schlüssel in einer Form, die mithilfe von CryptoAPI importiert werden kann.

NCRYPT_CIPHER_KEY_BLOB

Exportieren Sie einen Verschlüsselungsschlüssel in einer NCRYPT_KEY_BLOB_HEADER-Struktur .

Windows 8 und Windows Server 2012: Die Unterstützung für diesen Wert beginnt.

NCRYPT_OPAQUETRANSPORT_BLOB

Exportieren Sie einen Schlüssel in einem Format, das für einen einzelnen CSP spezifisch ist und für den Transport geeignet ist. Undurchsichtige BLOBs können nicht übertragen werden und müssen mit demselben CSP importiert werden, der das BLOB generiert hat.

NCRYPT_PKCS7_ENVELOPE_BLOB

Exportieren eines PKCS #7-Umschlagblobs. Die durch den pParameterList-Parameter identifizierten Parameter können oder müssen die folgenden Parameter enthalten, wie in der Spalte Erforderlich oder optional angegeben.

Parameter Erforderlich oder optional
NCRYPTBUFFER_CERT_BLOB Erforderlich
NCRYPTBUFFER_PKCS_ALG_OID Erforderlich
NCRYPTBUFFER_PKCS_ALG_PARAM Optional

NCRYPT_PKCS8_PRIVATE_KEY_BLOB

Exportieren sie ein PKCS #8 Private Key BLOB. Die durch den pParameterList-Parameter identifizierten Parameter können oder müssen die folgenden Parameter enthalten, wie in der Spalte Erforderlich oder optional angegeben.

Parameter Erforderlich oder optional
NCRYPTBUFFER_PKCS_ALG_OID Optional
NCRYPTBUFFER_PKCS_ALG_PARAM Optional
NCRYPTBUFFER_PKCS_SECRET Optional

NCRYPT_PROTECTED_KEY_BLOB

Exportieren Sie einen geschützten Schlüssel in einer NCRYPT_KEY_BLOB_HEADER-Struktur .

Windows 8 und Windows Server 2012: Die Unterstützung für diesen Wert beginnt.

[in, optional] pParameterList

Die Adresse einer NCryptBufferDesc-Struktur , die Parameterinformationen für den Schlüssel empfängt. Dieser Parameter kann NULL sein, wenn diese Informationen nicht benötigt werden.

[out, optional] pbOutput

Die Adresse eines Puffers, der das Schlüsselblob empfängt. Der cbOutput-Parameter enthält die Größe dieses Puffers. Wenn dieser Parameter NULL ist, platziert diese Funktion die erforderliche Größe in Bytes im DWORD , auf das der pcbResult-Parameter verweist.

[in] cbOutput

Die Größe des pbOutput-Puffers in Bytes.

[out] pcbResult

Die Adresse einer DWORD-Variablen , die die Anzahl der Bytes empfängt, die in den PbOutput-Puffer kopiert wurden. Wenn der pbOutput-ParameterNULL ist, platziert diese Funktion die erforderliche Größe in Bytes im DWORD , auf das dieser Parameter verweist.

[in] dwFlags

Flags, die das Funktionsverhalten ändern. Dies kann null oder eine Kombination aus einem oder mehreren der folgenden Werte sein. Der Satz gültiger Flags ist für jeden Schlüsselspeicheranbieter spezifisch. Das folgende Flag gilt für alle Anbieter.

Wert Bedeutung
NCRYPT_SILENT_FLAG Fordert an, dass der Schlüsseldienstanbieter (Key Service Provider, KSP) keine Benutzeroberfläche anzeigt. Wenn der Anbieter die Benutzeroberfläche für den Betrieb anzeigen muss, schlägt der Aufruf fehl, und der KSP sollte den NTE_SILENT_CONTEXT Fehlercode als letzten Fehler festlegen.

Rückgabewert

Gibt einen status Code zurück, der den Erfolg oder Fehler der Funktion angibt.

Mögliche Rückgabecodes sind u. a. die folgenden:

Rückgabecode Beschreibung
ERROR_SUCCESS Die Funktion war erfolgreich.
NTE_BAD_FLAGS Der dwFlags-Parameter enthält einen ungültigen Wert.
NTE_BAD_KEY_STATE Der durch den hKey-Parameter angegebene Schlüssel ist ungültig. Die häufigste Ursache für diesen Fehler ist, dass der Schlüssel nicht mithilfe der NCryptFinalizeKey-Funktion abgeschlossen wurde.
NTE_BAD_TYPE Der durch den hKey-Parameter angegebene Schlüssel kann nicht in den vom pszBlobType-Parameter angegebenen BLOB-Typ exportiert werden.
NTE_INVALID_HANDLE Der hKey - oder hExportKey-Parameter ist ungültig.
NTE_INVALID_PARAMETER Mindestens ein Parameter ist ungültig.

Hinweise

Ein Dienst darf diese Funktion nicht über seine StartService-Funktion aufrufen. Wenn ein Dienst diese Funktion über seine StartService-Funktion aufruft, kann ein Deadlock auftreten, und der Dienst reagiert möglicherweise nicht mehr.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile ncrypt.h
Bibliothek Ncrypt.lib
DLL Ncrypt.dll

Weitere Informationen