BCryptImportKey-Funktion (bcrypt.h)
Die BCryptImportKey--Funktion importiert einen symmetrischen Schlüssel aus einem Schlüssel BLOB-. Die BCryptImportKeyPair Funktion wird verwendet, um ein öffentliches/privates Schlüsselpaarzu importieren.
Syntax
NTSTATUS BCryptImportKey(
[in] BCRYPT_ALG_HANDLE hAlgorithm,
[in, optional] BCRYPT_KEY_HANDLE hImportKey,
[in] LPCWSTR pszBlobType,
[out] BCRYPT_KEY_HANDLE *phKey,
[out, optional] PUCHAR pbKeyObject,
[in] ULONG cbKeyObject,
[in] PUCHAR pbInput,
[in] ULONG cbInput,
[in] ULONG dwFlags
);
Parameter
[in] hAlgorithm
Das Handle des Algorithmusanbieters zum Importieren des Schlüssels. Dieses Handle wird durch Aufrufen der BCryptOpenAlgorithmProvider-Funktion abgerufen.
[in, optional] hImportKey
Das Handle des Schlüsselverschlüsselungsschlüssels, der zum Entpacken des Schlüssel-BLOB im pbInput Parameter erforderlich ist.
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 BLOB angibt, der im pbInput- Puffer enthalten ist. Dies kann einer der folgenden Werte sein:
Wert | Bedeutung |
---|---|
|
Importieren Sie einen symmetrischen Schlüssel aus einem BLOB mit AES-Schlüsselumbruch. Der parameter hImportKey muss auf einen gültigen BCRYPT_KEY_HANDLE Zeiger auf den Schlüsselverschlüsselungsschlüssel verweisen.
Windows Server 2008 und Windows Vista: Dieser BLOB-Typ wird nicht unterstützt. |
|
Importieren eines symmetrischen Schlüssels aus einem Daten-BLOB. Der pbInput--Parameter ist ein Zeiger auf eine BCRYPT_KEY_DATA_BLOB_HEADER Struktur unmittelbar gefolgt vom Schlüssel-BLOB. |
|
Importieren Sie ein symmetrisches SCHLÜSSEL-BLOB in einem Format, das für einen einzelnen CSP spezifisch 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 Speichern und Lesen in allen Versionen eines Anbieters. |
[out] phKey
Ein Zeiger auf eine BCRYPT_KEY_HANDLE, die das Handle des importierten Schlüssels empfängt. Dieses Handle wird in nachfolgenden Funktionen verwendet, die einen Schlüssel erfordern, z. B. BCryptEncrypt. Dieser Handle muss losgelassen werden, wenn es nicht mehr benötigt wird, indem es an die BCryptDestroyKey--Funktion übergeben wird.
[out, optional] pbKeyObject
Ein Zeiger auf einen Puffer, der das importierte Schlüsselobjekt empfängt. Der cbKeyObject Parameter enthält die Größe dieses Puffers. Die erforderliche Größe dieses Puffers kann durch Aufrufen der BCryptGetProperty--Funktion abgerufen werden, um die BCRYPT_OBJECT_LENGTH-Eigenschaft abzurufen. Dadurch wird die Größe des Schlüsselobjekts für den angegebenen Algorithmus bereitgestellt.
Dieser Speicher kann nur freigegeben werden, nachdem der phKey- Tastenziehpunkt zerstört wurde.
[in] cbKeyObject
Die Größe des pbKeyObject- Puffers in Byte.
[in] pbInput
Die Adresse eines Puffers, der den zu importierenden Schlüssel-BLOB enthält. Der cbInput Parameter enthält die Größe dieses Puffers. Der pszBlobType Parameter gibt den Typ des Schlüssel-BLOB an, den dieser Puffer enthält.
[in] cbInput
Die Größe des pbInput- Puffers in Byte.
[in] dwFlags
Eine Reihe von Flags, die das Verhalten dieser Funktion ändern. Derzeit sind keine Flags definiert, daher sollte dieser Parameter null sein.
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 Größe des schlüsselobjekts, das vom cbKeyObject Parameter angegeben wird, ist nicht groß genug, um das Schlüsselobjekt aufzunehmen. |
|
Der Algorithmushandle im hAlgorithm Parameter ist ungültig. |
|
Mindestens ein Parameter ist ungültig. |
|
Der vom hAlgorithm Parameter angegebene Algorithmusanbieter unterstützt nicht den BLOB-Typ, der durch den pszBlobType Parameter angegeben wurde. |
Bemerkungen
Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptImportKey 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 hAlgorithm Parameter bereitgestellte Handle mithilfe des BCRYPT_PROV_DISPATCH-Flags geöffnet worden sein, und alle Zeiger, die an die BCryptImportKey-Funktion übergeben werden, müssen auf nicht seitenfreien (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 |