次の方法で共有


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 を呼び出します。 エラーは、 CryptMsgOpenToEncodeCryptMsgUpdate への呼び出しから反映できます。

要件

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

こちらもご覧ください

CMSG_SIGNED_ENCODE_INFO

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

CryptMsgOpenToEncode

CryptMsgSignCTL

CCTL を使用した検証関数