Tag: 程序集签名

我应该如何在msbuild脚本中引用sn.exe?

我需要在构建完成后重新签署我的程序集(我已经完成了其他一些工作),所以我首先添加一个名为C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe的任务C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe 。 这必须适用于其他开发人员/环境,所以我希望我可以从该文件夹中复制sn.exe和sn.exe.config并将其存储在我们的代码存储库中,这样我就可以从已知的代码库中调用它的通用版本地点。 sn.exe在sdk目录之外独立崩溃,所以我想知道如何引用它而不知道它将在哪个路径下。 不同的人有不同的环境(x86 vs x64,不同的安装目录,不同的版本),所以我希望能够轻松地引用该工具的最新版本(或者任何版本)。 看起来像一个简单的工具,或许有另一种方法用另一个工具/命令/ msbuild任务签署程序集? 任何帮助,将不胜感激。

如何以编程方式validation程序集是否使用特定证书进行签名?

我的方案是我们有一个程序(exe),如果在特定文件夹中找到它将启动其他程序。 我想确保它只启动使用我们的公司证书(Verisign批准等)签署的计划。 从本质上讲,它只会启动与自身具有相同证书的程序。 我不想发送证书本身。 我一直在搜索网络和系统名称空间,并没有找到一个明确的例子,从文件中读取证书数据并validation它,并可以检查另一个文件。 我发现的最接近的是Signtool,并且在单独的exe中进行此validation是一点点。 我知道强命名的东西不会有帮助,因为数字签名的文件是不同的,如此处有用的解释(http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly- dl-is-strong-named /)SO中的其他一些示例显示了原始数据的加密和validation,但没有以某种方式将它打包在一起的程序集。 有什么想法或建议吗?

签署.NET程序集

数字签名与强命名程序集有什么关系。 我读到一个强名称的程序集有公钥和数字签名。 来自维基百科的文章“Assembly(CLI)” : “签署程序集涉及对程序集的重要部分进行散列,然后使用私钥加密散列。签名的散列与公钥一起存储在程序集中。公钥将解密签名的散列。当CLR加载一个强命名的程序集,它将从程序集生成一个哈希值,然后将其与解密的哈希值进行比较。如果比较成功则表示文件中的公钥(以及公钥标记)与私钥相关联用于签署程序集。这意味着程序集中的公钥是程序集发布者的公钥,因此欺骗攻击被挫败。“ 以上信息准确吗? 它没有任何数字签名的参考。 我找不到MSDN页面,解释如何签署程序集,如何validation签名以及如何消除黑客攻击的可能性。 想了解更多这些。