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

フラグには、0 または次の値を指定できます。

意味
NCRYPT_SILENT_FLAG
キー サービス プロバイダーにユーザー インターフェイスを表示しないことを要求します。

[in] pbData

保護するバイト配列へのポインター。

[in] cbData

pbData パラメーターで指定されたバイナリ配列内のバイト数。

[in, optional] pMemPara

カスタム メモリ管理機能を指定するために使用できる NCRYPT_ALLOC_PARA 構造体へのポインター。 この引数を NULL に設定すると、LocalAlloc 関数が内部的に使用されてメモリが割り当てられます。アプリケーションでは、ppbProtectedBlob パラメーターが指すメモリを解放するために LocalFree を呼び出す必要があります。

[in, optional] hWnd

表示するユーザー インターフェイスの親ウィンドウ (存在する場合) を処理します。

[out] ppbProtectedBlob

暗号化されたデータへのポインターを受け取る変数のアドレス。

[out] pcbProtectedBlob

ppbProtectedBlob 変数が指す暗号化されたデータのサイズ (バイト単位) を含む ULONG 変数へのポインター。

戻り値

関数の成功または失敗を示す状態コードを返します。 可能なリターン コードには、次のものが含まれますが、これらに限定されません。

リターン コード 説明
ERROR_SUCCESS
関数は成功しました。
NTE_INVALID_PARAMETER
pbDatappbProtectedBlobおよび pcbProtectedBlob の各パラメーターを NULL にすることはできません。

cbData パラメーターを 1 未満にすることはできません。

NTE_NO_MEMORY
コンテンツ暗号化キーを割り当てるためのメモリが不足しています。
NTE_INVALID_HANDLE
hDescriptor パラメーターで指定されたハンドルが無効です。

注釈

NCryptProtectSecret 関数を使用して、キー、キーマテリアル、パスワードを保護します。 NCryptStreamOpenToProtect 関数と NCryptStreamUpdate 関数を使用して、より大きなメッセージを暗号化します。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ncryptprotect.h
Library NCrypt.lib
[DLL] NCrypt.dll

こちらもご覧ください

CNG DPAPI 関数

NCryptCreateProtectionDescriptor

NCryptUnprotectSecret