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

时间:2012-12-04 06:38:50

标签: c# .net

我要求在程序集中有一个限制,以便只有使用给定键签名的程序集才能使用它。我没经验,但据我所知,签署是为了帮助确定谁创建了程序集。因此,仅签署此程序集不足以确保所有调用程序集都已签名。反之亦然,即如果一个程序集已签名,它所依赖的所有程序集都应该签名(也许是同一个键)。什么是满足要求的方式?

1 个答案:

答案 0 :(得分:4)

您可以使用PublisherIdentityPermissionAttribute

如果将PublisherIdentityPermissionAttribute应用于MyClass类,则只有mycert.cer证书签名的程序集中的类才能使用您的类。您需要放置SecurityAction.Demand

  

调用堆栈中较高的所有呼叫者都必须已被授予   当前权限对象

指定的权限

使用

[PublisherIdentityPermission(SecurityAction.Demand, CertFile = "mycert.cer")]
public class MyClass 

您也可以在装配级别使用它来保护整个装配(但是除非您在配置中设置<NetFx40_LegacySecurityPolicy enabled="true"/>,否则装配级安全性将无法工作,除非.Net 4.0。