BCryptFinishHashFn
コールバックシグネチャ
NTSTATUS BCryptFinishHashFn(
BCRYPT_HASH_HANDLE hHash,
BYTE* pbOutput,
DWORD cbOutput,
DWORD dwFlags
);パラメーター
| フィールド | 型 | 説明 | ||||
|---|---|---|---|---|---|---|
| hHash | BCRYPT_HASH_HANDLE | 操作の実行に使用するハッシュオブジェクトまたは MAC オブジェクトのハンドルです。このハンドルは、BCryptCreateHash 関数または BCryptDuplicateHash 関数を呼び出して取得します。この関数を呼び出した後は、BCRYPT_HASH_REUSABLE_FLAG フラグを指定して作成した場合を除き、hHash ハンドルを再利用できません。 | ||||
| pbOutput | BYTE* | ハッシュ値または MAC 値を受け取るバッファーへのポインターです。cbOutput パラメーターには、このバッファーのサイズを指定します。 | ||||
| cbOutput | DWORD | pbOutput バッファーのサイズ (バイト単位) です。ハッシュ値または MAC 値のサイズが固定の場合、このサイズはその値のサイズと正確に一致する必要があります。 サイズは、BCryptGetProperty 関数を呼び出して BCRYPT_HASH_LENGTH プロパティを取得することで得られます。これにより、指定したアルゴリズムのハッシュ値または MAC 値のサイズが分かります。SHAKE256 などの拡張可能出力関数 (XOF) は可変の出力サイズをサポートすることがありますが、XOF の安全性を完全に維持する既定のサイズを BCRYPT_HASH_LENGTH で照会できます。 | ||||
| dwFlags | DWORD | この関数の動作を変更するフラグのセットです。 0 を指定するか、次の値の 1 つ以上を組み合わせて指定できます。
|
公式ドキュメント
BCryptFinishHash 関数は、BCryptHashData への以前の呼び出しで蓄積されたデータについて、ハッシュ値またはメッセージ認証コード (MAC) の値を取得します。
戻り値
関数の成功または失敗を示すステータスコードを返します。
返される可能性のあるコードには、次のものが含まれます (これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| STATUS_SUCCESS | 関数は成功しました。 |
| STATUS_INVALID_HANDLE | hHash パラメーターのハッシュハンドルが無効です。 |
| STATUS_INVALID_PARAMETER | 1 つ以上のパラメーターが無効です。これには、cbOutput がハッシュまたは MAC の固定出力サイズと一致しない場合も含まれます。 |
解説(Remarks)
サポートされているアルゴリズムプロバイダーを使用する場合、BCryptFinishHash はユーザーモードとカーネルモードのどちらからでも呼び出せます。カーネルモードの呼び出し元は、PASSIVE_LEVEL IRQL と DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hHash パラメーターに渡すハンドルは、BCRYPT_PROV_DISPATCH フラグを使用して開かれたプロバイダーが返したアルゴリズムハンドルから派生したものである必要があり、BCryptFinishHash 関数に渡すポインターはすべて、ページング不可 (またはロックされた) メモリを参照する必要があります。
この関数をカーネルモードで呼び出すには、Driver Development Kit (DDK) に含まれる Cng.lib を使用します。Windows Server 2008 および Windows Vista: この関数をカーネルモードで呼び出すには、Ksecdd.lib を使用します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)