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

BCryptHashDataFn

コールバック

シグネチャ

NTSTATUS BCryptHashDataFn(
    BCRYPT_HASH_HANDLE hHash,
    BYTE* pbInput,
    DWORD cbInput,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hHashBCRYPT_HASH_HANDLE操作の実行に使用するハッシュまたは MAC オブジェクトのハンドルです。このハンドルは、BCryptCreateHash 関数または BCryptDuplicateHash 関数を呼び出して取得します。
pbInputBYTE*処理するデータを格納したバッファーへのポインターです。cbInput パラメーターには、このバッファー内のバイト数を指定します。この関数は、このバッファーの内容を変更しません。
cbInputDWORDpbInput バッファーのサイズ (バイト単位) です。
dwFlagsDWORDこの関数の動作を変更するフラグのセットです。現在定義されているフラグはないため、このパラメーターはゼロにする必要があります。

公式ドキュメント

BCryptHashData 関数は、進行中の暗号ハッシュまたは メッセージ認証コード (MAC) の計算にデータを追加します。

戻り値

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

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

戻り値 説明
STATUS_SUCCESS 関数は成功しました。
STATUS_INVALID_PARAMETER 1 つ以上のパラメーターが無効です。
STATUS_INVALID_HANDLE hHash パラメーターのハンドルが無効です。BCryptFinishHash 関数を呼び出した後は、そのハンドルを再利用できません。ただし、BCRYPT_HASH_REUSABLE_FLAG フラグを指定して作成されたハンドルは例外です。

解説(Remarks)

複数のバッファーをハッシュまたは MAC にまとめるには、この関数を複数回呼び出し、そのつど異なるバッファーを渡します。これは、それらのバッファーを 1 つのバッファーに連結して 1 回だけハッシュまたは MAC を計算するのと機能的には同等ですが、データがメモリ上で自然に連続していない場合には、このほうが便利なことが多くあります。

ハッシュまたは MAC の値を取得するには、BCryptFinishHash 関数を呼び出します。BCryptFinishHash 関数を呼び出した後は、hHash ハンドルを再利用できません。ただし、BCRYPT_HASH_REUSABLE_FLAG フラグを指定して作成されたハンドルは例外です。

サポートされているアルゴリズムプロバイダーを使用する場合、BCryptHashData はユーザーモードとカーネルモードのどちらからでも呼び出せます。カーネルモードの呼び出し元は、PASSIVE_LEVEL IRQL と DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hAlgorithm パラメーターに指定するハンドルは BCRYPT_PROV_DISPATCH フラグを使用して開かれている必要があり、BCryptHashData 関数に渡すポインターはすべてページング不可 (またはロックされた) メモリを参照している必要があります。

この関数をカーネルモードで呼び出すには、Driver Development Kit (DDK) に含まれる Cng.lib を使用します。Windows Server 2008 および Windows Vista: この関数をカーネルモードで呼び出すには、Ksecdd.lib を使用します。

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