我正在考虑使用 XML dsig 进行基本应用许可。该应用程序是本机 Windows 代码(没有 .net)。我可以轻松地使用 .net 离线创建 dsig,但我想在本机 C++ 中验证它。从我目前发现的情况来看,MSXML V5 可以完成这项工作,但不能使用,而且 V6 删除了对 dsigs 的支持。
那么如何轻松验证由.net 代码在本机 C++ 中生成的 XML dsig?
我正在考虑使用 XML dsig 进行基本应用许可。该应用程序是本机 Windows 代码(没有 .net)。我可以轻松地使用 .net 离线创建 dsig,但我想在本机 C++ 中验证它。从我目前发现的情况来看,MSXML V5 可以完成这项工作,但不能使用,而且 V6 删除了对 dsigs 的支持。
那么如何轻松验证由.net 代码在本机 C++ 中生成的 XML dsig?
不幸的是,XML 签名仅随 MSXML 5.0 提供。问题是 XML-DSig 实际上并不被认为是 MSXML 的一个特性。最好将 MSXML 5.0 视为一个分支 - MSXML 的奇怪的继兄弟 - 而不是该系列的一部分。他们最好把它命名为除了 MSXML 之外的东西,因为它引起了所有的混乱。它几乎没有任何文档,也没有办法分发它。甚至微软的 XML 团队也说“不要使用它”。
但这一切对你没有帮助。真正的问题是XML 数字签名是棘手的事情。MSXML 5.0 只实现了它,因为 MS Office 完全控制了 XML;因此,可以获得一致的结果。无法保证从 .NET 生成的 XML 签名可与 MSXML 5.0 互操作。您甚至可能会得到不一致的结果,有时它会起作用,而有时却不起作用。
您需要做的是编写托管 C++ 代码,您可以在其中使用最初生成签名的相同 .NET 功能。它不是本机 C++,但它会给你带来一致的结果。唯一的另一种选择是找到一个可以在 .NET 和 C++ 中使用的库,它可以生成数字签名。