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


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

Функция BCryptVerifySignature проверяет соответствие указанной сигнатуры указанному хэшу.

Синтаксис

NTSTATUS BCryptVerifySignature(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbHash,
  [in]           ULONG             cbHash,
  [in]           PUCHAR            pbSignature,
  [in]           ULONG             cbSignature,
  [in]           ULONG             dwFlags
);

Параметры

[in] hKey

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

[in, optional] pPaddingInfo

Указатель на структуру, содержащую сведения о заполнении. Фактический тип структуры, на который указывает этот параметр, зависит от значения параметра dwFlags . Этот параметр используется только с асимметричными ключами и в противном случае должен иметь значение NULL .

[in] pbHash

Адрес буфера, содержащего хэш данных. Параметр cbHash содержит размер этого буфера.

[in] cbHash

Размер буфера pbHash в байтах.

[in] pbSignature

Адрес буфера, содержащего подписанный хэш данных. Для создания сигнатуры используется функция BCryptSignHash . Параметр cbSignature содержит размер этого буфера.

[in] cbSignature

Размер буфера pbSignature в байтах. Для создания сигнатуры используется функция BCryptSignHash .

[in] dwFlags

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

Если ключ является симметричным, этот параметр не используется и должен быть равен нулю.

Если ключ является асимметричным, это может быть одно из следующих значений.

Значение Значение
BCRYPT_PAD_PKCS1
Схема заполнения PKCS1 использовалась при создании подписи. Параметр pPaddingInfo является указателем на структуру BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PSS
При создании подписи использовалась схема заполнения вероятностной схемы подписи (PSS). Параметр pPaddingInfo является указателем на структуру BCRYPT_PSS_PADDING_INFO .

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

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

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

Код возврата Описание
STATUS_SUCCESS
Функция выполнена успешно.
STATUS_INVALID_SIGNATURE
Подпись не была проверена.
NTE_NO_MEMORY
Произошел сбой выделения памяти.
STATUS_INVALID_PARAMETER
Один из предоставленных параметров недопустим.
STATUS_INVALID_HANDLE
Дескриптор ключа, указанный параметром hKey , недопустим.
STATUS_NOT_SUPPORTED
Поставщик алгоритма, используемый для создания дескриптора ключа, указанного параметром hKey, не является алгоритмом подписывания.

Комментарии

Эта функция вычисляет подпись с предоставленным ключом, а затем сравнивает вычисляемое значение сигнатуры с указанным значением сигнатуры.

Чтобы использовать эту функцию, необходимо хэшировать данные с помощью того же алгоритма хэширования, который использовался для создания подписанного хэш-значения. Если применимо, необходимо также указать ту же схему заполнения, которая была указана при создании подписи.

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

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

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

BCryptSignHash