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); }
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); }
/// <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); } } }
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); } } }