BCryptImportKeyPair-Funktion (bcrypt.h)

Die BCryptImportKeyPair-Funktion importiert ein öffentliches/privates Schlüsselpaar aus einem Schlüsselblob. Die BCryptImportKey-Funktion wird verwendet, um ein symmetrisches Schlüsselpaar zu importieren.

Syntax

NTSTATUS BCryptImportKeyPair(
  [in]      BCRYPT_ALG_HANDLE hAlgorithm,
  [in, out] BCRYPT_KEY_HANDLE hImportKey,
  [in]      LPCWSTR           pszBlobType,
  [out]     BCRYPT_KEY_HANDLE *phKey,
  [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, out] hImportKey

Dieser Parameter wird derzeit nicht verwendet und sollte NULL sein.

[in] pszBlobType

Eine mit Null endende Unicode-Zeichenfolge, 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_DH_PRIVATE_BLOB
Das BLOB ist ein Diffie-Hellman paarweises BLOB mit öffentlichem und privatem Schlüssel. Der pbInput-Puffer muss eine BCRYPT_DH_KEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten.
BCRYPT_DH_PUBLIC_BLOB
Das BLOB ist ein Diffie-Hellman blob mit öffentlichem Schlüssel. Der pbInput-Puffer muss eine BCRYPT_DH_KEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten.
BCRYPT_DSA_PRIVATE_BLOB
Das BLOB ist ein DSA-Blob mit öffentlichem/privatem Schlüsselpaar. Der pbInput-Puffer muss eine BCRYPT_DSA_KEY_BLOB - oder BCRYPT_DSA_KEY_BLOB_V2-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten. 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.

BCRYPT_DSA_PUBLIC_BLOB
Das BLOB ist ein DSA-BLOB mit öffentlichem Schlüssel. Der pbInput-Puffer muss eine BCRYPT_DSA_KEY_BLOB - oder BCRYPT_DSA_KEY_BLOB_V2-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten. 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.

BCRYPT_ECCPRIVATE_BLOB
Das BLOB ist ein privater Schlüssel für die Elliptic Curve Cryptography (ECC). Der pbInput-Puffer muss eine BCRYPT_ECCKEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten.
BCRYPT_ECCPUBLIC_BLOB
Das BLOB ist ein öffentlicher ECC-Schlüssel. Der pbInput-Puffer muss eine BCRYPT_ECCKEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten.
BCRYPT_PUBLIC_KEY_BLOB
Das BLOB ist ein allgemeiner öffentlicher Schlüssel eines beliebigen Typs. Der Schlüsseltyp in diesem BLOB wird durch den Magic-Member der BCRYPT_KEY_BLOB-Struktur bestimmt.
BCRYPT_PRIVATE_KEY_BLOB
Das BLOB ist ein generischer privater 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.
BCRYPT_RSAPRIVATE_BLOB
Das BLOB ist ein RSA-Blob mit öffentlichem/privatem Schlüsselpaar. Der pbInput-Puffer muss eine BCRYPT_RSAKEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten.
BCRYPT_RSAPUBLIC_BLOB
Das BLOB ist ein RSA-BLOB mit öffentlichem Schlüssel. Der pbInput-Puffer muss eine BCRYPT_RSAKEY_BLOB-Struktur unmittelbar gefolgt von den Schlüsseldaten enthalten.
LEGACY_DH_PUBLIC_BLOB
Das BLOB ist ein Diffie-Hellman blob mit öffentlichem Schlüssel, das mithilfe von CryptoAPI exportiert wurde. Der Microsoft-Primitive-Anbieter unterstützt den Import dieses BLOB-Typs nicht.
LEGACY_DH_PRIVATE_BLOB
Das BLOB ist ein Älteres Diffie-Hellman Version 3 Private Key BLOB , das ein Diffie-Hellman öffentliches/privates Schlüsselpaar enthält, das mithilfe von CryptoAPI exportiert wurde.
LEGACY_DSA_PRIVATE_BLOB
Das BLOB ist ein DSA-Blob mit öffentlichem/privatem Schlüsselpaar, das mithilfe von CryptoAPI exportiert wurde.
LEGACY_DSA_PUBLIC_BLOB
Das BLOB ist ein DSA-BLOB mit öffentlichem Schlüssel, das mithilfe von CryptoAPI exportiert wurde. Der Microsoft-Primitive-Anbieter unterstützt den Import dieses BLOB-Typs nicht.
LEGACY_DSA_V2_PRIVATE_BLOB
Das BLOB ist ein privater DSA-Schlüssel der Version 2 in einer Form, die mithilfe von CryptoAPI importiert werden kann.
LEGACY_RSAPRIVATE_BLOB
Das BLOB ist ein RSA-Blob mit öffentlichem/privatem Schlüsselpaar, das mithilfe von CryptoAPI exportiert wurde.
LEGACY_RSAPUBLIC_BLOB
Das BLOB ist ein RSA-BLOB mit öffentlichem Schlüssel, das mithilfe von CryptoAPI exportiert wurde. Der Microsoft-Primitive-Anbieter unterstützt den Import dieses BLOB-Typs nicht.

[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. BCryptSignHash. Dieses Handle muss freigegeben werden, wenn es nicht mehr benötigt wird, indem es an die Funktion BCryptDestroyKey übergeben wird.

[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, das dieser Puffer enthält.

[in] cbInput

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

[in] dwFlags

Ein Satz von Flags, die das Verhalten dieser Funktion ändern. Dies kann null oder der folgende Wert sein.

Wert Bedeutung
BCRYPT_NO_KEY_VALIDATION
Überprüfen Sie nicht den öffentlichen Teil des Schlüsselpaars.

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
STATUS_SUCCESS
Die Funktion war erfolgreich.
STATUS_INVALID_HANDLE
Das Algorithmushandle im hAlgorithm-Parameter ist ungültig.
STATUS_INVALID_PARAMETER
Mindestens ein Parameter ist ungültig.
STATUS_NOT_SUPPORTED
Der vom hAlgorithm-Parameter angegebene Algorithmusanbieter unterstützt den vom pszBlobType-Parameter angegebenen BLOB-Typ nicht.

Hinweise

Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptImportKeyPair entweder aus dem Benutzermodus oder dem Kernelmodus aufgerufen werden. Aufrufer im Kernelmodus können entweder am PASSIVE_LEVELIRQL oder DISPATCH_LEVEL IRQL ausgeführt werden. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEL ist, muss das im hAlgorithm-Parameter bereitgestellte Handle mit dem flag BCRYPT_PROV_DISPATCH geöffnet worden sein, und alle an die BCryptImportKeyPair-Funktion übergebenen Zeiger 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: Verwenden Sie Ksecdd.lib, um diese Funktion im Kernelmodus aufzurufen.

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

BCryptImportKey