Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 sein NULL
.
[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: Die Unterstützung 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: Die Unterstützung 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_MLKEM_PUBLIC_BLOB | Das BLOB ist ein ML-KEM BLOB, das import- und exportieren von standardmäßigen Byte-codierten ML-KEM Kapselschlüsseln pro FIPS 203 bereitstellt. Der PbInput-Puffer muss eine BCRYPT_MLKEM_KEY_BLOB Struktur enthalten, die den bytecodierten KEM-Kapselschlüssel, BCRYPT_MLKEM_PUBLIC_MAGIC und ML-KEM Parametersatz enthält. |
BCRYPT_MLKEM_PRIVATE_BLOB | Das BLOB ist ein ML-KEM BLOB, das den Import und Export von standardmäßigen Byte-codierten ML-KEM Entkapselungsschlüsseln pro FIPS 203 bereitstellt. Der PbInput-Puffer muss eine BCRYPT_MLKEM_KEY_BLOB Struktur enthalten, die den bytecodierten KEM-Entkapselungsschlüssel, BCRYPT_MLKEM_PRIVATE_MAGIC und ML-KEM Parametersatz enthält. |
BCRYPT_MLKEM_PRIVATE_SEED_BLOB | Das BLOB ist ein ML-KEM BLOB, das den Import und Export von ML-KEM Samen pro FIPS 203 bereitstellt. Der PbInput-Puffer muss eine BCRYPT_MLKEM_KEY_BLOB Struktur enthalten, die den KEM-Seed, BCRYPT_MLKEM_SEED_MAGIC und ML-KEM Parametersatz enthält. |
BCRYPT_PQDSA_PUBLIC_BLOB | Das BLOB ist ein ML-DSA-, SLH-DSA-, LMS- oder XMSS-BLOB, das den Import und Export von öffentlichen PQ-Signaturschlüsseln pro FIPS 204 und 205 bereitstellt. Der PbInput-Puffer muss eine BCRYPT_PQDSA_KEY_BLOB Struktur enthalten, die das Schlüsselmaterial, die öffentliche Magie und den PQ-Parametersatz enthält. |
BCRYPT_PQDSA_PRIVATE_BLOB | Das BLOB ist ein ML-DSA-, SLH-DSA-, LMS- oder XMSS-BLOB, das den Import und Export privater PQ-Signaturschlüssel pro FIPS 204 und 205 bereitstellt. Der PbInput-Puffer muss eine BCRYPT_PQDSA_KEY_BLOB Struktur enthalten, die das Schlüsselmaterial, private Magie und den PQ-Parametersatz enthält. |
BCRYPT_PQDSA_PRIVATE_SEED_BLOB | Das BLOB ist ein ML-DSA-, SLH-DSA-, LMS- oder XMSS-BLOB, das den Import und Export privater PQ-Signatursamen pro FIPS 204 und 205 bereitstellt. Der PbInput-Puffer muss eine BCRYPT_PQDSA_KEY_BLOB Struktur enthalten, die den Seedwert, private Seed Magic und den PQ-Parametersatz enthält. |
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_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_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 | Opt out of any applicable FIPS self-tests. |
Rückgabewert
Gibt einen Statuscode zurück, der den Erfolg oder Fehler der Funktion angibt.
Mögliche Rückgabecodes umfassen, sind jedoch nicht beschränkt auf Folgendes:
Rückgabecode | Beschreibung |
---|---|
STATUS_SUCCESS | Die Funktion war erfolgreich. |
STATUS_INVALID_BUFFER_SIZE | Wenn der Puffer pbInput nicht der richtigen Größe für die Kombination des ML-KEM Parametersatzes entspricht, der hAlgorithm zugeordnet ist, und für den zu importierenden BLOB-Typ. |
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.
Der Aufrufer sollte hKey mit BCryptDestroyKey freigeben, wenn der Schlüssel nicht mehr verwendet wird.
Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.lib
das Driver Development Kit (DDK).
Windows Server 2008 und Windows Vista: Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Ksecdd.lib
.
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 |
Bibliothek | Bcrypt.lib |
DLL- | Bcrypt.dll |