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。 如果將會呼叫 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
DWORD 的指標,指定 pbEncoded 緩衝區的大小,以位元組為單位。 當函式傳回時, DWORD 會包含儲存或儲存在緩衝區中的位元元組數目。
傳回值
如果函式成功,則傳回值為非零 (TRUE) 。
如果函式失敗,則傳回值為零, (FALSE) 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 錯誤可以從呼叫 CryptMsgOpenToEncode 和 CryptMsgUpdate 傳播。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wincrypt.h |
程式庫 | Crypt32.lib |
Dll | Crypt32.dll |