private void Common(StrongNameMembershipCondition snmc) { Assert.IsFalse(snmc.Check(allEmpty), "Check(allEmpty)"); Assert.IsFalse(snmc.Check(hostOther), "Check(hostOther)"); Assert.IsFalse(snmc.Check(assemblyEcmaCorlibVersion), "Check(assemblyEcmaCorlibVersion)"); Assert.IsFalse(snmc.Check(assemblyEcmaVersion), "Check(assemblyEcmaVersion)"); Assert.IsFalse(snmc.Check(assemblyMsSystemSecurityVersion), "Check(assemblyMsSystemSecurityVersion)"); Assert.IsFalse(snmc.Check(assemblyMsVersion), "Check(assemblyMsVersion)"); Assert.IsFalse(snmc.Check(assemblyOther), "Check(assemblyOther)"); StrongNameMembershipCondition copy = (StrongNameMembershipCondition)snmc.Copy(); Assert.IsTrue(copy.Equals(snmc), "copy.Equals (snmc)"); Assert.IsTrue(snmc.Equals(copy), "snmc.Equals (copy)"); copy.Name = null; copy.Version = null; bool original = ((snmc.Name == null) && (snmc.Version == null)); Assert.AreEqual(original, copy.Equals(snmc), "bad.Equals (snmc)"); Assert.AreEqual(original, snmc.Equals(copy), "snmc.Equals (bad)"); SecurityElement se = snmc.ToXml(); copy.FromXml(se); Assert.AreEqual(snmc.PublicKey, copy.PublicKey, "PublicKey"); Assert.AreEqual(snmc.Name, copy.Name, "Name"); Assert.AreEqual(snmc.Version, copy.Version, "Version"); Assert.AreEqual(snmc.GetHashCode(), copy.GetHashCode(), "GetHashCode ()"); Assert.AreEqual(snmc.ToString(), copy.ToString(), "ToString ()"); Assert.IsTrue(copy.Equals(snmc), "xml.Equals (snmc)"); Assert.IsTrue(snmc.Equals(copy), "snmc.Equals (xml)"); }
public static void StrongNameMembershipConditionCallMethods() { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition(new StrongNamePublicKeyBlob(new byte[1]), "test", new Version(0, 1)); bool check = snmc.Check(new Evidence()); IMembershipCondition obj = snmc.Copy(); check = snmc.Equals(new object()); int hash = snmc.GetHashCode(); string str = snmc.ToString(); SecurityElement se = new SecurityElement(""); PolicyLevel pl = (PolicyLevel)FormatterServices.GetUninitializedObject(typeof(PolicyLevel)); snmc.FromXml(se); snmc.FromXml(se, pl); se = snmc.ToXml(); se = snmc.ToXml(pl); }
public static PermissionSet GetPermissionSet(this Assembly assembly) { // GAC assemblies are always fully trusted if (assembly.GlobalAssemblyCache) { return(new PermissionSet(PermissionState.Unrestricted)); } // If there is a HostSecurityManager it gets to determine the grant set of the assembly before // considering any AppDomain state else if (AppDomain.CurrentDomain.DomainManager != null && AppDomain.CurrentDomain.DomainManager.HostSecurityManager != null && (AppDomain.CurrentDomain.DomainManager.HostSecurityManager.Flags & HostSecurityManagerOptions.HostResolvePolicy) == HostSecurityManagerOptions.HostResolvePolicy) { return(AppDomain.CurrentDomain.DomainManager.HostSecurityManager.ResolvePolicy(assembly.Evidence).Copy()); } // If we're in a homogenous domain then this assembly is either granted the sandbox grant set or // full trust if it is on the trusted assemblies list. else if (AppDomain.CurrentDomain.IsHomogenous()) { Evidence assemblyEvidence = assembly.Evidence; // Check to see if the assembly matches an entry on the strong name list foreach (StrongName fullTrustAssembly in AppDomain.CurrentDomain.ApplicationTrust.GetFullTrustAssemblies()) { StrongNameMembershipCondition mc = fullTrustAssembly.CreateMembershipCondition(); if (mc.Check(assemblyEvidence)) { return(new PermissionSet(PermissionState.Unrestricted)); } } // If there was no match on the strong name list, then the assembly is granted the sandbox // permission set. return(AppDomain.CurrentDomain.ApplicationTrust.DefaultGrantSet.PermissionSet.Copy()); } // Otherwise the grant set is simply obtained by resoilving policy on the assembly else { return(SecurityManager.ResolvePolicy(assembly.Evidence)); } }