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 成員設定為 結構的大小,且所有其他成員都設定為零,則訊息可以編碼而不帶正負號。

[in] dwFlags

如果 CTL 專案在編碼之前要排序,就會設定CMSG_ENCODE_SORTED_CTL_FLAG。 如果將會呼叫 CertFindSubjectInSortedCTLCertEnumSubjectInSortedCTL 函式,就會設定此旗標。

如果已設定 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

DWORD 的指標,指定 pbEncoded 緩衝區的大小,以位元組為單位。 當函式傳回時, DWORD 會包含儲存或儲存在緩衝區中的位元元組數目。

傳回值

如果函式成功,則傳回值為非零 (TRUE) 。

如果函式失敗,則傳回值為零, (FALSE) 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 錯誤可以從呼叫 CryptMsgOpenToEncodeCryptMsgUpdate 傳播。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CMSG_SIGNED_ENCODE_INFO

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

CryptMsgOpenToEncode

CryptMsgSignCTL

使用 CCL 的驗證函式