Функция BCryptGenerateKeyPair (bcrypt.h)
Функция BCryptGenerateKeyPair создает пустую пару открытого и закрытого ключей. После создания ключа с помощью этой функции можно использовать функцию BCryptSetProperty , чтобы задать ее свойства; однако ключ нельзя использовать, пока не будет вызвана функция BCryptFinalizeKeyPair .
Синтаксис
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. Этот дескриптор должен быть освобожден, если он больше не нужен, передав его функции BCryptDeographyKey .
[in] dwLength
Длина ключа в битах. Поставщики алгоритмов имеют разные ограничения на размер ключа для каждого стандартного асимметричного алгоритма.
[in] dwFlags
Набор флагов, которые изменяют поведение этой функции. В настоящее время флаги не определены, поэтому этот параметр должен быть равен нулю.
Возвращаемое значение
Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.
Возможные коды возврата включают, помимо прочего, следующие.
Код возврата | Описание |
---|---|
|
Функция выполнена успешно. |
|
Дескриптор алгоритма в параметре hAlgorithm недопустим . |
|
Один или несколько параметров недопустимы. |
|
Указанный поставщик не поддерживает шифрование асимметричного ключа. |
Комментарии
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptGenerateKeyPair можно вызывать из пользовательского режима или режима ядра. Вызовы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескриптор, указанный в параметре hAlgorithm , должен быть открыт с помощью флага BCRYPT_PROV_DISPATCH , а все указатели, передаваемые в функцию BCryptGenerateKeyPair , должны ссылаться на непагированную (или заблокированную) память.
Чтобы вызвать эту функцию в режиме ядра, используйте файл 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по