我们开发了一个 Win32 程序 (=host),它允许第 3 方编写插件。由于某些插件包含有价值的代码(例如,高质量视频标量),第 3 方希望限制他们的插件只能与我们的主机程序一起使用。
我们的想法是使用 Microsoft Authenticode 技术对主机进行签名。然后,要求第 3 方执行以下算法来检查主机。(预计第 3 方对算法进行足够的代码混淆)。
使用 WinVerifyTrust() API 来验证主机的证书是否有效(= 未撤销、未篡改等)。
验证主体是我公司的证明。
问题是关于步骤(2)。第三方不能简单地检查指纹或序列号,因为主机的数字证书将在证书到期日之后更新。
我的想法是检查部分主题的专有名称,特别是“国家(C)”和“通用名称(CN)”,假设在美国没有公司名称冲突。我们不应该检查其他属性,例如州和城市,因为我们的公司可能会搬家——事实上,一年前我们已经从一个城市搬到了另一个城市。
问题:这是实现目标的好方法吗?