public SecurityElement ToXml() { #if DISABLE_SECURITY throw new PlatformNotSupportedException(); #else SecurityElement se = new SecurityElement("ApplicationTrust"); se.AddAttribute("version", "1"); if (_appid != null) { se.AddAttribute("FullName", _appid.FullName); } if (_trustrun) { se.AddAttribute("TrustedToRun", "true"); } if (_persist) { se.AddAttribute("Persist", "true"); } SecurityElement defaultGrant = new SecurityElement("DefaultGrant"); defaultGrant.AddChild(DefaultGrantSet.ToXml()); se.AddChild(defaultGrant); if (_xtranfo != null) { byte[] data = null; using (MemoryStream ms = new MemoryStream()) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, _xtranfo); data = ms.ToArray(); } SecurityElement xtra = new SecurityElement("ExtraInfo"); xtra.AddAttribute("Data", CryptoConvert.ToHex(data)); se.AddChild(xtra); } return(se); #endif }
public void FromXml(SecurityElement element) { if (element == null) { throw new ArgumentNullException("element"); } if (element.Tag != "ApplicationTrust") { throw new ArgumentException("element"); } string s = element.Attribute("FullName"); if (s != null) { _appid = new ApplicationIdentity(s); } else { _appid = null; } _defaultPolicy = null; SecurityElement defaultGrant = element.SearchForChildByTag("DefaultGrant"); if (defaultGrant != null) { for (int i = 0; i < defaultGrant.Children.Count; i++) { SecurityElement se = (defaultGrant.Children [i] as SecurityElement); if (se.Tag == "PolicyStatement") { DefaultGrantSet.FromXml(se, null); break; } } } if (!Boolean.TryParse(element.Attribute("TrustedToRun"), out _trustrun)) { _trustrun = false; } if (!Boolean.TryParse(element.Attribute("Persist"), out _persist)) { _persist = false; } _xtranfo = null; SecurityElement xtra = element.SearchForChildByTag("ExtraInfo"); if (xtra != null) { s = xtra.Attribute("Data"); if (s != null) { byte[] data = CryptoConvert.FromHex(s); using (MemoryStream ms = new MemoryStream(data)) { BinaryFormatter bf = new BinaryFormatter(); _xtranfo = bf.Deserialize(ms); } } } }