Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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));
        }