Функция BCryptSignHash (bcrypt.h)
Функция BCryptSignHash создает сигнатуру хэш-значения.
Синтаксис
NTSTATUS BCryptSignHash(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] VOID *pPaddingInfo,
[in] PUCHAR pbInput,
[in] ULONG cbInput,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Параметры
[in] hKey
Дескриптор ключа, используемого для подписывания хэша.
[in, optional] pPaddingInfo
Указатель на структуру, содержащую сведения о заполнении. Фактический тип структуры, на который указывает этот параметр, зависит от значения параметра dwFlags . Этот параметр используется только с асимметричными ключами и в противном случае должен иметь значение NULL .
[in] pbInput
Указатель на буфер, содержащий хэш-значение для подписывания. Параметр cbInput содержит размер этого буфера.
[in] cbInput
Количество байтов в буфере pbInput для подписывания.
[out] pbOutput
Адрес буфера для получения сигнатуры, созданной этой функцией. Параметр cbOutput содержит размер этого буфера.
Если этот параметр имеет значение NULL, эта функция вычисляет размер, необходимый для сигнатуры, и возвращает размер в расположении, на которое указывает параметр pcbResult .
[in] cbOutput
Размер буфера pbOutput в байтах. Этот параметр игнорируется, если параметр pbOutput имеет значение NULL.
[out] pcbResult
Указатель на переменную ULONG , которая получает количество байтов, скопированных в буфер pbOutput .
Если pbOutput имеет значение NULL, он получает размер в байтах, необходимый для подписи.
[in] dwFlags
Набор флагов, которые изменяют поведение этой функции. Допустимый набор флагов зависит от типа ключа, указанного параметром hKey .
Это может быть одно из следующих значений.
Значение | Значение |
---|---|
|
Используйте схему заполнения PKCS1. Параметр pPaddingInfo является указателем на структуру BCRYPT_PKCS1_PADDING_INFO . |
|
Используйте схему заполнения вероятностной схемы подписи (PSS). Параметр pPaddingInfo является указателем на структуру BCRYPT_PSS_PADDING_INFO . |
Возвращаемое значение
Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.
Возможные коды возврата включают, помимо прочего, следующие.
Код возврата | Описание |
---|---|
|
Функция выполнена успешно. |
|
Дескриптор ключа, указанный параметром hKey , недопустим. |
|
Поставщик алгоритма, используемый для создания дескриптора ключа, указанного параметром hKey, не является алгоритмом подписывания. |
|
Произошел сбой выделения памяти. |
|
Размер памяти, указанный параметром cbOutput , недостаточно велик для хранения сигнатуры. |
Комментарии
Эта функция зашифрует хэш-значение с помощью указанного ключа для создания подписи.
Чтобы позже убедиться, что подпись действительна, вызовите функцию BCryptVerifySignature с идентичным ключом и идентичным хэшом исходных данных.
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptSignHash можно вызывать из пользовательского режима или режима ядра. Вызывающие функции режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескриптор, указанный в параметре hKey , должен быть производным от дескриптора алгоритма, возвращенного поставщиком, который был открыт с флагом BCRYPT_PROV_DISPATCH , а все указатели, передаваемые в функцию BCryptSignHash , должны ссылаться на непагрегированную (или заблокированную) память.
Чтобы вызвать эту функцию в режиме ядра, используйте 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 как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по