次の方法で共有


CryptHashMessage 関数 (wincrypt.h)

CryptHashMessage 関数は、メッセージのハッシュを作成します。

構文

BOOL CryptHashMessage(
  [in]                PCRYPT_HASH_MESSAGE_PARA pHashPara,
  [in]                BOOL                     fDetachedHash,
  [in]                DWORD                    cToBeHashed,
  [in]                const BYTE * []          rgpbToBeHashed,
  [in]                DWORD []                 rgcbToBeHashed,
  [out]               BYTE                     *pbHashedBlob,
  [in, out]           DWORD                    *pcbHashedBlob,
  [out, optional]     BYTE                     *pbComputedHash,
  [in, out, optional] DWORD                    *pcbComputedHash
);

パラメーター

[in] pHashPara

ハッシュ パラメーターを含む CRYPT_HASH_MESSAGE_PARA 構造体へのポインター。

[in] fDetachedHash

このパラメーターが TRUE に設定されている場合、 pbHashedBlob では pbComputedHash のみがエンコード されます。 それ以外の場合は、 rgpbToBeHashedpbComputedHash の 両方がエンコードされます。

[in] cToBeHashed

rgpbToBeHashed および rgcbToBeHashed 内の配列要素の数。 fDetachedHashTRUE に設定されていない限り、このパラメーターは 1 つしか指定できません。

[in] rgpbToBeHashed

ハッシュする内容を含むバッファーへのポインターの配列。

[in] rgcbToBeHashed

rgpbToBeHashed が指すバッファーのサイズ (バイト単位) の配列。

[out] pbHashedBlob

送信用にエンコードされたハッシュされたメッセージを受信するバッファーへのポインター。

このパラメーターは、追加の処理にハッシュされたメッセージが必要ない場合、またはメモリ割り当てのためにハッシュされたメッセージのサイズを設定する場合は NULL にすることができます 。 このパラメーターが NULL の場合、ハッシュされたメッセージは返されません。 詳細については、「 不明な長さのデータの取得」を参照してください。

[in, out] pcbHashedBlob

pbHashedBlob パラメーターによって指されるバッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻るとき、この変数には、 pbHashedBlob にコピーされた復号化されたメッセージのサイズ (バイト単位) が含まれます。 このパラメーターは DWORD のアドレスである必要があり、 NULL ではないか、バッファーの長さは返されません。

メモ 返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも少し小さくすることができます。 入力では、バッファー サイズは通常、可能な最大の出力データがバッファーに収まるように十分な大きさで指定されます。 出力時に、このパラメーターが指す変数が更新され、バッファーにコピーされたデータの実際のサイズが反映されます。
 

[out, optional] pbComputedHash

新しく作成されたハッシュ値を受け取るバッファーへのポインター。 このパラメーターは、新しく作成されたハッシュが追加の処理に必要ない場合、またはメモリ割り当てのためにハッシュのサイズを設定する場合は NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。

[in, out, optional] pcbComputedHash

pbComputedHash パラメーターによって指されるバッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻ると、この DWORD には、 pbComputedHash にコピーされた新しく作成されたハッシュのサイズ (バイト単位) が含まれます。

メモ 返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも少し小さくすることができます。 入力では、バッファー サイズは通常、可能な最大の出力データがバッファーに収まるように十分な大きさで指定されます。 出力時に、このパラメーターが指す変数が更新され、バッファーにコピーされたデータの実際のサイズが反映されます。
 

戻り値

関数が成功した場合、関数は 0 以外 (TRUE) を返します。

関数が失敗した場合は、0 (FALSE) を返します。 拡張エラー情報については、 GetLastError を呼び出します。

メモ 呼び出された関数 CryptCreateHashCryptHashData、および CryptGetHashParam からのエラーがこの関数に伝達される可能性があります。
 
GetLastError 関数は、最も頻繁に次のエラー コードを返します。
リターン コード 説明
E_INVALIDARG
メッセージ エンコードの種類が無効です。 現在、PKCS_7_ASN_ENCODINGのみがサポートされています。 *pHashParacbSize が無効です。
ERROR_MORE_DATA
pbHashedBlob パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATAコードを設定し、必要なバッファー サイズをバイト単位で pbHashedBlob が指す変数に格納します。
 

関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。

要件

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

こちらもご覧ください

CryptVerifyDetachedMessageHash

CryptVerifyMessageHash

簡略化されたメッセージ関数