Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция BCryptOpenAlgorithmProvider загружает и инициализирует поставщик CNG.
Синтаксис
NTSTATUS BCryptOpenAlgorithmProvider(
[out] BCRYPT_ALG_HANDLE *phAlgorithm,
[in] LPCWSTR pszAlgId,
[in] LPCWSTR pszImplementation,
[in] ULONG dwFlags
);
Параметры
[out] phAlgorithm
Указатель на переменную BCRYPT_ALG_HANDLE, которая получает дескриптор поставщика CNG. После завершения работы с этим дескриптором отпустите его, передав его в функцию BCryptCloseAlgorithmProvider.
[in] pszAlgId
Указатель на строку Юникода, завершающую значение NULL, которая определяет запрошенный алгоритм шифрования. Это может быть один из стандартных идентификаторов алгоритма CNG или идентификатор другого зарегистрированного алгоритма.
[in] pszImplementation
Указатель на строку Юникода, завершающую значение NULL, которая определяет конкретный поставщик для загрузки. Это зарегистрированный псевдоним поставщика криптографических примитивов. Этот параметр является необязательным и может быть null, если он не нужен. Если этот параметр null, поставщик по умолчанию для указанного алгоритма будет загружен.
Ниже приведены предопределенные имена поставщиков.
[in] dwFlags
Флаги, изменяющие поведение функции. Это может быть ноль или сочетание одного или нескольких следующих значений.
| Ценность | Значение |
|---|---|
|
Поставщик выполнит алгоритм Hash-Based код проверки подлинности сообщений (HMAC) с указанным хэш-алгоритмом. Этот флаг используется только поставщиками хэш-алгоритмов. |
|
Загружает поставщика в неупакованный пул памяти. Если этот флаг отсутствует, поставщик загружается в пул памяти с страницами. При указании этого флага возвращенный дескриптор не должен быть закрыт до освобождения всех зависимых объектов.
Примечание Этот флаг поддерживается только в режиме ядра и позволяет обрабатывать последующие операции с поставщиком на уровне диспетчера. Если поставщик не поддерживает вызов на уровне отправки, он вернет ошибку при открытии с помощью этого флага.
|
|
Создает повторно используемый хэш-объект. Объект можно использовать для новой операции хэширования сразу после вызова BCryptFinishHash. Дополнительные сведения см. в статье Создание хэша с помощьюCNG.
Windows Server 2008 R2, Windows 7, Windows Server 2008 и Windows Vista: Этот флаг не поддерживается. |
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают в себя, но не ограничиваются следующими.
| Возвращаемый код | Описание |
|---|---|
|
Функция была успешной. |
|
Поставщик не найден для указанного идентификатора алгоритма. |
|
Один или несколько параметров недопустимы. |
|
Произошел сбой выделения памяти. |
Замечания
Из-за количества и типа операций, необходимых для поиска, загрузки и инициализации поставщика алгоритмов , функция BCryptOpenAlgorithmProvid er является относительно интенсивной функцией. Из-за этого рекомендуется кэшировать все обработчики алгоритмов, которые будут использоваться более одного раза, а не открывать и закрывать поставщиков алгоритмов.
BCryptOpenAlgorithmProvider можно вызывать из пользовательского режима или режима ядра. Вызывающие вызовы режима ядра должны выполняться в PASSIVE_LEVELIRQL.
Чтобы вызвать эту функцию в режиме ядра, используйте Cng.lib, которая входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: для вызова этой функции в режиме ядра используйте Ksecdd.lib.
Начиная с Windows 10, CNG больше не следует каждому обновлению конфигурации шифрования. Некоторые изменения, такие как добавление нового поставщика по умолчанию или изменение порядка предпочтений поставщиков алгоритмов, могут потребовать перезагрузки. Из-за этого перед вызовом BCryptOpenAlgorithmProvider необходимо перезагрузить с любым новым настроенным поставщиком.
Требования
| Требование | Ценность |
|---|---|
| Минимально поддерживаемый клиент | Windows Vista [классические приложения | Приложения UWP] |
| минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
| целевая платформа | Виндоус |
| Заголовок | bcrypt.h |
| библиотека | Bcrypt.lib |
| DLL | Bcrypt.dll |