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!! }
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); }
private Evidence CreateAssemblyEvidence(object o) { Evidence e = new Evidence(); e.AddAssembly(o); return(e); }
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(-)"); }
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); }
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); }
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)"); }
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"); }
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"); }
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)"); }
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)"); }
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)"); }
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)"); }
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> }
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); } }
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)"); }
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"); } }
// 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); }
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); }
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); }
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; }