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