CryptMsgEncodeAndSignCTL 関数 (wincrypt.h)
CryptMsgEncodeAndSignCTL 関数は、CTL をエンコードし、エンコードされた CTL を含む署名付きメッセージを作成します。
この関数は、最初に pCtlInfo が指す CTL をエンコードしてから 、CryptMsgSignCTL を 呼び出してエンコードされたメッセージに署名します。
構文
BOOL CryptMsgEncodeAndSignCTL(
[in] DWORD dwMsgEncodingType,
[in] PCTL_INFO pCtlInfo,
[in] PCMSG_SIGNED_ENCODE_INFO pSignInfo,
[in] DWORD dwFlags,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
パラメーター
[in] dwMsgEncodingType
使用するエンコードの種類を指定します。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
現在定義されているエンコードの種類は次のとおりです。
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pCtlInfo
エンコードおよび署名する CTL を含む CTL_INFO 構造体へのポインター。
[in] pSignInfo
CMSG_SIGNER_ENCODE_INFO構造体の配列を含むCMSG_SIGNED_ENCODE_INFO構造体へのポインター。
構造体の cbSize メンバーが構造体のサイズに設定され、他のすべてのメンバーが 0 に設定されている場合、署名者なしでメッセージをエンコードできます。
[in] dwFlags
CMSG_ENCODE_SORTED_CTL_FLAGは、エンコードの前に CTL エントリを並べ替える場合に設定されます。 このフラグは、 CertFindSubjectInSortedCTL 関数または CertEnumSubjectInSortedCTL 関数が呼び出される場合に設定されます。
CMSG_ENCODE_SORTED_CTL_FLAGが設定され、TrustedSubjects の識別子が MD5 や SHA1 などのハッシュである場合、CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAGが設定されます。
CMS_PKCS7が定義されている場合、 dwFlags を CMSG_CMS_ENCAPSULATED_CTL_FLAG に設定して、CMS 互換 V3 SignedData メッセージをエンコードできます。
[out] pbEncoded
作成されたエンコードされた署名付きメッセージを受信するバッファーへのポインター。
このパラメーターは、メモリ割り当て目的でこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「不明な 長さのデータの取得」を参照してください。
[in, out] pcbEncoded
pbEncoded バッファーのサイズをバイト単位で指定する DWORD へのポインター。 関数が戻ると、 DWORD には、格納されているバイト数、またはバッファーに格納されるバイト数が含まれます。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) になります。
関数が失敗した場合、戻り値は 0 (FALSE) になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。 エラーは、 CryptMsgOpenToEncode と CryptMsgUpdate への呼び出しから反映できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |