/// <summary> /// Ritorna la credenziale di firma (completa di tutte le sue componenti, quindi slot, id smart-card, PIN, ...) /// in forma di nodo Xml. /// </summary> /// <param name="xmlCredential">In uscita contiene la credenziale; se in ingresso non è null, /// viene rimpiazzato, altrimenti viene creato da zero.</param> /// <param name="bAskFor">true per richiedere all'utente di impostare la credenziale, /// false per tornare la credenziale corrente</param> public void GetCredential(ref System.Xml.XmlElement xmlCredential, bool bAskFor) { MSXML2.IXMLDOMElement comXmlCredential = null; // Da System.Xml.XmlElement a MSXML2.IXMLDOMElement if (xmlCredential != null) { MSXML2.IXMLDOMDocument comXmlDoc = new MSXML2.DOMDocument30(); comXmlDoc.loadXML(xmlCredential.OuterXml); comXmlCredential = comXmlDoc.documentElement; } // Chiamata effettiva CheckScResult( NativeMethods.SvScGetCredential(signSCHandle, ref comXmlCredential, bAskFor, "")); // Da MSXML2.IXMLDOMElement a System.Xml.XmlElement System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); xmlDoc.LoadXml(comXmlCredential.xml); if (xmlCredential == null) { xmlCredential = xmlDoc.DocumentElement; } else { xmlCredential.OwnerDocument.InsertAfter(xmlDoc.DocumentElement, xmlCredential); xmlCredential.ParentNode.RemoveChild(xmlCredential); } }
/// <summary> /// Imposta la credenziale di firma a partire da un Xml precedentemente generato dalla GetCredential. /// </summary> /// <param name="xmlCredential">Xml generato dalla GetCredential</param> /// <param name="bCompleteCredential">True se la credenziale impostata è completa e /// si può firmare in batch senza l'intervento dell'utente</param> public void SetCredential(System.Xml.XmlElement xmlCredential, out bool bCompleteCredential) { if (xmlCredential == null) { throw new ArgumentException("Null parameter", "xmlCredential"); } // Da System.Xml.XmlElement a MSXML2.IXMLDOMElement MSXML2.IXMLDOMElement comXmlCredential = null; MSXML2.IXMLDOMDocument comXmlDoc = new MSXML2.DOMDocument30(); comXmlDoc.loadXML(xmlCredential.OuterXml); comXmlCredential = comXmlDoc.documentElement; // Chiamata effettiva CheckScResult( NativeMethods.SvScSetCredential(signSCHandle, comXmlCredential, out bCompleteCredential)); }
static void Main(string[] args) { try { var dom = new MSXML2.DOMDocument30(); dom.async = false; dom.load(args[0]); var xslt = new MSXML2.DOMDocument30(); xslt.async = false; xslt.load(args[1]); File.WriteAllText(args[2], dom.transformNode(xslt)); Console.WriteLine("Done"); } finally { Console.ReadKey(); } }