Функция 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_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]
Целевая платформа Windows
Header ncrypt.h
Библиотека Ncrypt.lib
DLL Ncrypt.dll