Win32 API 日本語リファレンス
ホーム › Security.Cryptography › NCryptDecryptFn

NCryptDecryptFn

コールバック

シグネチャ

HRESULT NCryptDecryptFn(
    NCRYPT_PROV_HANDLE hProvider,
    NCRYPT_KEY_HANDLE hKey,
    BYTE* pbInput,
    DWORD cbInput,
    void* pPaddingInfo,
    BYTE* pbOutput,
    DWORD cbOutput,
    DWORD* pcbResult,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hProviderNCRYPT_PROV_HANDLE
hKeyNCRYPT_KEY_HANDLEデータの復号に使用するキーのハンドルです。
pbInputBYTE*復号するデータが格納されたバッファーのアドレスです。cbInput パラメーターには、復号するデータのサイズを指定します。詳細については「解説」を参照してください。
cbInputDWORDpbInput バッファー内の、復号するデータのバイト数です。
pPaddingInfovoid*パディング情報を格納した構造体へのポインターです。このパラメーターが指す構造体の実際の型は、dwFlags パラメーターの値によって異なります。このパラメーターは非対称キーの場合にのみ使用され、それ以外の場合は NULL でなければなりません。
pbOutputBYTE*

この関数が生成した復号済みデータを受け取るバッファーのアドレスです。cbOutput パラメーターには、このバッファーのサイズを指定します。詳細については「解説」を参照してください。

このパラメーターが NULL の場合、この関数は復号済みデータに必要なサイズを計算し、pcbResult パラメーターが指す場所にそのサイズを返します。

cbOutputDWORDpbOutput バッファーのサイズ (バイト単位) です。pbOutput パラメーターが NULL の場合、このパラメーターは無視されます。
pcbResultDWORD*pbOutput バッファーにコピーされたバイト数を受け取る DWORD 変数へのポインターです。pbOutput が NULL の場合は、復号済みデータに必要なサイズ (バイト単位) を受け取ります。
dwFlagsDWORD

関数の動作を変更するフラグです。指定できるフラグの組み合わせは、hKey パラメーターで指定したキーの種類によって異なります。

キーが非対称キーの場合、次のいずれかの値を指定できます。

値 意味
NCRYPT_NO_PADDING_FLAG
データの暗号化時にパディングは使用されませんでした。pPaddingInfo パラメーターは使用されません。
NCRYPT_PAD_OAEP_FLAG
データの暗号化時に Optimal Asymmetric Encryption Padding (OAEP) 方式が使用されました。pPaddingInfo パラメーターは BCRYPT_OAEP_PADDING_INFO 構造体へのポインターです。
NCRYPT_PAD_PKCS1_FLAG
データの暗号化時に、ブロックサイズを満たすためにデータが乱数でパディングされました。pPaddingInfo パラメーターは使用されません。

次の値は、任意のキーに対して使用できます。

値 意味
NCRYPT_SILENT_FLAG
キーストレージプロバイダー (KSP) がユーザーインターフェイスを表示しないよう要求します。プロバイダーが動作するために UI を表示する必要がある場合、呼び出しは失敗し、KSP は最後のエラーとして NTE_SILENT_CONTEXT エラーコードを設定します。

公式ドキュメント

NCryptDecrypt 関数は、暗号化されたデータのブロックを復号します。

戻り値

関数の成功または失敗を示すステータスコードを返します。

返される可能性のあるコードには、次のものが含まれます (これらに限定されません)。

戻り値 説明
ERROR_SUCCESS
関数は成功しました。
NTE_BAD_FLAGS
dwFlags パラメーターに無効な値が含まれています。
NTE_BUFFER_TOO_SMALL
cbOutput パラメーターで指定されたサイズでは、復号されたデータを格納するのに十分ではありません。
NTE_INVALID_HANDLE
hKey パラメーターが無効です。
NTE_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
NTE_PERM
hKey パラメーターで識別されるキーは復号に使用できません。

解説(Remarks)

pbInput パラメーターと pbOutput パラメーターは、同じバッファーを指すことができます。この場合、この関数はバッファー内で直接 (インプレースで) 復号を行います。

サービスは、StartService 関数からこの関数を呼び出してはなりません。サービスが StartService 関数からこの関数を呼び出すと、デッドロックが発生し、サービスが応答しなくなる可能性があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)