CryptSignMessage 関数 (wincrypt.h)

CryptSignMessage 関数は、指定されたコンテンツのハッシュを作成し、ハッシュに署名してから、元のメッセージ コンテンツと署名済みハッシュの両方をエンコードします。

構文

BOOL CryptSignMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA pSignPara,
  [in]      BOOL                     fDetachedSignature,
  [in]      DWORD                    cToBeSigned,
  [in]      const BYTE * []          rgpbToBeSigned,
  [in]      DWORD []                 rgcbToBeSigned,
  [out]     BYTE                     *pbSignedBlob,
  [in, out] DWORD                    *pcbSignedBlob
);

パラメーター

[in] pSignPara

シグネチャ パラメーター CRYPT_SIGN_MESSAGE_PARA 含む構造体へのポインター。

[in] fDetachedSignature

これが デタッチされた署名である場合は TRUE。 それ以外の場合は FALSE。 このパラメーターが TRUE に設定されている場合、署名されたハッシュのみが pbSignedBlob でエンコードされます。 それ以外の場合は、 rgpbToBeSigned と符号付きハッシュの両方がエンコードされます。

[in] cToBeSigned

rgpbToBeSigned および rgcbToBeSigned 内の配列要素の数。 fDetachedSignatureTRUE に設定されていない限り、このパラメーターは 1 に設定する必要があります。

[in] rgpbToBeSigned

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

[in] rgcbToBeSigned

rgpbToBeSigned で指されるコンテンツ バッファーのサイズの配列 (バイト単位)。

[out] pbSignedBlob

fDetachedSignatureTRUE の場合は、エンコードされた署名付きハッシュを受信するバッファーへのポインター、または fDetachedSignatureFALSE の場合はエンコードされたコンテンツと署名済みハッシュの両方へのポインター。

このパラメーターは、メモリ割り当てのためにこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。

[in, out] pcbSignedBlob

pbSignedBlob バッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻るとき、この変数には、署名されたメッセージとエンコードされたメッセージのサイズ (バイト単位) が含まれます。

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

戻り値

関数が成功した場合、戻り値は 0 以外 (TRUE) になります

関数が失敗した場合、戻り値は 0 (FALSE) になります

拡張エラー情報については、 GetLastError を呼び出します。

GetLastError 関数によって最も一般的に返されるエラー コードを次に示します。

リターン コード 説明
ERROR_MORE_DATA
pbSignedBlob パラメーターで指定されたバッファーが、返されるデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATAコードを設定し、必要なバッファー サイズをバイト単位で pcbSignedBlob が指す変数に格納します。
E_INVALIDARG
メッセージ エンコードの種類が無効です。 現在、PKCS_7_ASN_ENCODINGのみがサポートされています。 *pSignParacbSize が無効です。
CRYPT_E_NO_KEY_PROPERTY
*pSignParapSigningCert には、CERT_KEY_PROV_INFO_PROP_ID または CERT_KEY_CONTEXT_PROP_ID プロパティがありません。
 
メモ 呼び出された関数 CryptCreateHashCryptHashDataおよび CryptSignHash からのエラーがこの関数に反映される可能性があります。
 
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。

要件

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

こちらもご覧ください

CryptSignAndEncryptMessage

CryptVerifyMessageSignature

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