我要求在程序集中有一个限制,以便只有使用给定密钥签名的程序集才能使用它。我没有经验,但我理解的是签名是为了帮助确定谁创建了程序集。因此,仅对此程序集进行签名不足以确保对所有调用程序集进行签名。可能反之亦然,即如果一个程序集被签名,它所依赖的所有程序集都应该被签名(也许通过相同的键)。满足要求的方法是什么?
您可以使用 PublisherIdentityPermissionAttribute。
如果将 PublisherIdentityPermissionAttribute 应用于 MyClass 类,则只有由mycert.cer
证书签名的程序集中的类才能使用您的类。你需要放SecurityAction.Demand
调用堆栈中较高的所有调用方都必须已授予 当前权限对象指定的权限
像
[PublisherIdentityPermission(SecurityAction.Demand, CertFile = "mycert.cer")]
public class MyClass
还可以在程序集级别使用它来保护整个程序集(但是,除非在配置中设置<NetFx40_LegacySecurityPolicy enabled="true"/>
,否则程序集级别安全性从 .Net 4.0 开始不起作用)。