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 内の配列要素の数。 fDetachedSignature が TRUE に設定されていない限り、このパラメーターは 1 に設定する必要があります。
[in] rgpbToBeSigned
署名する内容を含むバッファーへのポインターの配列。
[in] rgcbToBeSigned
rgpbToBeSigned で指されるコンテンツ バッファーのサイズの配列 (バイト単位)。
[out] pbSignedBlob
fDetachedSignature が TRUE の場合は、エンコードされた署名付きハッシュを受信するバッファーへのポインター、または fDetachedSignature が FALSE の場合はエンコードされたコンテンツと署名済みハッシュの両方へのポインター。
このパラメーターは、メモリ割り当てのためにこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。
[in, out] pcbSignedBlob
pbSignedBlob バッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻るとき、この変数には、署名されたメッセージとエンコードされたメッセージのサイズ (バイト単位) が含まれます。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) になります。
関数が失敗した場合、戻り値は 0 (FALSE) になります。
拡張エラー情報については、 GetLastError を呼び出します。
GetLastError 関数によって最も一般的に返されるエラー コードを次に示します。
リターン コード | 説明 |
---|---|
|
pbSignedBlob パラメーターで指定されたバッファーが、返されるデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATAコードを設定し、必要なバッファー サイズをバイト単位で pcbSignedBlob が指す変数に格納します。 |
|
メッセージ エンコードの種類が無効です。 現在、PKCS_7_ASN_ENCODINGのみがサポートされています。 *pSignPara の cbSize が無効です。 |
|
*pSignPara の pSigningCert には、CERT_KEY_PROV_INFO_PROP_ID または CERT_KEY_CONTEXT_PROP_ID プロパティがありません。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |