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


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

Функция NCryptDecrypt расшифровывает блок зашифрованных данных.

Синтаксис

SECURITY_STATUS NCryptDecrypt(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in]           PBYTE             pbInput,
  [in]           DWORD             cbInput,
  [in, optional] VOID              *pPaddingInfo,
  [out]          PBYTE             pbOutput,
  [in]           DWORD             cbOutput,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Параметры

[in] hKey

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

[in] pbInput

Адрес буфера, содержащего данные для расшифровки. Параметр cbInput содержит размер данных для расшифровки. Дополнительные сведения см. в подразделе "Примечания".

[in] cbInput

Число байтов в буфере pbInput для расшифровки.

[in, optional] pPaddingInfo

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

[out] pbOutput

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

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

[in] cbOutput

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

[out] pcbResult

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

[in] dwFlags

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

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

Значение Значение
NCRYPT_NO_PADDING_FLAG
При шифровании данных не использовалось заполнение. Параметр pPaddingInfo не используется.
NCRYPT_PAD_OAEP_FLAG
При шифровании данных использовалась схема оптимального асимметричного шифрования (OAEP). Параметр pPaddingInfo является указателем на структуру BCRYPT_OAEP_PADDING_INFO .
NCRYPT_PAD_PKCS1_FLAG
Данные были заполнены случайным числом для округления размера блока при шифровании данных. Параметр pPaddingInfo не используется.
 

Следующее значение можно использовать для любого ключа.

Значение Значение
NCRYPT_SILENT_FLAG
Запрашивает, чтобы поставщик служб ключей (KSP) не отображал пользовательский интерфейс. Если поставщик должен отображать пользовательский интерфейс для работы, вызов завершается сбоем, а KSP должен задать код ошибки NTE_SILENT_CONTEXT как последнюю ошибку.

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

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

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

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

Комментарии

Параметры pbInput и pbOutput могут указывать на один и тот же буфер. В этом случае эта функция выполнит расшифровку на месте.

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

Требования

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

См. также раздел

NCryptEncrypt