示例#1
0
        internal static XmlDocument PermissionSetToXml(PermissionSet ps)
        {
            XmlDocument document = new XmlDocument();
            string      xml      = (ps != null) ? ps.ToString() : "<PermissionSet/>";

            document.LoadXml(xml);
            XmlDocument document2 = new XmlDocument();
            XmlElement  newChild  = XmlUtil.CloneElementToDocument(document.DocumentElement, document2, "urn:schemas-microsoft-com:asm.v2");

            document2.AppendChild(newChild);
            return(document2);
        }
示例#2
0
        internal static XmlDocument PermissionSetToXml(PermissionSet ps)
        {
            XmlDocument inputDocument = new XmlDocument();
            string      xml           = (ps != null) ? ps.ToString() : "<PermissionSet/>";

            // CA3057: DoNotUseLoadXml.  Suppressed since 'xml' is a trusted or a constant string.
            inputDocument.LoadXml(xml);
            XmlDocument outputDocument = new XmlDocument();
            XmlElement  psElement      = XmlUtil.CloneElementToDocument(inputDocument.DocumentElement, outputDocument, XmlNamespaces.asmv2);

            outputDocument.AppendChild(psElement);
            return(outputDocument);
        }
示例#3
0
        /// <summary>
        /// Writes the application trust to an XML file.
        /// </summary>
        /// <param name="output"></param>
        public void Write(Stream output)
        {
            XmlDocument outputDocument            = new XmlDocument();
            XmlElement  inputPermissionSetElement = GetInputPermissionSetElement();

            //NOTE: XmlDocument.ImportNode munges "xmlns:asmv2" to "xmlns:d1p1" for some reason, use XmlUtil.CloneElementToDocument instead
            XmlElement outputPermissionSetElement = XmlUtil.CloneElementToDocument(inputPermissionSetElement, outputDocument, XmlNamespaces.asmv2);

            outputDocument.AppendChild(outputPermissionSetElement);

            string tempPrivilegeDocument = null;

            XmlDocument privilegeDocument = new XmlDocument();
            XmlElement  inputRequestedPrivilegeElement = GetInputRequestedPrivilegeElement();
            XmlElement  requestedPrivilegeElement      = null;

            requestedPrivilegeElement = GetRequestedPrivilegeElement(inputRequestedPrivilegeElement, privilegeDocument);

            if (requestedPrivilegeElement != null)
            {
                privilegeDocument.AppendChild(requestedPrivilegeElement);

                MemoryStream p = new MemoryStream();
                privilegeDocument.Save(p);
                p.Position            = 0;
                tempPrivilegeDocument = Util.WriteTempFile(p);
            }

            try
            {
                string trustInfoResource2 = "trustinfo2.xsl";

                // If permission set was not altered, just write out what was read in...
                MemoryStream m = new MemoryStream();
                if (_outputPermissionSet == null && !_sameSiteChanged)
                {
                    XmlElement permissionSetElement = outputDocument.DocumentElement;
                    FixupPermissionSetElement(permissionSetElement);

                    outputDocument.Save(m);
                    m.Position = 0;
                }
                else
                {
                    XmlDocument permissionSetDocument = GetOutputPermissionSetDocument();
                    XmlElement  permissionSetElement  = permissionSetDocument.DocumentElement;
                    FixupPermissionSetElement(permissionSetElement);

                    if (outputDocument.DocumentElement == null)
                    {
                        permissionSetDocument.Save(m);
                        m.Position = 0;
                    }
                    else
                    {
                        XmlElement oldPermissionSetElement = outputDocument.DocumentElement;
                        XmlElement newPermissionSetElement = (XmlElement)outputDocument.ImportNode(permissionSetElement, true);
                        oldPermissionSetElement.ParentNode.ReplaceChild(newPermissionSetElement, oldPermissionSetElement);

                        outputDocument.Save(m);
                        m.Position = 0;
                    }
                }

                // Wrap <PermissionSet> in a <TrustInfo> section
                Stream s = null;
                if (tempPrivilegeDocument != null)
                {
                    s = XmlUtil.XslTransform(trustInfoResource2, m, new DictionaryEntry("defaultRequestedPrivileges", tempPrivilegeDocument));
                }
                else
                {
                    s = XmlUtil.XslTransform(trustInfoResource2, m);
                }
                Util.CopyStream(s, output);
            }
            finally
            {
                if (tempPrivilegeDocument != null)
                {
                    File.Delete(tempPrivilegeDocument);
                }
            }
        }
示例#4
0
        public void Write(Stream output)
        {
            XmlDocument document = new XmlDocument();
            XmlElement  newChild = XmlUtil.CloneElementToDocument(this.GetInputPermissionSetElement(), document, "urn:schemas-microsoft-com:asm.v2");

            document.AppendChild(newChild);
            string      str       = null;
            XmlDocument document2 = new XmlDocument();
            XmlElement  inputRequestedPrivilegeElement = this.GetInputRequestedPrivilegeElement();
            XmlElement  requestedPrivilegeElement      = null;

            requestedPrivilegeElement = this.GetRequestedPrivilegeElement(inputRequestedPrivilegeElement, document2);
            if (requestedPrivilegeElement != null)
            {
                document2.AppendChild(requestedPrivilegeElement);
                MemoryStream outStream = new MemoryStream();
                document2.Save(outStream);
                outStream.Position = 0L;
                str = Util.WriteTempFile(outStream);
            }
            try
            {
                string       resource = "trustinfo2.xsl";
                MemoryStream stream2  = new MemoryStream();
                if ((this._outputPermissionSet == null) && !this.sameSiteChanged)
                {
                    XmlElement documentElement = document.DocumentElement;
                    this.FixupPermissionSetElement(documentElement);
                    document.Save(stream2);
                    stream2.Position = 0L;
                }
                else
                {
                    XmlDocument outputPermissionSetDocument = this.GetOutputPermissionSetDocument();
                    XmlElement  permissionSetElement        = outputPermissionSetDocument.DocumentElement;
                    this.FixupPermissionSetElement(permissionSetElement);
                    if (document.DocumentElement == null)
                    {
                        outputPermissionSetDocument.Save(stream2);
                        stream2.Position = 0L;
                    }
                    else
                    {
                        XmlElement oldChild = document.DocumentElement;
                        XmlElement element8 = (XmlElement)document.ImportNode(permissionSetElement, true);
                        oldChild.ParentNode.ReplaceChild(element8, oldChild);
                        document.Save(stream2);
                        stream2.Position = 0L;
                    }
                }
                Stream input = null;
                if (str != null)
                {
                    DictionaryEntry[] entries = new DictionaryEntry[] { new DictionaryEntry("defaultRequestedPrivileges", str) };
                    input = XmlUtil.XslTransform(resource, stream2, entries);
                }
                else
                {
                    input = XmlUtil.XslTransform(resource, stream2, new DictionaryEntry[0]);
                }
                Util.CopyStream(input, output);
            }
            finally
            {
                if (str != null)
                {
                    File.Delete(str);
                }
            }
        }