Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die NCryptExportKey-Funktion exportiert einen CNG-Schlüssel in ein Speicher-BLOB.
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
);
Die 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üssel-BLOB werden mithilfe dieses Schlüssels verschlüsselt. Dadurch wird sichergestellt, dass nur der Zielbenutzer das Schlüssel-BLOB verwenden kann.
[in] pszBlobType
Eine mit Null beendete Unicode-Zeichenfolge, 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 unmittelbar gefolgt von den Schlüsseldaten.
BCRYPT_DH_PUBLIC_BLOB
Exportieren eines Diffie-Hellman öffentlichen Schlüssels. Der PbOutput-Puffer empfängt eine BCRYPT_DH_KEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.
BCRYPT_DSA_PRIVATE_BLOB
Exportieren eines DSA-Schlüsselpaars für öffentliche/private Schlüssel. Der PbOutput-Puffer empfängt eine BCRYPT_DSA_KEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.
BCRYPT_DSA_PUBLIC_BLOB
Exportieren sie einen öffentlichen DSA-Schlüssel. Der PbOutput-Puffer empfängt eine BCRYPT_DSA_KEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten.
BCRYPT_ECCPRIVATE_BLOB
Exportieren Sie einen privaten SCHLÜSSEL (Elliptic Curve Cryptography, ECC). 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_MLKEM_PRIVATE_SEED_BLOB
Exportieren Eines ML-KEM privaten Seedschlüssels. Der PbOutput-Puffer empfängt eine BCRYPT_MLKEM_KEY_BLOB Struktur unmittelbar gefolgt von den Parametersatz- und Schlüsseldaten.
Hinweis: ML-KEM Schlüsselhandles, die einen privaten Schlüssel enthalten, der mit BCRYPT_MLKEM_PRIVATE_BLOB importiert wurde , verfügen über unzureichende Informationen zum Exportieren eines privaten Seedschlüssels.
Windows-Insider (Build 27843): Die Unterstützung für ML-KEM beginnt.
BCRYPT_MLKEM_PRIVATE_BLOB
Exportieren Sie einen privaten schlüssel (ML-KEM Entkapselung). Der PbOutput-Puffer empfängt eine BCRYPT_MLKEM_KEY_BLOB Struktur unmittelbar gefolgt von den Parametersatz- und Schlüsseldaten.
Windows-Insider (Build 27843): Die Unterstützung für ML-KEM beginnt.
BCRYPT_MLKEM_PUBLIC_BLOB
Exportieren sie einen ML-KEM öffentlichen Schlüssel (Kapselung). Der PbOutput-Puffer empfängt eine BCRYPT_MLKEM_KEY_BLOB Struktur unmittelbar gefolgt von den Parametersatz- und Schlüsseldaten.
Windows-Insider (Build 27843): Die Unterstützung für ML-KEM beginnt.
BCRYPT_PQDSA_PRIVATE_SEED_BLOB
Exportieren sie einen privaten PQDSA-Seedschlüssel. Der PbOutput-Puffer empfängt eine BCRYPT_PQDSA_KEY_BLOB Struktur unmittelbar gefolgt von den Parametersatz- und Schlüsseldaten.
Anmerkung: PQDSA-Schlüsselhandles, die einen privaten Schlüssel enthalten, der mithilfe von BCRYPT_PQDSA_PRIVATE_BLOB importiert wurde, verfügen über unzureichende Informationen zum Exportieren eines privaten Seedschlüssels.
Windows-Insider (Build 27843): Die Unterstützung für ML-DSA beginnt.
BCRYPT_PQDSA_PRIVATE_BLOB
Exportieren sie einen privaten PQDSA-Schlüssel. Der PbOutput-Puffer empfängt eine BCRYPT_PQDSA_KEY_BLOB Struktur unmittelbar gefolgt von den Parametersatz- und Schlüsseldaten.
Windows-Insider (Build 27843): Die Unterstützung für ML-DSA beginnt.
BCRYPT_PQDSA_PUBLIC_BLOB
Exportieren sie einen öffentlichen PQDSA-Schlüssel. Der PbOutput-Puffer empfängt eine BCRYPT_PQDSA_KEY_BLOB Struktur unmittelbar gefolgt von den Parametersatz- und Schlüsseldaten.
Windows-Insider (Build 27843): Die Unterstützung für ML-DSA beginnt.
BCRYPT_PUBLIC_KEY_BLOB
Exportieren Sie einen generischen öffentlichen Schlüssel eines beliebigen Typs. Der Schlüsseltyp in diesem BLOB wird durch das Magische 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 Magische 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 zusätzliche Schlüsselmaterial im Vergleich zum BCRYPT_RSAPRIVATE_BLOB Typ.
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 älteres 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 Sie ein älteres Diffie-Hellman Version 3 Private Key BLOB , 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 einem Formular, das mithilfe von CryptoAPI importiert werden kann.
LEGACY_DSA_PUBLIC_BLOB
Exportieren Sie einen öffentlichen DSA-Schlüssel in einem Formular, das mithilfe von CryptoAPI importiert werden kann.
LEGACY_RSAPRIVATE_BLOB
Exportieren Sie ein ÖFFENTLICHEs/privates RSA-Schlüsselpaar in einem Formular, das mithilfe von CryptoAPI importiert werden kann.
LEGACY_RSAPUBLIC_BLOB
Exportieren Sie einen öffentlichen RSA-Schlüssel in einem Formular, das mithilfe von CryptoAPI importiert werden kann.
NCRYPT_CIPHER_KEY_BLOB
Exportieren Sie einen Chiffreschlü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 Sie ein PKCS #7 Envelope BLOB. Die parameter, die vom pParameterList-Parameter identifiziert werden, können oder müssen die folgenden Parameter enthalten, wie durch die Erforderliche oder optionale Spalte angegeben.
| Parameter | Erforderlich oder optional |
|---|---|
| NCRYPTBUFFER_CERT_BLOB | Erforderlich |
| NCRYPTBUFFER_PKCS_ALG_OID | Erforderlich |
| NCRYPTBUFFER_PKCS_ALG_PARAM | Wahlfrei |
NCRYPT_PKCS8_PRIVATE_KEY_BLOB
Exportieren Sie ein PKCS #8 privates Schlüssel-BLOB. Die parameter, die vom pParameterList-Parameter identifiziert werden, können oder müssen die folgenden Parameter enthalten, wie durch die Erforderliche oder optionale Spalte angegeben.
| Parameter | Erforderlich oder optional |
|---|---|
| NCRYPTBUFFER_PKCS_ALG_OID | Wahlfrei |
| NCRYPTBUFFER_PKCS_ALG_PARAM | Wahlfrei |
| NCRYPTBUFFER_PKCS_SECRET | Wahlfrei |
NCRYPT_PROTECTED_KEY_BLOB
Exportieren eines geschützten Schlüssels in einer NCRYPT_KEY_BLOB_HEADER Struktur.
Windows 8 und Windows Server 2012: Die Unterstützung für diesen Wert beginnt.
NCRYPT_PQ_PRIVATE_KEY_BLOB
Exportieren Sie einen generischen privaten Schlüssel eines beliebigen Post-Quantum-Algorithmus. Der Schlüsseltyp in diesem BLOB wird durch das magische Element der NCRYPT_PQ_BLOB Struktur bestimmt.
[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 den Schlüssel-BLOB 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 Byte 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 in den PbOutput-Puffer kopierten Bytes empfängt. Wenn der PbOutput-ParameterNULL ist, platziert diese Funktion die erforderliche Größe in Bytes in das 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 spezifisch für jeden Schlüsselspeicheranbieter. Das folgende Flag gilt für alle Anbieter.
| Wert | Bedeutung |
|---|---|
| NCRYPT_SILENT_FLAG | Fordert an, dass der Schlüsselspeicheranbieter (Key Storage 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 Statuscode zurück, der den Erfolg oder Fehler der Funktion angibt.
Mögliche Rückgabecodes umfassen, aber nicht beschränkt auf Folgendes.
| 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 mit der NCryptFinalizeKey-Funktion abgeschlossen wurde. |
| NTE_BAD_TYPE | Der vom hKey-Parameter angegebene Schlüssel kann nicht in den BLOB-Typ exportiert werden, der vom parameter pszBlobType angegeben wurde. |
| NTE_INVALID_HANDLE | Der hKey - oder hExportKey-Parameter ist ungültig. |
| NTE_INVALID_PARAMETER | Mindestens ein Parameter ist ungültig. |
Bemerkungen
Ein Dienst darf diese Funktion nicht über die StartService-Funktion aufrufen. Wenn ein Dienst diese Funktion über die StartService-Funktion aufruft, kann ein Deadlock auftreten, und der Dienst reagiert möglicherweise nicht mehr.
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows Vista [Desktop-Apps | UWP-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
| Zielplattform | Fenster |
| Überschrift | ncrypt.h |
| Bibliothek | Ncrypt.lib |
| DLL | Ncrypt.dll |