Esempio n. 1
0
        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
        }
Esempio n. 2
0
        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);
                    }
                }
            }
        }