验证 CTL
若要使互操作者更难将虚假 证书信任列表 (CTL) 替换为现有证书信任列表,请在每次使用 CTL 时验证 CTL 上的签名。 请勿使用不包含受信任签名的 CTL。
验证 CTL 签名
- 打开包含所需 CTL 的 证书存储 。
- 获取 CTL CTL_CONTEXT 的句柄。 这可以通过调用任何返回 CTL_CONTEXT句柄的函数(如 CertFindCTLInStore)来完成。
- 调用 CryptMsgGetAndVerifySigner,将 hCryptMsg 参数中步骤 2 中检索到的CTL_CONTEXT传递给证书存储的句柄,该存储包含 rghSignerStore 参数中 CTL 的受信任源的证书,以及 dwFlags 参数中的CMSG_TRUSTED_SIGNER_FLAG。 如果函数返回 TRUE,则签名已验证,并在 ppSigner 参数中返回指向 CTL 签名者PCCERT_CONTEXT的指针。