共用方式為


CryptMsgGetAndVerifySigner 函式 (wincrypt.h)

CryptMsgGetAndVerifySigner 函式會驗證密碼編譯訊息的簽章。

語法

BOOL CryptMsgGetAndVerifySigner(
  [in]                HCRYPTMSG      hCryptMsg,
  [in]                DWORD          cSignerStore,
  [in, optional]      HCERTSTORE     *rghSignerStore,
  [in]                DWORD          dwFlags,
  [out, optional]     PCCERT_CONTEXT *ppSigner,
  [in, out, optional] DWORD          *pdwSignerIndex
);

參數

[in] hCryptMsg

密碼編譯訊息的句柄。

[in] cSignerStore

rghSignerStore 陣列中的存放區數目。

[in, optional] rghSignerStore

可搜尋簽署者憑證的證書存儲句柄陣列。

[in] dwFlags

表示函式的特定用法。

意義
CMSG_TRUSTED_SIGNER_FLAG
rghSignerStore 中的存放區會假設為受信任,而且是唯一搜尋的存放區,以尋找對應到簽署者簽發者和序號的憑證。 否則,您可以提供簽署者存放區來補充訊息的憑證存放區。 如果找到簽署者憑證,則會使用其公鑰來驗證訊息簽章。
CMSG_SIGNER_ONLY_FLAG
傳回簽署者,而不執行簽章驗證。
CMSG_USE_SIGNER_INDEX_FLAG
只會傳回 *pdwSignerIndex 所指定的簽署者。 否則,請逐一查看所有簽署者,直到簽章經過驗證或沒有任何簽署者為止。

[out, optional] ppSigner

如果已驗證簽章, 會更新ppSigner 以指向簽署者的 憑證內容。 當您完成使用憑證時,請呼叫 CertFreeCertificateContext 函式來釋放內容。 如果應用程式不需要簽署者的憑證,這個參數可以是 NULL

[in, out, optional] pdwSignerIndex

如果已驗證簽章, pdwSigner 會更新為指向簽署者陣列中登入者的索引。 如果應用程式不需要簽署者的索引,這個參數可以是 NULL

傳回值

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

如果函式失敗,則傳回值為零, (FALSE) 。 如需擴充的錯誤資訊,請呼叫 GetLastError

規格需求

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

另請參閱

CERT_CONTEXT

CTL_CONTEXT

CryptMsgControl

CryptMsgOpenToDecode

使用 CTL 的驗證函式