crypt32.dll CryptMsgControl api 的签名验证问题

问题描述 投票:0回答:1

我们有一个使用 AS2 协议传输 EDI 文档的应用程序,当我们将数据发送给我们的业务合作伙伴之一并尝试验证业务合作伙伴返回给我们的 MDN 签名时,我们无法验证该 MDN 的签名商业伙伴回到我们身边。

我们正在使用 CertGetSubjectCertificateFromStore api 从 Windows 证书存储中读取证书,并使用以下代码验证签名。从以下代码返回错误代码 - CRYPT_E_SIGNER_NOT_FOUND

if (CryptMsgControl(m_hCryptMsg, 0, CMSG_CTRL_VERIFY_SIGNATURE, pRet->pCertInfo))
{
     bSigVerified = true;
     dwError = 0;
}
else
{
     dwError = GetLastError();
}

我们正在传输文件的所有其他合作伙伴都采用相同的解决方案。 我们已与合作伙伴核实,但到目前为止尚未找到任何解决方案,如果有人在这里提供帮助,我真的很感激,如果需要更多信息,请告诉我。

c++ winapi visual-c++ cryptography mfc
1个回答
0
投票

@Jeaninez 合作伙伴证书是自签名的,因此没有证书链,它链接到自身。 有没有办法在此类中启用调试,以便我们可以知道它失败的原因。 出于所有意图和目的,这应该可行,但对我们来说这只是一个“黑匣子”,并且不清楚我们下一步应该采取什么措施来排除故障 - 或者此代码中是否存在错误。

© www.soinside.com 2019 - 2024. All rights reserved.