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


Функция NCryptSignHash (ncrypt.h)

Функция NCryptSignHash создает подпись хэш-значения.

Синтаксис

SECURITY_STATUS NCryptSignHash(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PBYTE             pbHashValue,
  [in]           DWORD             cbHashValue,
  [out]          PBYTE             pbSignature,
  [in]           DWORD             cbSignature,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Параметры

[in] hKey

Дескриптор ключа, используемый для подписи хэша.

[in, optional] pPaddingInfo

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

[in] pbHashValue

Указатель на буфер, содержащий хэш-значение для подписи. Параметр cbInput содержит размер этого буфера.

[in] cbHashValue

Количество байтов в буфере pbHashValue для подписывания.

[out] pbSignature

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

Если этот параметр задан NULL, эта функция вычисляет размер, необходимый для подписи, и возвращает размер в расположении, на которое указывает параметр pcbResult .

[in] cbSignature

Размер в байтах буфера pbSignature . Этот параметр игнорируется, если параметр pbSignature имеет значение NULL.

[out] pcbResult

Указатель на переменную DWORD , которая получает количество байтов, скопированных в буфер pbSignature .

Если pbSignature имеет NULLзначение, оно получает размер в байтах, необходимый для подписи.

[in] dwFlags

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

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

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

Ценность Значение
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 .
NCRYPT_SILENT_FLAG Запрашивает, что поставщик ключевых служб (KSP) не отображает пользовательский интерфейс. Если поставщик должен отобразить пользовательский интерфейс для работы, вызов завершается ошибкой, и KSP должен задать код ошибки NTE_SILENT_CONTEXT в качестве последней ошибки.

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

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

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

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

Код возврата Описание
ERROR_SUCCESS
Функция была успешной.
NTE_BAD_ALGID
Ключ, представленный параметром hKey , не поддерживает подписывание.
NTE_BAD_FLAGS
Параметр dwFlags содержит недопустимое значение.
NTE_INVALID_HANDLE
Недопустимый параметр hKey .
NTE_INVALID_PARAMETER
Один или несколько параметров недопустимы.
NTE_NO_MEMORY
Произошел сбой выделения памяти.

Замечания

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

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows Vista [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2008 [классические приложения | Приложения UWP]
целевая платформа Виндоус
Заголовок ncrypt.h
Библиотека Ncrypt.lib
Библиотека dll Ncrypt.dll