C#使用代码签署程序集

时间:2014-01-30 18:00:36

标签: c# .net reflection .net-assembly assembly-signing

我正在尝试创建自己的工具,仅使用C#代码使用StrongNames对程序集进行签名。

我已经能够使用System.Security.Cryptography中的.Net RSA类生成签名和密钥。我在这个阶段的问题是将签名和公钥添加到程序集清单。

这是否可以使用代码而不是使用某些工具? 请注意,我想在Visual Studio之外(在运行时)使用.Net Cryptography类来签署我的程序集来生成密钥对。

我尝试使用System.Reflection中的AssemblyName类的方法添加信息,但我无法提交更改(它有一个SetPublicKey方法)。

基本上我的应用程序将执行的操作类似于sn.exe,非常重要的是我能够将签名和密钥添加到清单中,以便其他强名称程序集可以引用我的。

如果涉及到它,我怎样才能读取sn.exe工具创建的私钥和公钥,我试过但不确定.snk文件使用哪种编码?如果我无法使用代码对程序集进行签名,那么我将使用sn.exe,但出于我自己的原因,我想从密钥对文件中读取密钥并将其与RSA类一起使用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

Mono项目提供了自己的sn工具,它完全用C#构建,依赖于Mono.Security.dll(也适用于Windows)。所有这些都是麻省理工学院许可下的开源。