Freigeben über


BCryptImportKeyPair-Funktion (bcrypt.h)

Die BCryptImportKeyPair-Funktion importiert ein öffentliches/privates Schlüsselpaar aus einem Schlüssel BLOB-. Die BCryptImportKey--Funktion wird verwendet, um einen symmetrischen Schlüsselzu 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 zum Importieren des Schlüssels. Dieses Handle wird durch Aufrufen der BCryptOpenAlgorithmProvider-Funktion abgerufen.

[in, out] hImportKey

Dieser Parameter wird derzeit nicht verwendet und sollte NULL-sein.

[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
BCRYPT_DH_PRIVATE_BLOB
Das BLOB ist ein Diffie-Hellman BLOB für öffentliche/private Schlüssel. Der pbInput- Puffer muss eine BCRYPT_DH_KEY_BLOB Struktur enthalten, die unmittelbar auf die Schlüsseldaten folgt.
BCRYPT_DH_PUBLIC_BLOB
Das BLOB ist ein Diffie-Hellman öffentlichen SCHLÜSSEL-BLOB-. Der pbInput- Puffer muss eine BCRYPT_DH_KEY_BLOB Struktur enthalten, die unmittelbar auf die Schlüsseldaten folgt.
BCRYPT_DSA_PRIVATE_BLOB
Das BLOB ist ein BLOB für öffentliche/private DSA-Schlüssel. Der pbInput- Puffer muss eine BCRYPT_DSA_KEY_BLOB- oder BCRYPT_DSA_KEY_BLOB_V2 Struktur enthalten, 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.

BCRYPT_DSA_PUBLIC_BLOB
Das BLOB ist ein öffentliches DSA-SCHLÜSSEL-BLOB. Der pbInput- Puffer muss eine BCRYPT_DSA_KEY_BLOB- oder BCRYPT_DSA_KEY_BLOB_V2 Struktur enthalten, 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.

BCRYPT_ECCPRIVATE_BLOB
Das BLOB ist eine elliptische Kurvenkryptografie (ECC) privaten Schlüssel. Der pbInput- Puffer muss eine BCRYPT_ECCKEY_BLOB Struktur enthalten, die unmittelbar auf die Schlüsseldaten folgt.
BCRYPT_ECCPUBLIC_BLOB
Das BLOB ist ein öffentlicher ECC-Schlüssel. Der pbInput- Puffer muss eine BCRYPT_ECCKEY_BLOB Struktur enthalten, die unmittelbar auf die Schlüsseldaten folgt.
BCRYPT_PUBLIC_KEY_BLOB
Das BLOB ist ein generischer öffentlichen Schlüssel eines beliebigen Typs. Der Schlüsseltyp in diesem BLOB wird durch das Magic Member der BCRYPT_KEY_BLOB-Struktur bestimmt.
BCRYPT_PRIVATE_KEY_BLOB
Das BLOB ist ein allgemeiner 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 das Magic Member der BCRYPT_KEY_BLOB-Struktur bestimmt.
BCRYPT_RSAPRIVATE_BLOB
Das BLOB ist ein BLOB mit öffentlichem/privatem RSA-Schlüsselpaar. Der pbInput- Puffer muss eine BCRYPT_RSAKEY_BLOB Struktur enthalten, die unmittelbar auf die Schlüsseldaten folgt.
BCRYPT_RSAPUBLIC_BLOB
Das BLOB ist ein ÖFFENTLICHEs RSA-SCHLÜSSEL-BLOB. Der pbInput- Puffer muss eine BCRYPT_RSAKEY_BLOB Struktur enthalten, die unmittelbar auf die Schlüsseldaten folgt.
LEGACY_DH_PUBLIC_BLOB
Das BLOB ist ein Diffie-Hellman öffentlichen Schlüssel-BLOB, das mithilfe CryptoAPIexportiert wurde. Der Microsoft-Grundtypanbieter unterstützt das Importieren dieses BLOB-Typs nicht.
LEGACY_DH_PRIVATE_BLOB
The BLOB is a legacy Diffie-Hellman Version 3 Private Key BLOB that contains a Diffie-Hellman public/private key pair that was export by using CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Das BLOB ist ein ÖFFENTLICHEs/privates DSA-Schlüsselpaar, das mithilfe von CryptoAPI exportiert wurde.
LEGACY_DSA_PUBLIC_BLOB
Das BLOB ist ein öffentliches DSA-BLOB, das mithilfe von CryptoAPI exportiert wurde. Der Microsoft-Grundtypanbieter unterstützt das Importieren dieses BLOB-Typs nicht.
LEGACY_DSA_V2_PRIVATE_BLOB
Das BLOB ist ein privater DSA Version 2-Schlüssel in einem Formular, das mithilfe von CryptoAPI importiert werden kann.
LEGACY_RSAPRIVATE_BLOB
Das BLOB ist ein BLOB mit öffentlichem/privatem RSA-Schlüsselpaar, das mithilfe von CryptoAPI exportiert wurde.
LEGACY_RSAPUBLIC_BLOB
Das BLOB ist ein ÖFFENTLICHEs RSA-BLOB, das mithilfe von CryptoAPI exportiert wurde. Der Microsoft-Grundtypanbieter unterstützt das Importieren 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. B. BCryptSignHash. Dieser Handle muss losgelassen werden, wenn es nicht mehr benötigt wird, indem es an die BCryptDestroyKey--Funktion übergeben wird.

[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. 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 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
STATUS_SUCCESS
Die Funktion war erfolgreich.
STATUS_INVALID_HANDLE
Der 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 nicht den BLOB-Typ, der durch den pszBlobType Parameter angegeben wurde.

Bemerkungen

Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptImportKeyPair 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 BCryptImportKeyPair--Funktion übergeben werden, 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

Siehe auch

BCryptDestroyKey

BCryptExportKey-

BCryptImportKey