Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 в противном случае.
pPaddingInfo должно быть NULL для LMS и XMSS, так как для создания подписи, отличной от ключа и входных данных, не требуется никаких дополнительных сведений.
[in] pbHash
Адрес буфера, содержащего хэш данных. Параметр cbHash содержит размер этого буфера.
[in] cbHash
Размер в байтах буфера pbHash .
[in] pbSignature
Адрес буфера, содержащего подписанный хэш данных. Функция BCryptSignHash используется для создания сигнатуры. Параметр cbSignature содержит размер этого буфера.
[in] cbSignature
Размер в байтах буфера pbSignature . Функция BCryptSignHash используется для создания сигнатуры.
[in] dwFlags
Набор флагов, изменяющих поведение этой функции. Допустимый набор флагов зависит от типа ключа, указанного параметром hKey .
DwFlags должно быть равно нулю для LMS и XMSS, так как для создания подписи, отличной от ключа и входных данных, не требуется.
Если ключ является симметричным ключом, этот параметр не используется и должен быть нулевым.
Если ключ является асимметричным ключом, это может быть одно из следующих значений:
| Ценность | Значение |
|---|---|
| BCRYPT_PAD_PKCS1 | Схема заполнения PKCS1 использовалась при создании сигнатуры. Параметр pPaddingInfo — это указатель на структуру BCRYPT_PKCS1_PADDING_INFO . |
| BCRYPT_PAD_PQDSA | Используйте схему заполнения PQ для ML-DSA или SLH-DSA. Параметр pPaddingInfo — это указатель на структуру BCRYPT_PQDSA_PADDING_INFO . Заметка: Это необходимо задать, если используется предварительно хэш-ML-DSA вариант. |
| BCRYPT_PAD_PSS | Схема вероятностной подписи (PSS) использовалась при создании подписи. Параметр pPaddingInfo — это указатель на структуру BCRYPT_PSS_PADDING_INFO . |
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают, но не ограничиваются следующими:
| Код возврата | Описание |
|---|---|
| STATUS_SUCCESS | Функция была успешной. |
| STATUS_INVALID_SIGNATURE | Подпись не была проверена. |
| NTE_NO_MEMORY | Произошел сбой выделения памяти. |
| СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР | Один из указанных параметров недопустим. |
| STATUS_INVALID_HANDLE | Дескриптор ключа, указанный параметром hKey , недопустим. |
| STATUS_NOT_SUPPORTED | Поставщик алгоритмов, используемый для создания дескриптора ключа, указанного параметром hKey , не является алгоритмом подписи. |
Замечания
Эта функция вычисляет сигнатуру с предоставленным ключом, а затем сравнивает вычисляемое значение сигнатуры с указанным значением подписи.
Чтобы использовать эту функцию, необходимо хэшировать данные с помощью того же алгоритма хэширования, который использовался для создания хэш-значения, подписанного. Если применимо, необходимо также указать ту же схему заполнения, которая была указана при создании подписи.
Для ML-DSA и SLH-DSA, pbHash и cbHash не должны быть хэш-значениями и могут быть произвольными входными данными длины.
В зависимости от того, какие режимы процессора поддерживает поставщик, 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] |
| целевая платформа | Виндоус |
| Заголовок | bcrypt.h |
| Библиотека | Bcrypt.lib |
| Библиотека dll | Bcrypt.dll |