예제 #1
0
        public void IsSubset_Null()
        {
            SecurityPermission sp = new SecurityPermission(PermissionState.None);

            Assert.IsTrue(sp.IsSubsetOf(null), "NoFlags");
            foreach (SecurityPermissionFlag spf in AllFlagsExceptNoFlags)
            {
                sp.Flags = spf;
                Assert.IsFalse(sp.IsSubsetOf(null), spf.ToString());
            }
        }
예제 #2
0
        public void IsSubset_Self()
        {
            SecurityPermission sp = new SecurityPermission(PermissionState.None);

            foreach (SecurityPermissionFlag spf in AllFlags)
            {
                sp.Flags = spf;
                SecurityPermission result = (SecurityPermission)sp.Intersect(sp);
                Assert.IsTrue(sp.IsSubsetOf(sp), spf.ToString());
            }
        }
예제 #3
0
        public void IsSubset_Unrestricted()
        {
            // IsSubset with unrestricted
            // a. source (this) is unrestricted -> target is never a subset
            SecurityPermission sp1 = new SecurityPermission(PermissionState.Unrestricted);
            SecurityPermission sp2 = new SecurityPermission(PermissionState.None);

            foreach (SecurityPermissionFlag spf in AllFlagsExceptAllFlags)
            {
                sp2.Flags = spf;
                Assert.IsFalse(sp1.IsSubsetOf(sp2), "target " + spf.ToString());
            }
            // exception of AllFlags
            sp2.Flags = SecurityPermissionFlag.AllFlags;
            Assert.IsTrue(sp1.IsSubsetOf(sp2), "target AllFlags");
            // b. destination (target) is unrestricted -> target is always a subset
            foreach (SecurityPermissionFlag spf in AllFlags)
            {
                sp2.Flags = spf;
                Assert.IsTrue(sp2.IsSubsetOf(sp1), "source " + spf.ToString());
            }
        }
예제 #4
0
        public static void SecurityPermissionCallMethods()
        {
            SecurityPermission sp  = new SecurityPermission(new Permissions.PermissionState());
            SecurityPermission sp2 = new SecurityPermission(new Permissions.SecurityPermissionFlag());
            IPermission        ip  = sp.Copy();
            IPermission        ip2 = sp.Intersect(ip);
            bool testbool          = sp.IsSubsetOf(ip);

            testbool = sp.IsUnrestricted();
            ip2      = sp.Union(ip);
            SecurityElement se = new SecurityElement("");

            sp.FromXml(se);
            se = sp.ToXml();
        }
예제 #5
0
        public static PermissionSet ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, out PermissionSet denied)
        {
            PermissionSet resolved = ResolvePolicy(evidence);

            // do we have the minimal permission requested by the assembly ?
            if ((reqdPset != null) && !reqdPset.IsSubsetOf(resolved))
            {
                throw new PolicyException(Locale.GetText(
                                              "Policy doesn't grant the minimal permissions required to execute the assembly."));
            }

            // do we check for execution rights ?
            if (CheckExecutionRights)
            {
                bool execute = false;
                // an empty permissionset doesn't include Execution
                if (resolved != null)
                {
                    // unless we have "Full Trust"...
                    if (resolved.IsUnrestricted())
                    {
                        execute = true;
                    }
                    else
                    {
                        // ... we need to find a SecurityPermission
                        IPermission security = resolved.GetPermission(typeof(SecurityPermission));
                        execute = _execution.IsSubsetOf(security);
                    }
                }

                if (!execute)
                {
                    throw new PolicyException(Locale.GetText(
                                                  "Policy doesn't grant the right to execute the assembly."));
                }
            }

            denied = denyPset;
            return(resolved);
        }
예제 #6
0
 public static void SecurityPermissionCallMethods()
 {
     SecurityPermission sp = new SecurityPermission(new Permissions.PermissionState());
     SecurityPermission sp2 = new SecurityPermission(new Permissions.SecurityPermissionFlag());
     IPermission ip = sp.Copy();
     IPermission ip2 = sp.Intersect(ip);
     bool testbool = sp.IsSubsetOf(ip);
     testbool = sp.IsUnrestricted();
     ip2 = sp.Union(ip);
     SecurityElement se = new SecurityElement("");
     sp.FromXml(se);
     se = sp.ToXml();
 }