Share via


CRYPT_SIGN_MESSAGE_PARA 結構 (wincrypt.h)

CRYPT_SIGN_MESSAGE_PARA 結構包含使用指定簽署憑證內容簽署訊息的資訊。

語法

typedef struct _CRYPT_SIGN_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  PCCERT_CONTEXT             pSigningCert;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cMsgCert;
  PCCERT_CONTEXT             *rgpMsgCert;
  DWORD                      cMsgCrl;
  PCCRL_CONTEXT              *rgpMsgCrl;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;

成員

cbSize

這個結構的大小,以位元組為單位。

dwMsgEncodingType

使用的編碼類型。 將憑證和 訊息編碼類型 與位 OR 作業結合在一起,一律可以接受,如下列範例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

目前定義的編碼類型如下:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

pSigningCert

要用於簽署之 CERT_CONTEXT 指標。

必須設定CERT_KEY_PROV_INFO_PROP_ID或CERT_KEY_CONTEXT_PROP_ID屬性,內容才能提供 私鑰的存取權。

HashAlgorithm

CRYPT_ALGORITHM_IDENTIFIER包含用來哈希要簽署之數據的哈希演算法。

pvHashAuxInfo

目前未使用,且必須設定為 NULL

cMsgCert

CERT_CONTEXT 結構的 rgpMsgCert 陣列中的元素數目。 如果設定為零,則簽署的訊息中未包含任何憑證。

rgpMsgCert

要包含在已簽署訊息中 之結構之CERT_CONTEXT 指標數位。 如果要包含 pSigningCert ,其指標必須位於 rgpMsgCert 陣列中。

cMsgCrl

CRL_CONTEXT結構的指標rgpMsgCrl 陣列中的元素數目。 如果設定為零,則簽署訊息中不會包含 任何CRL_CONTEXT 結構。

rgpMsgCrl

要包含在已簽署訊息 中之結構之CRL_CONTEXT 指標數位。

cAuthAttr

rgAuthAttr 陣列中的元素數目。 如果 rgAuthAttr 中沒有已驗證的屬性,此成員會設定為零。

rgAuthAttr

CRYPT_ATTRIBUTE結構的指標陣列,每個指標都會保存已驗證的屬性資訊。 如果有已驗證的屬性存在,PKCS #9 標準會指示必須至少有兩個屬性存在、內容類型 物件標識碼 (OID) ,以及訊息本身的哈希。 系統會自動新增這些屬性。

cUnauthAttr

rgUnauthAttr 陣列中的元素數目。 如果 rgUnauthAttr 中沒有未驗證的屬性,則此成員為零。

rgUnauthAttr

CRYPT_ATTRIBUTE結構之指標的陣列,每個結構都會保存未經驗證的屬性資訊。 未驗證的屬性可用來包含 反簽署,以及其他用途。

dwFlags

通常為零。 如果編碼的輸出必須是外部密碼編譯訊息的CMSG_SIGNED 內部內容 ,例如CMSG_ENVELOPED訊息,則必須設定CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG。 如果未設定,訊息將會編碼為 CMSG_DATA的內部內容類型

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG可以設定為將非數據 內部內容 封裝成 OCTET STRING。 CRYPT_MESSAGE_KEYID_SIGNER_FLAG可以設定為其密鑰標識碼來識別簽署者,而不是其簽發者和序號。

CRYPT_MESSAGE_SILENT_KEYSET_FLAG可以設定為隱藏 CSP 的任何 UI。 如需CRYPT_SILENT旗標的詳細資訊,請參閱 CryptAcquireContext

dwInnerContentType

通常為零。 如果要簽署的輸入是另一個密碼編譯訊息的編碼輸出,請將 設定為輸入訊息的編碼類型。

HashEncryptionAlgorithm

CRYPT_ALGORITHM_IDENTIFIER。 如果存在且沒有 NULL,則會使用它,而不是簽署者的憑證 PublicKeyInfo.Algorithm 成員。 請注意,針對 RSA,哈希加密演算法通常與公鑰演演算法相同。 對於 DSA,哈希加密演算法通常是 DSS 簽章演算法。 只有在定義CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS時,才能使用此成員。

pvHashEncryptionAuxInfo

目前未使用 ,且必須設定為 NULL。 只有在定義CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS時,才能使用此成員。

備註

HashEncryptionAlgorithmpvHashEncryptionAuxInfo 成員只能在定義CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS時才使用。

規格需求

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

另請參閱

CERT_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage