Функция NCryptProtectSecret (ncryptprotect.h)

Функция NCryptProtectSecret шифрует данные в указанный дескриптор защиты. Вызовите NCryptUnprotectSecret для расшифровки данных.

Синтаксис

SECURITY_STATUS NCryptProtectSecret(
  [in]           NCRYPT_DESCRIPTOR_HANDLE hDescriptor,
  [in]           DWORD                    dwFlags,
  [in]           const BYTE               *pbData,
  [in]           ULONG                    cbData,
  [in, optional] const NCRYPT_ALLOC_PARA  *pMemPara,
  [in, optional] HWND                     hWnd,
  [out]          BYTE                     **ppbProtectedBlob,
  [out]          ULONG                    *pcbProtectedBlob
);

Параметры

[in] hDescriptor

Дескриптор дескриптора защиты. Создайте дескриптор , вызвав NCryptCreateProtectionDescriptor.

[in] dwFlags

Флаг может быть равен нулю или следующему значению.

Значение Значение
NCRYPT_SILENT_FLAG
Запрашивает, чтобы поставщик службы ключей не отображал пользовательский интерфейс.

[in] pbData

Указатель на защищаемый массив байтов.

[in] cbData

Число байтов в двоичном массиве, заданное параметром pbData .

[in, optional] pMemPara

Указатель на структуру NCRYPT_ALLOC_PARA , которую можно использовать для указания пользовательских функций управления памятью. Если для этого аргумента задано значение NULL, функция LocalAlloc используется для внутреннего выделения памяти, и приложение должно вызвать LocalFree , чтобы освободить память, на которую указывает параметр ppbProtectedBlob .

[in, optional] hWnd

Дескриптор в родительском окне пользовательского интерфейса, если таковой есть, для отображения.

[out] ppbProtectedBlob

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

[out] pcbProtectedBlob

Указатель на переменную ULONG , содержащую размер зашифрованных данных в байтах, на которые указывает переменная ppbProtectedBlob .

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

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

Код возврата Описание
ERROR_SUCCESS
Функция выполнена успешно.
NTE_INVALID_PARAMETER
Параметры pbData, ppbProtectedBlob и pcbProtectedBlob не могут иметь значение NULL.

Параметр cbData не может быть меньше единицы.

NTE_NO_MEMORY
Для выделения ключа шифрования содержимого недостаточно памяти.
NTE_INVALID_HANDLE
Дескриптор, указанный параметром hDescriptor , недопустим.

Комментарии

Используйте функцию NCryptProtectSecret для защиты ключей, материала ключей и паролей. Используйте функции NCryptStreamOpenToProtect и NCryptStreamUpdate для шифрования сообщений большего размера.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header ncryptprotect.h
Библиотека NCrypt.lib
DLL NCrypt.dll

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

Функции DPAPI CNG

NCryptCreateProtectionDescriptor

NCryptUnprotectSecret