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);
        }
Exemplo n.º 3
0
        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));
            }
        }