BCryptImportKey-Funktion (bcrypt.h)

Die BCryptImportKey-Funktion importiert einen symmetrischen Schlüssel aus einem Schlüsselblob. Die BCryptImportKeyPair-Funktion wird verwendet, um ein öffentliches/privates Schlüsselpaar zu 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, um den Schlüssel zu importieren. Dieses Handle wird durch Aufrufen der Funktion BCryptOpenAlgorithmProvider abgerufen.

[in, optional] hImportKey

Das Handle des Schlüsselverschlüsselungsschlüssels, der zum Entpacken des Schlüsselblobs im pbInput-Parameter erforderlich ist.

Hinweis Das Handle muss von demselben Anbieter bereitgestellt werden, der den zu importierenden Schlüssel angegeben hat.

 

Windows Server 2008 und Windows Vista: Dieser Parameter wird nicht verwendet und sollte auf NULL festgelegt werden.

[in] pszBlobType

Eine Unicode-Zeichenfolge mit Null-Beendigung, die einen Bezeichner enthält, der den Blobtyp angibt, der im pbInput-Puffer enthalten ist. Dies kann einer der folgenden Werte sein.

Wert Bedeutung
BCRYPT_AES_WRAP_KEY_BLOB
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.

BCRYPT_KEY_DATA_BLOB
Importieren Sie einen symmetrischen Schlüssel aus einem Datenblob. Der pbInput-Parameter ist ein Zeiger auf eine BCRYPT_KEY_DATA_BLOB_HEADER Struktur unmittelbar gefolgt vom Schlüsselblob.
BCRYPT_OPAQUE_KEY_BLOB
Importieren Sie ein symmetrisches Schlüsselblob 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 Interprozessübertragung von Schlüsseln vorgesehen und eignen sich nicht zum Beibehalten und Einlesen von 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. Dieses Handle muss freigegeben 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 angegeben.

Dieser Arbeitsspeicher kann erst freigegeben werden, nachdem das phKey-Schlüsselhandle zerstört wurde.

[in] cbKeyObject

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

[in] pbInput

Die Adresse eines Puffers, der das zu importierende Schlüsselblob enthält. Der cbInput-Parameter enthält die Größe dieses Puffers. Der pszBlobType-Parameter gibt den Typ des Schlüsselblobs an, den dieser Puffer enthält.

[in] cbInput

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

[in] dwFlags

Eine Reihe von Flags, die das Verhalten dieser Funktion ändern. Derzeit sind keine Flags definiert, daher sollte dieser Parameter 0 sein.

Rückgabewert

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

Mögliche Rückgabecodes umfassen folgendes, sind aber nicht darauf beschränkt.

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Funktion war erfolgreich.
STATUS_BUFFER_TOO_SMALL
Die Größe des durch den cbKeyObject-Parameter angegebenen Schlüsselobjekts ist nicht groß genug, um das Schlüsselobjekt aufzunehmen.
STATUS_INVALID_HANDLE
Das Algorithmushandle im Parameter hAlgorithm ist ungültig.
STATUS_INVALID_PARAMETER
Mindestens ein Parameter ist ungültig.
STATUS_NOT_SUPPORTED
Der vom hAlgorithm-Parameter angegebene Algorithmusanbieter unterstützt nicht den blob-Typ, der durch den pszBlobType-Parameter angegeben wird.

Hinweise

Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptImportKey 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 hAlgorithm-Parameter bereitgestellte Handle mithilfe des flags BCRYPT_PROV_DISPATCH geöffnet worden sein, und alle zeiger, die an die BCryptImportKey-Funktion übergeben werden, müssen auf nicht ausgestellten (oder gesperrten) Speicher 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

BCryptDestroyKey

BCryptExportKey

BCryptImportKeyPair