コード例 #1
0
        public void PermissionRequestEvidence_GetRequiredSize()
        {
            PermissionRequestEvidence pre = new PermissionRequestEvidence(null, null, null);

            Assert.AreEqual(3, GetRequiredSize(pre, true), "(null,null,null).GetRequiredSize-true");
            Assert.AreEqual(1, GetRequiredSize(pre, false), "(null,null,null).GetRequiredSize-false");

            PermissionSet ps = new PermissionSet(PermissionState.None);

            pre = new PermissionRequestEvidence(ps, null, null);
            Assert.AreEqual(75, GetRequiredSize(pre, true), "(none,null,null).GetRequiredSize-true");
            Assert.AreEqual(70, GetRequiredSize(pre, false), "(none,null,null).GetRequiredSize-false");

            pre = new PermissionRequestEvidence(ps, ps, null);
            Assert.AreEqual(147, GetRequiredSize(pre, true), "(none,none,null).GetRequiredSize-true");
            Assert.AreEqual(139, GetRequiredSize(pre, false), "(none,none,null).GetRequiredSize-false");

            pre = new PermissionRequestEvidence(ps, ps, ps);
            Assert.AreEqual(219, GetRequiredSize(pre, true), "(none,none,none).GetRequiredSize-true");
            Assert.AreEqual(208, GetRequiredSize(pre, false), "(none,none,none).GetRequiredSize-false");

            ps  = new PermissionSet(PermissionState.Unrestricted);
            pre = new PermissionRequestEvidence(ps, ps, ps);
            Assert.AreEqual(282, GetRequiredSize(pre, true), "(unrestricted,unrestricted,unrestricted).GetRequiredSize-true");
            Assert.AreEqual(271, GetRequiredSize(pre, false), "(unrestricted,unrestricted,unrestricted).GetRequiredSize-false");
        }
コード例 #2
0
		public void NullConstructor ()
		{
			PermissionRequestEvidence pre = new PermissionRequestEvidence (null, null, null);
			Assert.IsNull (pre.RequestedPermissions, "Requested");
			Assert.IsNull (pre.OptionalPermissions, "Optional");
			Assert.IsNull (pre.DeniedPermissions, "Denied");
			string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\"/>\r\n");
			Assert.AreEqual (expected, pre.ToString (), "ToString");
		}
コード例 #3
0
        public static void PermissionRequestEvidenceCallMethods()
        {
            PermissionSet             ps  = new PermissionSet(new PermissionState());
            PermissionRequestEvidence pre = new PermissionRequestEvidence(ps, ps, ps);
            PermissionRequestEvidence obj = pre.Copy();
            string          str           = ps.ToString();
            SecurityElement se            = new SecurityElement("");

            ps.FromXml(se);
            se = ps.ToXml();
        }
コード例 #4
0
		public void Constructor2 () 
		{
			PermissionSet ps = new PermissionSet (PermissionState.Unrestricted);
			PermissionRequestEvidence pre = new PermissionRequestEvidence (ps, ps, ps);
			Assert.IsTrue (pre.RequestedPermissions.IsUnrestricted (), "Requested");
			Assert.IsTrue (pre.OptionalPermissions.IsUnrestricted (), "Optional");
			Assert.IsTrue (pre.DeniedPermissions.IsUnrestricted (), "Denied");
			Assert.IsFalse (Object.ReferenceEquals (ps, pre.RequestedPermissions), "!ReferenceEquals-RequestedPermissions");
			Assert.IsFalse (Object.ReferenceEquals (ps, pre.OptionalPermissions), "!ReferenceEquals-OptionalPermissions");
			Assert.IsFalse (Object.ReferenceEquals (ps, pre.DeniedPermissions), "!ReferenceEquals-DeniedPermissions");
			string expected = AdjustNewLine ("<System.Security.Policy.PermissionRequestEvidence version=\"1\">\r\n   <Request>\r\n      <PermissionSet class=\"System.Security.PermissionSet\"\r\n                     version=\"1\"\r\n                     Unrestricted=\"true\"/>\r\n   </Request>\r\n   <Optional>\r\n      <PermissionSet class=\"System.Security.PermissionSet\"\r\n                     version=\"1\"\r\n                     Unrestricted=\"true\"/>\r\n   </Optional>\r\n   <Denied>\r\n      <PermissionSet class=\"System.Security.PermissionSet\"\r\n                     version=\"1\"\r\n                     Unrestricted=\"true\"/>\r\n   </Denied>\r\n</System.Security.Policy.PermissionRequestEvidence>\r\n");
			Assert.AreEqual (expected, pre.ToString (), "ToString");
		}
コード例 #5
0
		public void CopiesButNotReadOnly ()
		{
			PermissionSet ps = new PermissionSet (PermissionState.None);
			PermissionRequestEvidence pre = new PermissionRequestEvidence (ps, ps, ps);
			ps.AddPermission (new SecurityPermission (SecurityPermissionFlag.Execution));
			Assert.AreEqual (1, ps.Count, "ps.Count");
			// not a reference
			Assert.AreEqual (0, pre.RequestedPermissions.Count, "Requested.Count");
			Assert.AreEqual (0, pre.OptionalPermissions.Count, "Optional.Count");
			Assert.AreEqual (0, pre.DeniedPermissions.Count, "Denied.Count");
			// and we can still add permissions
			pre.RequestedPermissions.AddPermission (new SecurityPermission (SecurityPermissionFlag.Execution));
			Assert.AreEqual (1, pre.RequestedPermissions.Count, "Requested.Count-2");
			Assert.AreEqual (0, pre.OptionalPermissions.Count, "Optional.Count-2");
			Assert.AreEqual (0, pre.DeniedPermissions.Count, "Denied.Count-2");
		}
コード例 #6
0
        // generates the security permissions for the compiled plugin
        protected Evidence getEvidenceForCompiledAssembly()
        {
            // TODO
            PermissionSet requested = new PermissionSet(PermissionState.None);
            PermissionSet optional  = new PermissionSet(PermissionState.None);
            PermissionSet denied    = new PermissionSet(PermissionState.None);

            FileIOPermission fileIO = new FileIOPermission(PermissionState.None);

            fileIO.AddPathList(FileIOPermissionAccess.Read, "/home/xplasil/test");
            requested.AddPermission(fileIO);

            SecurityPermission sec = new SecurityPermission(SecurityPermissionFlag.Execution);

            requested.AddPermission(sec);

            PermissionRequestEvidence permRequest = new PermissionRequestEvidence(requested, optional, denied);
            Evidence res = new Evidence();

            res.AddAssembly(permRequest);
            return(res);
        }
コード例 #7
0
ファイル: policymanager.cs プロジェクト: ydunk/masters
        internal static QuickCacheEntryType GenerateQuickCache(PolicyLevel level)
        {
            QuickCacheEntryType[] ExecutionMap = new QuickCacheEntryType[]
            { QuickCacheEntryType.ExecutionZoneMyComputer,
              QuickCacheEntryType.ExecutionZoneIntranet,
              QuickCacheEntryType.ExecutionZoneInternet,
              QuickCacheEntryType.ExecutionZoneTrusted,
              QuickCacheEntryType.ExecutionZoneUntrusted };

            QuickCacheEntryType[] UnmanagedMap = new QuickCacheEntryType[]
            { QuickCacheEntryType.UnmanagedZoneMyComputer,
              QuickCacheEntryType.UnmanagedZoneIntranet,
              QuickCacheEntryType.UnmanagedZoneInternet,
              QuickCacheEntryType.UnmanagedZoneTrusted,
              QuickCacheEntryType.UnmanagedZoneUntrusted };

            QuickCacheEntryType[] RequestSkipVerificationMap = new QuickCacheEntryType[]
            { QuickCacheEntryType.RequestSkipVerificationZoneMyComputer,
              QuickCacheEntryType.RequestSkipVerificationZoneIntranet,
              QuickCacheEntryType.RequestSkipVerificationZoneInternet,
              QuickCacheEntryType.RequestSkipVerificationZoneTrusted,
              QuickCacheEntryType.RequestSkipVerificationZoneUntrusted };

            QuickCacheEntryType[] SkipVerificationMap = new QuickCacheEntryType[]
            { QuickCacheEntryType.SkipVerificationZoneMyComputer,
              QuickCacheEntryType.SkipVerificationZoneIntranet,
              QuickCacheEntryType.SkipVerificationZoneInternet,
              QuickCacheEntryType.SkipVerificationZoneTrusted,
              QuickCacheEntryType.SkipVerificationZoneUntrusted };

            QuickCacheEntryType[] FullTrustMap = new QuickCacheEntryType[]
            { QuickCacheEntryType.FullTrustZoneMyComputer,
              QuickCacheEntryType.FullTrustZoneIntranet,
              QuickCacheEntryType.FullTrustZoneInternet,
              QuickCacheEntryType.FullTrustZoneTrusted,
              QuickCacheEntryType.FullTrustZoneUntrusted };

            QuickCacheEntryType accumulator = (QuickCacheEntryType)0;

            SecurityPermission execPerm      = new SecurityPermission(SecurityPermissionFlag.Execution);
            SecurityPermission unmanagedPerm = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
            SecurityPermission skipVerifPerm = new SecurityPermission(SecurityPermissionFlag.SkipVerification);

            Evidence noEvidence = new Evidence();

            PermissionSet policy = null;

            try
            {
                policy = level.Resolve(noEvidence).PermissionSet;

                if (policy.Contains(execPerm))
                {
                    accumulator |= QuickCacheEntryType.ExecutionAll;
                }

                if (policy.Contains(unmanagedPerm))
                {
                    accumulator |= QuickCacheEntryType.UnmanagedAll;
                }

                if (policy.Contains(skipVerifPerm))
                {
                    accumulator |= QuickCacheEntryType.SkipVerificationAll;
                }

                if (policy.IsUnrestricted())
                {
                    accumulator |= QuickCacheEntryType.FullTrustAll;
                }
            }
            catch (PolicyException)
            {
            }

            PermissionSet permSet = new PermissionSet(PermissionState.None);

            permSet.AddPermission(skipVerifPerm);
            PermissionRequestEvidence permRequest = new PermissionRequestEvidence(permSet, null, null);

            try
            {
                noEvidence.AddHost(permRequest);

                policy = level.Resolve(noEvidence).PermissionSet;

                if (policy.Contains(skipVerifPerm))
                {
                    accumulator |= QuickCacheEntryType.RequestSkipVerificationAll;
                }
            }
            catch (PolicyException)
            {
            }

            Array zones = Enum.GetValues(typeof(SecurityZone));

            for (int i = 0; i < zones.Length; ++i)
            {
                if (((SecurityZone)zones.GetValue(i)) == SecurityZone.NoZone)
                {
                    continue;
                }

                Evidence zoneEvidence = new Evidence();
                zoneEvidence.AddHost(new Zone((SecurityZone)zones.GetValue(i)));

                PermissionSet zonePolicy = null;

                try
                {
                    zonePolicy = level.Resolve(zoneEvidence).PermissionSet;

                    if (zonePolicy.Contains(execPerm))
                    {
                        accumulator |= ExecutionMap[i];
                    }

                    if (zonePolicy.Contains(unmanagedPerm))
                    {
                        accumulator |= UnmanagedMap[i];
                    }

                    if (zonePolicy.Contains(skipVerifPerm))
                    {
                        accumulator |= SkipVerificationMap[i];
                    }

                    if (zonePolicy.IsUnrestricted())
                    {
                        accumulator |= FullTrustMap[i];
                    }
                }
                catch (PolicyException)
                {
                }

                zoneEvidence.AddHost(permRequest);

                try
                {
                    zonePolicy = level.Resolve(zoneEvidence).PermissionSet;

                    if (zonePolicy.Contains(skipVerifPerm))
                    {
                        accumulator |= RequestSkipVerificationMap[i];
                    }
                }
                catch (PolicyException)
                {
                }
            }

            return(accumulator);
        }