限制未签名程序集使用的程序集

6

我需要在程序集中实现限制,只有使用给定密钥签名的程序集才能使用它。虽然我不是很有经验,但我了解到签名的目的是为了帮助确定程序集的创建者。因此,仅签署此程序集应该无法确保所有调用程序集都已签名。相反的可能更为准确,即如果一个程序集被签名,则它所依赖的所有程序集都应该由相同的密钥签名。那么满足需求的方法是什么呢?


1
你是不是指像这个 http://blogs.msdn.com/b/shawnfa/archive/2004/06/07/150378.aspx 的东西? - V4Vendetta
1个回答

4
你可以使用 PublisherIdentityPermissionAttribute
如果你将 PublisherIdentityPermissionAttribute 应用于 MyClass 类,则只有由 mycert.cer 证书签名的程序集中的类才能使用你的类。你需要添加 SecurityAction.Demand。
引用如下:
所有在调用堆栈中高于当前权限对象所指定的权限的调用方都必须已被授予该权限。
使用方法如下:
[PublisherIdentityPermission(SecurityAction.Demand, CertFile = "mycert.cer")]
public class MyClass 

您还可以将其用于汇编级别,以保护整个汇编(但自 .Net 4.0 起,汇编级别安全性将不起作用,除非在配置中设置 <NetFx40_LegacySecurityPolicy enabled="true"/>)。


请不要仅仅回复一个链接。给出一些解释,并且提供一个使用示例,以便解决 OP 的问题。 - Rawling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接