Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция 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 в противном случае.
pPaddingInfo должно быть NULL для LMS и XMSS, так как для создания подписи, отличной от ключа и входных данных, не требуется никаких дополнительных сведений.
[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 .
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_HANDLE | Дескриптор ключа, указанный параметром hKey , недопустим. |
| STATUS_NOT_SUPPORTED | Поставщик алгоритмов, используемый для создания дескриптора ключа, указанного параметром hKey , не является алгоритмом подписи. |
| STATUS_NO_MEMORY | Произошел сбой выделения памяти. |
| STATUS_BUFFER_TOO_SMALL | Размер памяти, указанный параметром 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] |
| целевая платформа | Виндоус |
| Заголовок | bcrypt.h |
| Библиотека | Bcrypt.lib |
| Библиотека dll | Bcrypt.dll |