共用方式為


CryptMsgSignCTL 函式 (wincrypt.h)

CryptMsgSignCTL 函式會建立包含編碼 CTL 的已簽署訊息。

語法

BOOL CryptMsgSignCTL(
  [in]      DWORD                    dwMsgEncodingType,
  [in]      BYTE                     *pbCtlContent,
  [in]      DWORD                    cbCtlContent,
  [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] pbCtlContent

編碼 CTL_INFO 可以是 CTL_CONTEXT 結構的成員,也可以使用 CryptEncodeObject 函式來建立。

[in] cbCtlContent

pbCtlContent 所指向內容的大小,以位元組為單位。

[in] pSignInfo

包含CMSG_SIGNER_ENCODE_INFO結構陣列之CMSG_SIGNED_ENCODE_INFO結構的指標。

如果結構的 cbSize 成員設定為結構的大小,而且所有其他成員都設定為零,則訊息可以編碼而不需要簽署者。

[in] dwFlags

如果已定義CMS_PKCS7,可以設定為 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

CryptMsgEncodeAndSignCTL

CryptMsgOpenToEncode

使用 CTL 的驗證函式