验证 CTL

若要使互操作者更难将虚假 证书信任列表 (CTL) 替换为现有证书信任列表,请在每次使用 CTL 时验证 CTL 上的签名。 请勿使用不包含受信任签名的 CTL。

验证 CTL 签名

  1. 打开包含所需 CTL 的 证书存储
  2. 获取 CTL CTL_CONTEXT 的句柄。 这可以通过调用任何返回 CTL_CONTEXT句柄的函数(如 CertFindCTLInStore)来完成。
  3. 调用 CryptMsgGetAndVerifySigner,将 hCryptMsg 参数中步骤 2 中检索到的CTL_CONTEXT传递给证书存储的句柄,该存储包含 rghSignerStore 参数中 CTL 的受信任源的证书,以及 dwFlags 参数中的CMSG_TRUSTED_SIGNER_FLAG。 如果函数返回 TRUE,则签名已验证,并在 ppSigner 参数中返回指向 CTL 签名者PCCERT_CONTEXT的指针。