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

NCryptEncryptFn

コールバック

シグネチャ

HRESULT NCryptEncryptFn(
    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_NO_PADDING_FLAG を指定した場合、NCryptEncrypt 関数は先頭の N ビットのみを暗号化します。N は hKey パラメーターとして渡されたキーの長さです。先頭 N ビットより後のビットは無視されます。

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 エラーコードを設定します。

公式ドキュメント

NCryptEncrypt 関数は、データのブロックを暗号化します。

戻り値

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

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

戻り値 説明
ERROR_SUCCESS
関数は成功しました。
NTE_BAD_FLAGS
dwFlags パラメーターに無効な値が含まれています。
NTE_BAD_KEY_STATE
hKey パラメーターで指定されたキーが完成していないか、不完全です。
NTE_BUFFER_TOO_SMALL
cbOutput パラメーターで指定されたサイズでは、暗号化済みデータを格納するのに十分ではありません。
NTE_INVALID_HANDLE
hKey パラメーターが無効です。
NTE_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。

解説(Remarks)

pbInput パラメーターと pbOutput パラメーターは、同じバッファーを指すことができます。この場合、この関数は暗号化をその場で (in place) 実行します。暗号化済みデータのサイズが暗号化前のデータのサイズより大きくなる可能性があるため、バッファーは暗号化済みデータを格納できる十分な大きさが必要です。

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

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