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


Функция BCryptFinishHash (bcrypt.h)

Функция BCryptFinishHash извлекает значение хэша или кода проверки подлинности сообщения (MAC) для данных, накопленных при предыдущих вызовах BCryptHashData.

Синтаксис

NTSTATUS BCryptFinishHash(
  [in, out] BCRYPT_HASH_HANDLE hHash,
  [out]     PUCHAR             pbOutput,
  [in]      ULONG              cbOutput,
  [in]      ULONG              dwFlags
);

Параметры

[in, out] hHash

Дескриптор хэш-объекта или объекта MAC, используемого для вычисления хэша или MAC. Этот дескриптор получается путем вызова функции BCryptCreateHash . После вызова этой функции хэш-дескриптор, переданный в эту функцию, нельзя использовать повторно, кроме как при вызове BCryptDeкимHash.

[out] pbOutput

Указатель на буфер, получающий хэш-значение или значение MAC. Параметр cbOutput содержит размер этого буфера.

[in] cbOutput

Размер буфера pbOutput (в байтах). Этот размер должен точно соответствовать размеру хэша или значения MAC.

Размер можно получить, вызвав функцию BCryptGetProperty , чтобы получить свойство BCRYPT_HASH_LENGTH . Это обеспечит размер значения хэша или MAC для указанного алгоритма.

[in] dwFlags

Набор флагов, которые изменяют поведение этой функции. В настоящее время флаги не определены, поэтому этот параметр должен быть равен нулю.

Возвращаемое значение

Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.

Возможные коды возврата включают, помимо прочего, следующие.

Код возврата Описание
STATUS_SUCCESS
Функция выполнена успешно.
STATUS_INVALID_HANDLE
Дескриптор хэша в параметре hHash недопустим. После вызова функции BCryptFinishHash для хэш-дескриптора этот дескриптор нельзя использовать повторно.
STATUS_INVALID_PARAMETER
Один или несколько параметров недопустимы. Сюда относится случай, когда размер cbOutput отличается от размера хэша.

Комментарии

В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptFinishHash можно вызывать либо из пользовательского режима, либо из режима ядра. Вызовы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескриптор, предоставленный в параметре hHash , должен быть производным от дескриптора алгоритма, возвращенного поставщиком, который был открыт с помощью флага BCRYPT_PROV_DISPATCH , а все указатели, передаваемые в функцию BCryptFinishHash , должны ссылаться на непагированную (или заблокированную) память.

Чтобы вызвать эту функцию в режиме ядра, используйте файл 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

См. также раздел

BCryptHashData