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"); }
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"); }
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"); }
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 }
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; }
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 }