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時,才能使用此成員。
備註
HashEncryptionAlgorithm 和 pvHashEncryptionAuxInfo 成員只能在定義CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS時才使用。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | wincrypt.h |