C# 使用代码对程序集进行签名

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

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

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

这完全可以使用代码而不是使用某些工具吗? 请注意,我想在 Visual Studio 之外(在运行时)对我的程序集进行签名,仅使用 .Net 加密类来生成 key 对。

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

基本上我的应用程序将执行的操作与 sn.exe 类似,我能够将签名和 key 添加到 list 中非常重要,以便其他强命名程序集可以引用我的程序集。

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

任何帮助将不胜感激。

最佳答案

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

关于C# 使用代码对程序集进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464084/

相关文章:

c# - 适用于 Windows + C# 的短信网关

c# - 是否可以在 iframe 中加载 .ascx 页面

.NET 3.5 与 .NET 3.0

c# - .NET 应用程序是否需要 ret 指令?

c# - 在运行时将委托(delegate)转换为 Action<T> 或 Func<T>

c# - 需要登录才能观看视频 asp.net

c# - 不使用派生类中的方法

c# - Simple Injector 使用元数据注册多种类型的相同接口(interface)

java - 如何访问一个类的所有数据字段?

java - 是否可以在Java中创建参数化类的实例?