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");
		}
Exemplo n.º 2
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();
 }
		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");
		}
Exemplo n.º 4
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");
		}
		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");
		}
Exemplo n.º 6
0
        internal Evidence(char[] buffer)
        {
            int position = 0;

            while (position < buffer.Length)
            {
                switch (buffer[position++])
                {
                case BuiltInEvidenceHelper.idApplicationDirectory:
                {
                    IBuiltInEvidence ad = new ApplicationDirectory();
                    position = ad.InitFromBuffer(buffer, position);
                    AddAssembly(ad);
                    break;
                }

                case BuiltInEvidenceHelper.idPublisher:
                {
                    IBuiltInEvidence p = new Publisher();
                    position = p.InitFromBuffer(buffer, position);
                    AddHost(p);
                    break;
                }

                case BuiltInEvidenceHelper.idStrongName:
                {
                    IBuiltInEvidence sn = new StrongName();
                    position = sn.InitFromBuffer(buffer, position);
                    AddHost(sn);
                    break;
                }

                case BuiltInEvidenceHelper.idZone:
                {
                    IBuiltInEvidence z = new Zone();
                    position = z.InitFromBuffer(buffer, position);
                    AddHost(z);
                    break;
                }

                case BuiltInEvidenceHelper.idUrl:
                {
                    IBuiltInEvidence u = new Url();
                    position = u.InitFromBuffer(buffer, position);
                    AddHost(u);
                    break;
                }

                case BuiltInEvidenceHelper.idSite:
                {
                    IBuiltInEvidence s = new Site();
                    position = s.InitFromBuffer(buffer, position);
                    AddHost(s);
                    break;
                }

                case BuiltInEvidenceHelper.idPermissionRequestEvidence:
                {
                    IBuiltInEvidence pre = new PermissionRequestEvidence();
                    position = pre.InitFromBuffer(buffer, position);
                    AddHost(pre);
                    break;
                }

                case BuiltInEvidenceHelper.idHash:
                {
                    IBuiltInEvidence h = new Hash();
                    position = h.InitFromBuffer(buffer, position);
                    AddHost(h);
                    break;
                }

                default:
                    throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup"));
                } // switch
            }     // while
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
        internal Evidence(char[] buffer)
        {
            int position = 0;
            while (position < buffer.Length)
            {
                switch (buffer[position++])
                {
                    case BuiltInEvidenceHelper.idApplicationDirectory:
                    {
                        IBuiltInEvidence ad = new ApplicationDirectory();
                        position = ad.InitFromBuffer(buffer, position);
                        AddAssembly(ad);
                        break;
                    }
                    case BuiltInEvidenceHelper.idStrongName:
                    {
                        IBuiltInEvidence sn = new StrongName();
                        position = sn.InitFromBuffer(buffer, position);
                        AddHost(sn);
                        break;
                    }
                    case BuiltInEvidenceHelper.idZone:
                    {
                        IBuiltInEvidence z = new Zone();
                        position = z.InitFromBuffer(buffer, position);
                        AddHost(z);
                        break;
                    }
                    case BuiltInEvidenceHelper.idUrl:
                    {
                        IBuiltInEvidence u = new Url();
                        position = u.InitFromBuffer(buffer, position);
                        AddHost(u);
                        break;
                    }
                    case BuiltInEvidenceHelper.idSite:
                    {
                        IBuiltInEvidence s = new Site();
                        position = s.InitFromBuffer(buffer, position);
                        AddHost(s);
                        break;
                    }
                    case BuiltInEvidenceHelper.idPermissionRequestEvidence:
                    {
                        IBuiltInEvidence pre = new PermissionRequestEvidence();
                        position = pre.InitFromBuffer(buffer, position);
                        AddHost(pre);
                        break;
                    }
                    default:
                        throw new SerializationException(Environment.GetResourceString("Serialization_UnableToFixup"));

                } // switch
            } // while
        }