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

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

使用代码而不使用某些工具完全有可能吗?
请注意,我只想使用.Net密码学类在Visual Studio外部(在运行时)对我的程序集进行签名,以生成密钥对。

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

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

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

任何帮助将不胜感激。

最佳答案

Mono项目提供了它自己的sn工具,该工具完全是用C#构建的,并且依赖于Mono.Security.dll(在Windows上也可以使用)。所有这些都是在MIT许可下开源的。

09-10 05:25
查看更多