Поделиться через


Функция 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, получающий дескриптор, представляющий значение секретного соглашения. Этот дескриптор должен быть освобожден путем передачи его в функцию BCryptDeographySecret, если она больше не нужна.

[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]
целевая платформа Виндоус
заголовка bcrypt.h
библиотеки Bcrypt.lib
DLL Bcrypt.dll

См. также

BCryptDeskret