Функция BCryptSecretAgreement (bcrypt.h)

Функция BCryptSecretAgreement создает значение секретного соглашения из закрытого и открытого ключей.

Синтаксис

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

Параметры

[in] hPrivKey

Дескриптор закрытого ключа , используемый для создания значения секретного соглашения. Этот ключ и ключ hPubKey должны поступать от одного поставщика криптографических алгоритмов CNG.

[in] hPubKey

Дескриптор открытого ключа , используемого для создания значения секретного соглашения. Этот ключ и ключ hPrivKey должны поступать от одного поставщика криптографических алгоритмов CNG.

[out] phAgreedSecret

Указатель на BCRYPT_SECRET_HANDLE , получающий дескриптор, представляющий значение секретного соглашения. Этот дескриптор необходимо освободить, передав его в функцию BCryptDesecret , если он больше не нужен.

[in] dwFlags

Набор флагов, которые изменяют поведение этой функции. Для этой функции не определены флаги.

Возвращаемое значение

Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.

Возможные коды возврата включают, помимо прочего, следующие.

Код возврата Описание
STATUS_SUCCESS
Функция выполнена успешно.
STATUS_INVALID_HANDLE
Дескриптор ключа в параметре hPrivKey или hPubKey недопустим.
STATUS_INVALID_PARAMETER
Один или несколько параметров недопустимы.
STATUS_NOT_SUPPORTED
Дескриптор ключа в параметре hPrivKey не является ключом Diffie-Hellman.

Комментарии

В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptSecretAgreement можно вызывать из пользовательского режима или режима ядра. Вызовы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескрипторы, предоставляемые в параметрах hPrivKey и hPubKey , должны быть производными от дескриптора алгоритма, возвращенного поставщиком, который был открыт с помощью флага BCRYPT_PROV_DISPATCH , а все указатели, передаваемые в функцию BCryptSecretAgreement , должны ссылаться на непагрегированную (или заблокированную) память.

Чтобы вызвать эту функцию в режиме ядра, используйте файл Cng.lib, который входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: Чтобы вызвать эту функцию в режиме ядра, используйте Ksecdd.lib.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header bcrypt.h
Библиотека Bcrypt.lib
DLL Bcrypt.dll

См. также раздел

BCryptDecryptSecret