Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 |