BCryptExportKey-Funktion (bcrypt.h)
Die BCryptExportKey-Funktion exportiert einen Schlüssel in ein Speicherblob , das zur späteren Verwendung beibehalten werden kann.
Syntax
NTSTATUS BCryptExportKey(
[in] BCRYPT_KEY_HANDLE hKey,
[in] BCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parameter
[in] hKey
Das Handle des zu exportierenden Schlüssels.
[in] hExportKey
Das Handle des Schlüssels, mit dem der exportierte Schlüssel umgebrochen werden soll. Verwenden Sie diesen Parameter beim Exportieren von BLOBs vom Typ BCRYPT_AES_WRAP_KEY_BLOB. Legen Sie andernfalls null fest.
Windows Server 2008 und Windows Vista: Dieser Parameter wird nicht verwendet und sollte auf NULL festgelegt werden.
[in] pszBlobType
Eine mit NULL endende Unicode-Zeichenfolge, die einen Bezeichner enthält, der den Typ des zu exportierenden BLOB angibt. Dies kann einer der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Exportieren sie einen umschlossenen AES-Schlüssel. Der Parameter hExportKey muss auf einen gültigen BCRYPT_KEY_HANDLE Zeiger auf den Schlüsselverschlüsselungsschlüssel verweisen, und der durch den hKey-Parameter dargestellte Schlüssel muss ein Vielfaches von 8 Byte lang sein.
Windows Server 2008 und Windows Vista: Dieser BLOB-Typ wird nicht unterstützt. |
|
Exportieren sie ein Diffie-Hellman Paar mit öffentlichem/privatem Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_DH_KEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren sie einen Diffie-Hellman öffentlichen Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_DH_KEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren Sie ein DSA-Paar mit öffentlichem/privatem Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_DSA_KEY_BLOB - oder BCRYPT_DSA_KEY_BLOB_V2-Struktur unmittelbar gefolgt von den Schlüsseldaten. BCRYPT_DSA_KEY_BLOB wird für Schlüssellängen von 512 bis 1024 Bit verwendet. BCRYPT_DSA_KEY_BLOB_V2 wird für Schlüssellängen verwendet, die 1024 Bit überschreiten, aber kleiner oder gleich 3072 Bit sind.
Windows 8: Die Unterstützung für BCRYPT_DSA_KEY_BLOB_V2 beginnt. |
|
Exportieren sie einen öffentlichen DSA-Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_DSA_KEY_BLOB - oder BCRYPT_DSA_KEY_BLOB_V2-Struktur unmittelbar gefolgt von den Schlüsseldaten. BCRYPT_DSA_KEY_BLOB wird für Schlüssellängen von 512 bis 1024 Bit verwendet. BCRYPT_DSA_KEY_BLOB_V2 wird für Schlüssellängen verwendet, die 1024 Bit überschreiten, aber kleiner oder gleich 3072 Bit sind.
Windows 8: Die Unterstützung für BCRYPT_DSA_KEY_BLOB_V2 beginnt. |
|
Exportieren Sie einen privaten Schlüssel für die Kryptografie der Elliptic Curve (ECC). Der pbOutput-Puffer empfängt eine BCRYPT_ECCKEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren eines öffentlichen ECC-Schlüssels. Der pbOutput-Puffer empfängt eine BCRYPT_ECCKEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren eines symmetrischen Schlüssels in ein Datenblob. Der pbOutput-Puffer empfängt eine BCRYPT_KEY_DATA_BLOB_HEADER-Struktur unmittelbar gefolgt vom Schlüssel-BLOB. |
|
Exportieren Sie einen symmetrischen Schlüssel in einem Format, das für einen einzelnen Kryptografiedienstanbieter (CSP ) spezifisch ist. Undurchsichtige BLOBs sind nicht übertragbar und müssen mit demselben CSP importiert werden, der das BLOB generiert hat. Undurchsichtige BLOBs sind nur für die prozessübergreifende Übertragung von Schlüsseln vorgesehen und eignen sich nicht für das Beibehalten und Lesen von Versionen eines Anbieters. |
|
Exportieren Sie einen generischen öffentlichen Schlüssel eines beliebigen Typs. Der Schlüsseltyp in diesem BLOB wird durch den Magic-Member der BCRYPT_KEY_BLOB-Struktur bestimmt. |
|
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 den Magic-Member der BCRYPT_KEY_BLOB-Struktur bestimmt. |
|
Exportieren Sie ein vollständiges RSA-Schlüsselpaar mit öffentlichem/privatem Schlüssel. 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. |
|
Exportieren sie ein Rsa-Paar mit öffentlichem/privatem Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren sie einen öffentlichen RSA-Schlüssel. Der pbOutput-Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren Sie ein Älteres Diffie-Hellman Version 3 Private Key BLOB , das ein Diffie-Hellman Paar für öffentliche/private Schlüssel enthält, das mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie ein Legacy-Diffie-Hellman Version 3 Public Key BLOB , das einen Diffie-Hellman öffentlichen Schlüssel enthält, der mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie ein DSA-Paar mit öffentlichem/privatem Schlüssel in einem Format, das mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie einen öffentlichen DSA-Schlüssel in einem Formular, das mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie einen privaten DSA-Schlüssel der Version 2 in einer Form, die mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Eines öffentlichen/privaten RSA-Schlüsselpaars in einem Format, das mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie einen öffentlichen RSA-Schlüssel in einem Formular, das mithilfe von CryptoAPI importiert werden kann. |
[out] pbOutput
Die Adresse eines Puffers, der das 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 Bytes in der ULONG , auf die der pcbResult-Parameter verweist.
[in] cbOutput
Enthält die Größe des pbOutput-Puffers in Bytes.
[out] pcbResult
Ein Zeiger auf eine ULONG , 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 in der ULONG , auf die dieser Parameter verweist.
[in] dwFlags
Ein Satz von Flags, die das Verhalten dieser Funktion ändern. Für diese Funktion sind keine Flags definiert.
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 |
---|---|
|
Die Funktion war erfolgreich. |
|
Die vom cbOutput-Parameter angegebene Größe ist nicht groß genug, um den Verschlüsselungstext zu enthalten. |
|
Das Schlüsselhandle im hKey-Parameter ist ungültig. |
|
Mindestens ein Parameter ist ungültig. |
|
Der angegebene BLOB-Typ wird vom Anbieter nicht unterstützt. |
Hinweise
Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptExportKey entweder im Benutzermodus oder im Kernelmodus aufgerufen werden. Kernelmodusaufrufer können entweder PASSIVE_LEVELIRQL oder DISPATCH_LEVEL IRQL ausführen. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEL ist, muss das im hKey-Parameter bereitgestellte Handle von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wird, der mit dem flag BCRYPT_PROV_DISPATCH geöffnet wurde, und alle Zeiger, die an die BCryptExportKey-Funktion übergeben werden, müssen auf nicht ausgestellten (oder gesperrten) Arbeitsspeicher verweisen.
Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.lib, die Teil des Driver Development Kit (DDK) ist. Windows Server 2008 und Windows Vista: Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Ksecdd.lib.
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 | bcrypt.h |
Bibliothek | Bcrypt.lib |
DLL | Bcrypt.dll |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für