Функция BCryptGenerateKeyPair (bcrypt.h)
Функция BCryptGenerateKeyPair создает пустую пару открытого и закрытого ключа. После создания ключа с помощью этой функции можно использовать функцию
Синтаксис
NTSTATUS BCryptGenerateKeyPair(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[out] BCRYPT_KEY_HANDLE *phKey,
[in] ULONG dwLength,
[in] ULONG dwFlags
);
Параметры
[in, out] hAlgorithm
Дескриптор поставщика алгоритмов, поддерживающего подписывание, асимметричное шифрование или соглашение ключа. Этот дескриптор должен быть создан с помощью функции BCryptOpenAlgorithmProvider.
[out] phKey
Указатель на BCRYPT_KEY_HANDLE, который получает дескриптор ключа. Этот дескриптор используется в последующих функциях, требующих ключа, например BCryptEncrypt. Этот дескриптор должен быть освобожден, если он больше не нужен, передав его в функцию BCryptDekey.
[in] dwLength
Длина ключа в битах. Поставщики алгоритмов имеют разные ограничения размера ключа для каждого стандартного асимметричного алгоритма.
[in] dwFlags
Набор флагов, изменяющих поведение этой функции. В настоящее время флаги не определены, поэтому этот параметр должен быть равен нулю.
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают в себя, но не ограничиваются следующими.
Возвращаемый код | Описание |
---|---|
|
Функция была успешной. |
|
Дескриптор алгоритма в параметре hAlgorithm недопустим. |
|
Один или несколько параметров недопустимы. |
|
Указанный поставщик не поддерживает асимметричное шифрование ключей. |
Замечания
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptGenerateKeyPair можно вызывать из пользовательского режима или режима ядра. Вызывающие серверы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, то дескриптор, предоставленный в параметре hAlgorithm, должен быть открыт с помощью флага BCRYPT_PROV_DISPATCH, а все указатели, переданные в функцию BCryptGenerateKeyP air, должны ссылаться на неупакованную (или заблокированную) память.
Чтобы вызвать эту функцию в режиме ядра, используйте Cng.lib, которая входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: для вызова этой функции в режиме ядра используйте Ksecdd.lib.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | bcrypt.h |
библиотеки |
Bcrypt.lib |
DLL | Bcrypt.dll |