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