+#endif
+ // note: in 2.0 *all* permissions (including identity permissions) support unrestricted
+ internal static bool IsGranted (Assembly a, IPermission perm)
+ {
+ PermissionSet granted = a.GrantedPermissionSet;\r
+ if ((granted != null) && !granted.IsUnrestricted ()) {\r
+ CodeAccessPermission grant = (CodeAccessPermission) granted.GetPermission (perm.GetType ());\r
+ if (!perm.IsSubsetOf (grant)) {\r
+ return false;\r
+ }\r
+ }\r
+\r
+ PermissionSet denied = a.DeniedPermissionSet;\r
+ if ((denied != null) && !denied.IsEmpty ()) {\r
+ if (denied.IsUnrestricted ())\r
+ return false;\r
+ CodeAccessPermission refuse = (CodeAccessPermission) a.DeniedPermissionSet.GetPermission (perm.GetType ());\r
+ if ((refuse != null) && perm.IsSubsetOf (refuse))\r
+ return false;\r
+ }\r
+ return true;\r
+ }
+
+ internal static IPermission CheckPermissionSet (Assembly a, PermissionSet ps, bool noncas)