BCryptSecretAgreement-Funktion (bcrypt.h)

Die BCryptSecretAgreement-Funktion erstellt einen Geheimvertragswert aus einem privaten und einem öffentlichen Schlüssel.

Syntax

NTSTATUS BCryptSecretAgreement(
  [in]  BCRYPT_KEY_HANDLE    hPrivKey,
  [in]  BCRYPT_KEY_HANDLE    hPubKey,
  [out] BCRYPT_SECRET_HANDLE *phAgreedSecret,
  [in]  ULONG                dwFlags
);

Parameter

[in] hPrivKey

Das Handle des privaten Schlüssels , der zum Erstellen des Werts der geheimen Vereinbarung verwendet werden soll. Dieser Schlüssel und der hPubKey-Schlüssel müssen vom gleichen CNG-Kryptografiealgorithmusanbieter stammen.

[in] hPubKey

Das Handle des öffentlichen Schlüssels , der zum Erstellen des Geheimvertragswerts verwendet werden soll. Dieser Schlüssel und der hPrivKey-Schlüssel müssen vom gleichen CNG-Kryptografiealgorithmusanbieter stammen.

[out] phAgreedSecret

Ein Zeiger auf einen BCRYPT_SECRET_HANDLE , der ein Handle empfängt, das den Wert der geheimen Vereinbarung darstellt. Dieses Handle muss freigegeben werden, indem es an die BCryptDestroySecret-Funktion übergeben wird, wenn es nicht mehr benötigt wird.

[in] dwFlags

Eine Reihe von Flags, die das Verhalten dieser Funktion ändern. Für diese Funktion sind keine Flags definiert.

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_INVALID_HANDLE
Das Schlüsselhandle im Parameter hPrivKey oder hPubKey ist ungültig.
STATUS_INVALID_PARAMETER
Mindestens ein Parameter ist ungültig.
STATUS_NOT_SUPPORTED
Das Schlüsselhandle im hPrivKey-Parameter ist kein Diffie-Hellman Schlüssel.

Hinweise

Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptSecretAgreement 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, müssen die in den Parametern hPrivKey und hPubKey bereitgestellten Handles von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wird, der mithilfe des flags BCRYPT_PROV_DISPATCH geöffnet wurde, und alle Zeiger, die an die BCryptSecretAgreement-Funktion übergeben werden, müssen auf nicht ausseitigen (oder gesperrten) Arbeitsspeicher 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

BCryptDestroySecret