コード例 #1
0
        public void Check()
        {
            ApplicationDirectoryMembershipCondition ad = new ApplicationDirectoryMembershipCondition();
            Evidence e = null;

            Assert.IsFalse(ad.Check(e), "Check (null)");
            e = new Evidence();
            Assert.IsFalse(ad.Check(e), "Check (empty)");
            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsFalse(ad.Check(e), "Check (zone)");

            string codebase           = Assembly.GetExecutingAssembly().CodeBase;
            Url    u                  = new Url(codebase);
            ApplicationDirectory adir = new ApplicationDirectory(codebase);

            e.AddHost(u);
            Assert.IsFalse(ad.Check(e), "Check (url-host)");               // not enough
            e.AddAssembly(adir);
            Assert.IsFalse(ad.Check(e), "Check (url-host+adir-assembly)");

            e = new Evidence();
            e.AddHost(adir);
            Assert.IsFalse(ad.Check(e), "Check (adir-host)");               // not enough
            e.AddAssembly(u);
            Assert.IsFalse(ad.Check(e), "Check (url-assembly+adir-host)");

            e = new Evidence();
            e.AddHost(u);
            e.AddHost(adir);
            Assert.IsTrue(ad.Check(e), "Check (url+adir host)");               // both!!
        }
コード例 #2
0
        private static Evidence GetDefaultDomainIdentity(String strUrlOfAppOrigin)
        {
            Evidence    evidence = new Evidence();
            bool        hasZone  = false;
            IEnumerator enumerator;

            if (strUrlOfAppOrigin == null || strUrlOfAppOrigin.Length < 1)
            {
                strUrlOfAppOrigin = "http://localhost/ASP_Plus";
            }

            enumerator = AppDomain.CurrentDomain.Evidence.GetHostEnumerator();
            while (enumerator.MoveNext())
            {
                if (enumerator.Current is Zone)
                {
                    hasZone = true;
                }
                evidence.AddHost(enumerator.Current);
            }

            enumerator = AppDomain.CurrentDomain.Evidence.GetAssemblyEnumerator();
            while (enumerator.MoveNext())
            {
                evidence.AddAssembly(enumerator.Current);
            }

            evidence.AddHost(new Url(strUrlOfAppOrigin));
            if (!hasZone)
            {
                evidence.AddHost(new Zone(SecurityZone.MyComputer));
            }

            return(evidence);
        }
コード例 #3
0
        private Evidence CreateAssemblyEvidence(object o)
        {
            Evidence e = new Evidence();

            e.AddAssembly(o);
            return(e);
        }
コード例 #4
0
        public void Check()
        {
            SiteMembershipCondition smc = new SiteMembershipCondition("*.go-mono.com");

            Evidence e = null;

            Assert.IsFalse(smc.Check(e), "Check(null)");
            e = new Evidence();
            Assert.IsFalse(smc.Check(e), "Check (empty)");
            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsFalse(smc.Check(e), "Check (zone)");

            Site s = new Site("*.go-mono.com");

            e.AddAssembly(s);
            Assert.IsFalse(smc.Check(e), "Check (site-assembly)");
            e.AddHost(s);
            Assert.IsTrue(smc.Check(e), "Check (site-host)");

            e = new Evidence();
            e.AddHost(new Site("www.go-mono.com"));
            Assert.IsTrue(smc.Check(e), "Check(+-)");

            e = new Evidence();
            e.AddHost(new Site("*.go-mono.org"));
            Assert.IsFalse(smc.Check(e), "Check(-)");
        }
コード例 #5
0
        private static Evidence GetDefaultDomainIdentity()
        {
            Evidence    evidence       = new Evidence();
            bool        zoneEvidence   = false;
            IEnumerator hostEnumerator = AppDomain.CurrentDomain.Evidence.GetHostEnumerator();

            while (hostEnumerator.MoveNext())
            {
                if (hostEnumerator.Current is Zone)
                {
                    zoneEvidence = true;
                }
                evidence.AddHost(hostEnumerator.Current);
            }
            hostEnumerator = AppDomain.CurrentDomain.Evidence.GetAssemblyEnumerator();
            while (hostEnumerator.MoveNext())
            {
                evidence.AddAssembly(hostEnumerator.Current);
            }
            if (!zoneEvidence)
            {
                evidence.AddHost(new Zone(SecurityZone.MyComputer));
            }
            return(evidence);
        }
コード例 #6
0
        private static PolicyLevel GetPolicyForUrl(String strUrl, int iZone, String strAppPath)
        {
            if (strUrl == null || strAppPath == null || strUrl.Length < 1 || strAppPath.Length < 1)
            {
                return(null);
            }

            Evidence       evidence = new Evidence();
            PolicyLevel    plReturn = PolicyLevel.CreateAppDomainLevel();
            PermissionSet  denyPS   = null;
            PermissionSet  ps;
            UnionCodeGroup allCG;
            UnionCodeGroup snCG;
            UnionCodeGroup cg;

            evidence.AddAssembly(new Url(strUrl));
            evidence.AddAssembly(new Zone((SecurityZone)iZone));

            ps = SecurityManager.ResolvePolicy(evidence,
                                               null, null, null, out denyPS);

            ps.RemovePermission(typeof(UrlIdentityPermission));
            ps.RemovePermission(typeof(ZoneIdentityPermission));


            allCG = new UnionCodeGroup(new AllMembershipCondition(),
                                       new PolicyStatement(new PermissionSet(PermissionState.None)));
            snCG = new UnionCodeGroup(
                new StrongNameMembershipCondition(new StrongNamePublicKeyBlob(s_microsoftPublicKey), null, null),
                new PolicyStatement(new PermissionSet(PermissionState.Unrestricted)));

            if (!strAppPath.EndsWith("/"))
            {
                strAppPath += "/";
            }
            strAppPath += "*";

            cg = new UnionCodeGroup(
                new UrlMembershipCondition(strAppPath),
                new PolicyStatement(ps));

            allCG.AddChild(snCG);
            allCG.AddChild(cg);
            plReturn.RootCodeGroup.AddChild(allCG);

            return(plReturn);
        }
コード例 #7
0
        public void RemoveType()
        {
            Evidence e = new Evidence();

            Assert.AreEqual(0, e.Count, "Count-Empty");
            e.AddAssembly(new object());
            e.AddHost(new object());
            Assert.AreEqual(2, e.Count, "Count");
            e.RemoveType(typeof(object));
            Assert.AreEqual(0, e.Count, "Count-RemoveType(object)");
        }
コード例 #8
0
        public void Clear()
        {
            Evidence e = new Evidence();

            Assert.AreEqual(0, e.Count, "Count-Empty");
            e.AddAssembly(new object());
            Assert.AreEqual(1, e.Count, "Count+Assembly");
            e.AddHost(new object());
            Assert.AreEqual(2, e.Count, "Count+Host");
            e.Clear();
            Assert.AreEqual(0, e.Count, "Count-Cleared");
        }
コード例 #9
0
        private void ResolveEvidenceAssembly(SecurityZone zone)
        {
            string   prefix = zone.ToString() + "-";
            Evidence e      = new Evidence();

            e.AddAssembly(new Zone(zone));
            PermissionSet ps = SecurityManager.ResolvePolicy(e);

            Assert.AreEqual(0, ps.Count, prefix + "Count");
            Assert.IsTrue(ps.IsEmpty(), prefix + "IsEmpty");
            Assert.IsFalse(ps.IsUnrestricted(), prefix + "IsUnrestricted");
        }
コード例 #10
0
        public void Equals_GetHashCode()
        {
            Evidence e1 = new Evidence();
            Evidence e2 = new Evidence();

            Assert.AreEqual(e1.GetHashCode(), e2.GetHashCode(), "GetHashCode-1");
            Assert.IsTrue(e1.Equals(e2), "e1.Equals(e2)");
            e1.AddAssembly(String.Empty);
            e2.AddAssembly(String.Empty);
            Assert.AreEqual(e1.GetHashCode(), e2.GetHashCode(), "GetHashCode-2");
            e1.AddHost(String.Empty);
            e2.AddHost(String.Empty);
            Assert.AreEqual(e1.GetHashCode(), e2.GetHashCode(), "GetHashCode-3");
            Assert.IsTrue(e2.Equals(e1), "e2.Equals(e1)");
        }
        public void Check()
        {
            GacMembershipCondition gac = new GacMembershipCondition();
            Evidence e = null;

            Assert.IsFalse(gac.Check(e), "Check (null)");
            e = new Evidence();
            Assert.IsFalse(gac.Check(e), "Check (empty)");
            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsFalse(gac.Check(e), "Check (zone)");
            GacInstalled g = new GacInstalled();

            e.AddAssembly(g);
            Assert.IsFalse(gac.Check(e), "Check (gac-assembly)");
            e.AddHost(g);
            Assert.IsTrue(gac.Check(e), "Check (gac-host)");
        }
コード例 #12
0
        public void Check()
        {
            PublisherMembershipCondition pmc = new PublisherMembershipCondition(x509);
            Publisher p = new Publisher(x509);

            Evidence e = null;

            Assert.IsFalse(pmc.Check(e), "Check (null)");
            e = new Evidence();
            Assert.IsFalse(pmc.Check(e), "Check (empty)");
            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsFalse(pmc.Check(e), "Check (zone)");
            e.AddAssembly(p);
            Assert.IsFalse(pmc.Check(e), "Check (x509-assembly)");

            e = new Evidence();
            e.AddHost(p);
            Assert.IsTrue(pmc.Check(e), "Check (x509-host)");
        }
コード例 #13
0
        public void Check()
        {
            AllMembershipCondition all = new AllMembershipCondition();
            Evidence e = null;

            Assert.IsTrue(all.Check(e), "Check (null)");
            e = new Evidence();
            Assert.IsTrue(all.Check(e), "Check (empty)");
            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsTrue(all.Check(e), "Check (zone)");
            Url u = new Url("http://www.go-mono.com/");

            e.AddAssembly(u);
            Assert.IsTrue(all.Check(e), "Check (all-assembly)");
            Site s = new Site("www.go-mono.com");

            e.AddHost(s);
            Assert.IsTrue(all.Check(e), "Check (all-host)");
        }
コード例 #14
0
        public void Check()
        {
            HashMembershipCondition hash = new HashMembershipCondition(md5, digestMd5);
            Evidence e = null;

            Assert.IsFalse(hash.Check(e), "Check (null)");
            e = new Evidence();
            Assert.IsFalse(hash.Check(e), "Check (empty)");
            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsFalse(hash.Check(e), "Check (zone)");
            e.AddAssembly(hashEvidence);
            Assert.IsFalse(hash.Check(e), "Check (hash-assembly)");

            e = new Evidence();
            e.AddHost(hashEvidence);
            Assert.IsTrue(hash.Check(e), "Check (MD5-host)");

            hash = new HashMembershipCondition(sha1, digestSha1);
            Assert.IsTrue(hash.Check(e), "Check (SHA1-host)");
        }
コード例 #15
0
    public static void Main()
    {
        // <Snippet1>
        // Set up the AppDomainSetup
        AppDomainSetup setup = new AppDomainSetup();

        setup.ApplicationBase   = "(some directory)";
        setup.ConfigurationFile = "(some file)";

        // Set up the Evidence
        Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
        Evidence evidence     = new Evidence(baseEvidence);

        evidence.AddAssembly("(some assembly)");
        evidence.AddHost("(some host)");

        // Create the AppDomain
        AppDomain newDomain = AppDomain.CreateDomain("newDomain", evidence, setup);
        // </Snippet1>
    }
コード例 #16
0
        public void Count()
        {
            object[] hostarray = { "host-1", "host-2", "host-3", "host-4" };
            object[] asmbarray = { "asmb-1", "asmb-2", "asmb-3", "asmb-4" };
            Evidence evidence  = new Evidence(hostarray, asmbarray);

            Assert.AreEqual(evidence.Count, 8);

            for (int i = 0; i < 100; i++)
            {
                if (0 == i % 2)
                {
                    evidence.AddHost(String.Format("host-{0}", i + 5));
                }
                else
                {
                    evidence.AddAssembly(String.Format("asmb-{0}", i + 5));
                }
                Assert.AreEqual(evidence.Count, 9 + i);
            }
        }
コード例 #17
0
        public void Check()
        {
            UrlMembershipCondition umc = new UrlMembershipCondition("http://www.example.com");

            Evidence e = null;

            Assert.IsFalse(umc.Check(e), "Check(null)");

            e = new Evidence();
            Assert.IsFalse(umc.Check(e), "Check(empty)");

            e.AddHost(new Zone(SecurityZone.MyComputer));
            Assert.IsFalse(umc.Check(e), "Check(zone)");

            Url u = new Url("http://www.example.com");

            e.AddAssembly(u);
            Assert.IsFalse(umc.Check(e), "Check(url-assembly)");
            e.AddHost(u);
            Assert.IsTrue(umc.Check(e), "Check(url-host)");
        }
コード例 #18
0
        public void AddAssembly()
        {
            Evidence evidence = new Evidence();

            object[] comparray = new object[100];
            string   obj;

            for (int i = 0; i < 100; i++)
            {
                obj          = String.Format("asmb-{0}", i + 1);
                comparray[i] = obj;
                evidence.AddAssembly(obj);
                Assert.AreEqual(evidence.Count, i + 1);
            }

            int index = 0;

            foreach (object compobj in evidence)
            {
                Assert.AreEqual(comparray[index++], compobj, "Comparison object does not equal evidence assembly object");
            }
        }
コード例 #19
0
        // 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);
        }
コード例 #20
0
        private void LoadAssemblyToSeppareteDomain(FileInfo info)
        {
            var domaininfo = new AppDomainSetup();

            domaininfo.ApplicationBase = domaininfo.PrivateBinPath = info.Directory.FullName;


            //var pset = new PermissionSet(PermissionState.None);
            //pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
            //pset.AddPermission(new UIPermission(PermissionState.Unrestricted));

            var evidence = new Evidence(AppDomain.CurrentDomain.Evidence);

            evidence.AddAssembly("(some assembly)");
            evidence.AddHost(new Zone(SecurityZone.MyComputer));
            var domain = AppDomain.CreateDomain(
                "MyDomain",
                evidence,
                domaininfo
                );


            // Write the application domain information to the console.
            //Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
            //Console.WriteLine("child domain: " + domain.FriendlyName);
            //Console.WriteLine();
            //Console.WriteLine("Application base is: " + domain.SetupInformation.ApplicationBase);
            //Console.WriteLine("Configuration file is: " + domain.SetupInformation.ConfigurationFile);

            // Unloads the application domain.
            //AppDomain.Unload(domain);
            var assemblyRef = AssemblyName.GetAssemblyName(info.FullName);

            domain.Load(assemblyRef);

            EventSpyCore.Domains.Add(domain);
        }
コード例 #21
0
        internal string GetTypeName(string assemblyPath, string progId, string classId)
        {
            string          retVal  = "";
            AssemblyManager manager = null;
            AppDomain       domain  = AppDomain.CreateDomain("SoapDomain");

            if (null != domain)
            {
                AssemblyName n            = typeof(AssemblyManager).Assembly.GetName();
                Evidence     baseEvidence = AppDomain.CurrentDomain.Evidence;
                Evidence     evidence     = new Evidence(baseEvidence);
                evidence.AddAssembly(n);
                ObjectHandle h = domain.CreateInstance(n.FullName,
                                                       typeof(AssemblyManager).FullName,
                                                       false,
                                                       0,
                                                       null,
                                                       null,
                                                       null,
                                                       null,
                                                       evidence);
                if (null != h)
                {
                    manager = (AssemblyManager)h.Unwrap();
                    if (classId.Length > 0)
                    {
                        retVal = manager.InternalGetTypeNameFromClassId(assemblyPath, classId);
                    }
                    else
                    {
                        retVal = manager.InternalGetTypeNameFromProgId(assemblyPath, progId);
                    }
                }
                AppDomain.Unload(domain);
            }
            return(retVal);
        }
コード例 #22
0
    public Evidence DemonstrateEvidenceMembers()
    {
        Evidence myEvidence = new Evidence();
        string sPubKeyBlob =	"00240000048000009400000006020000" + 
            "00240000525341310004000001000100" + 
            "19390E945A40FB5730204A25FA5DC4DA" + 
            "B18688B412CB0EDB87A6EFC50E2796C9" + 
            "B41AD3040A7E46E4A02516C598678636" + 
            "44A0F74C39B7AB9C38C01F10AF4A5752" + 
            "BFBCDF7E6DD826676AD031E7BCE63393" + 
            "495BAD2CA4BE03B529A73C95E5B06BE7" + 
            "35CA0F622C63E8F54171BD73E4C8F193" + 
            "CB2664163719CA41F8159B8AC88F8CD3";
        Byte[] pubkey = HexsToArray(sPubKeyBlob);

        // Create a strong name.
        StrongName mSN = new StrongName(new StrongNamePublicKeyBlob(pubkey), "SN01", new Version("0.0.0.0"));

        // Create assembly and host evidence.
        Console.WriteLine("Adding assembly evidence.");
        myEvidence.AddAssembly("SN01");
        myEvidence.AddAssembly(new Version("0.0.0.0"));
        myEvidence.AddAssembly(mSN);
        Console.WriteLine("Count of evidence items = " + myEvidence.Count.ToString());
        Url url = new Url("http://www.treyresearch.com");
        Console.WriteLine("Adding host evidence " + url.ToString());
        myEvidence.AddHost(url);
        PrintEvidence(myEvidence).ToString();
        Console.WriteLine("Count of evidence items = " + myEvidence.Count.ToString());
        Console.WriteLine("\nCopy the evidence to an array using CopyTo, then display the array.");
        object[] evidenceArray = new object[myEvidence.Count];
        myEvidence.CopyTo(evidenceArray, 0);
        foreach (object obj in evidenceArray)
        {
            Console.WriteLine(obj.ToString());
        }
        Console.WriteLine("\nDisplay the contents of the properties.");
        Console.WriteLine("Locked is the only property normally used by code.");
        Console.WriteLine("IsReadOnly, IsSynchronized, and SyncRoot properties are not normally used.");
        Console.WriteLine("\nThe default value for the Locked property = " + myEvidence.Locked.ToString());
		
        Console.WriteLine("\nGet the hashcode for the evidence.");
        Console.WriteLine("HashCode = " + myEvidence.GetHashCode().ToString());
        Console.WriteLine("\nGet the type for the evidence.");
        Console.WriteLine("Type = " + myEvidence.GetType().ToString());
        Console.WriteLine("\nMerge new evidence with the current evidence.");
        Object [] oa1 = {};
        Site site = new Site("www.wideworldimporters.com");
        Object [] oa2 = { url, site };
        Evidence newEvidence = new Evidence(oa1, oa2);
        myEvidence.Merge(newEvidence);
        Console.WriteLine("Evidence count = " + PrintEvidence(myEvidence).ToString());
        Console.WriteLine("\nRemove URL evidence.");
        myEvidence.RemoveType(url.GetType());
        Console.WriteLine("Evidence count is now: " + myEvidence.Count.ToString());
        Console.WriteLine("\nMake a copy of the current evidence.");
        Evidence evidenceCopy = new Evidence(myEvidence);
        Console.WriteLine("Count of new evidence items = " + evidenceCopy.Count);
        Console.WriteLine("Does the copy equal the current evidence? " + myEvidence.Equals(evidenceCopy));
        Console.WriteLine("\nClear the current evidence.");
        myEvidence.Clear();
        Console.WriteLine("Count is now " + myEvidence.Count.ToString());
        return myEvidence;
    }