BCryptExportKey-Funktion (bcrypt.h)
Die BCryptExportKey--Funktion exportiert einen Schlüssel in einen Speicher BLOB-, der 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 umbrochen werden soll. Verwenden Sie diesen Parameter beim Exportieren von BLOBs vom Typ BCRYPT_AES_WRAP_KEY_BLOB; andernfalls legen Sie sie auf NULL-fest.
Windows Server 2008 und Windows Vista: Dieser Parameter wird nicht verwendet und sollte auf NULL-festgelegt werden.
[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:
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 Eines Diffie-Hellman öffentlichen/privaten Schlüsselpaars. Der pbOutput- Puffer empfängt unmittelbar gefolgt von den Schlüsseldaten eine BCRYPT_DH_KEY_BLOB Struktur. |
|
Exportieren eines Diffie-Hellman öffentlichen Schlüssels. Der pbOutput- Puffer empfängt unmittelbar gefolgt von den Schlüsseldaten eine BCRYPT_DH_KEY_BLOB Struktur. |
|
Exportieren eines DSA-Schlüsselpaars für öffentliche/private Schlüssel. Der pbOutput- Puffer empfängt eine BCRYPT_DSA_KEY_BLOB oder BCRYPT_DSA_KEY_BLOB_V2 Struktur, die unmittelbar auf die Schlüsseldaten folgt.
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: Support 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, die unmittelbar auf die Schlüsseldaten folgt.
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: Support für BCRYPT_DSA_KEY_BLOB_V2 beginnt. |
|
Exportieren Sie eine elliptische Kurvenkryptografie (ECC) privaten Schlüssel. Der pbOutput- Puffer empfängt eine BCRYPT_ECCKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren sie einen öffentlichen ECC-Schlüssel. Der pbOutput- Puffer empfängt eine BCRYPT_ECCKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren eines symmetrischen Schlüssels in ein Daten-BLOB. 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 spezifisch für einen einzelnen kryptografischen Dienstanbieter (CSP) ist. Undurchsichtige BLOBs können nicht übertragen werden und müssen mit demselben CSP importiert werden, der das BLOB generiert hat. Undurchsichtige BLOBs sind nur für die Verarbeitung von Schlüsselübertragungen 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 das 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 das Magic Member der BCRYPT_KEY_BLOB-Struktur bestimmt. |
|
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. |
|
Exportieren Eines ÖFFENTLICHEN/privaten RSA-Schlüsselpaars. Der pbOutput- Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren eines öffentlichen RSA-Schlüssels. Der pbOutput- Puffer empfängt eine BCRYPT_RSAKEY_BLOB Struktur unmittelbar gefolgt von den Schlüsseldaten. |
|
Exportieren Sie eine ältere Diffie-Hellman Version 3 Private Key BLOB-, die ein Diffie-Hellman öffentliches/privates Schlüsselpaar enthält, das mithilfe CryptoAPIimportiert werden kann. |
|
Exportieren Sie eine ältere Diffie-Hellman Version 3 Public Key BLOB-, die einen Diffie-Hellman öffentlichen Schlüssel enthält, der mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie ein öffentliches/privates DSA-Schlüsselpaar in einem Formular, 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 Version 2-Schlüssel in einem Formular, das mithilfe von CryptoAPI importiert werden kann. |
|
Exportieren Sie ein ÖFFENTLICHEs/privates RSA-Schlüsselpaar in einem Formular, 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 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 in den 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-Parameter NULL-ist, platziert diese Funktion die erforderliche Größe in Byte in der ULONG-, auf die durch diesen Parameter verwiesen wird.
[in] dwFlags
Eine Reihe von Flags, die das Verhalten dieser Funktion ändern. Für diese Funktion sind keine Flags definiert.
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 |
---|---|
|
Die Funktion war erfolgreich. |
|
Die durch den cbOutput Parameter angegebene Größe ist nicht groß genug, um den Chiffretext 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. |
Bemerkungen
Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptExportKey entweder über den Benutzermodus oder den Kernelmodus aufgerufen werden. Kernelmodusaufrufer können entweder PASSIVE_LEVELIRQL- oder DISPATCH_LEVEL IRQL ausgeführt werden. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEList, muss das im hKey Parameter bereitgestellte Handle von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wurde, der mit dem BCRYPT_PROV_DISPATCH-Flag geöffnet wurde, und alle Zeiger, die an die BCryptExportKey-Funktion übergeben wurden, müssen auf nicht seitenseitigen (oder gesperrten) Speicher verweisen.
Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.lib, das Teil des Driver Development Kit (DDK) ist. Windows Server 2008 und Windows Vista: Verwenden Sie Ksecdd.lib, um diese Funktion im Kernelmodus aufzurufen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | bcrypt.h |
Library | Bcrypt.lib |
DLL- | Bcrypt.dll |