Esempio n. 1
0
        /// <include file='doc\KeyInfo.uex' path='docs/doc[@for="KeyInfo.LoadXml"]/*' />
        public void LoadXml(XmlElement value)
        {
            // Guard against nulls
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            // Validate what we are passed against the DTD

            XmlElement keyInfoElement = value;

            if (keyInfoElement.HasAttribute("Id"))
            {
                m_strId = keyInfoElement.GetAttribute("Id");
            }

            XmlNodeList nodeList = keyInfoElement.ChildNodes;

            foreach (XmlNode node in nodeList)
            {
                XmlElement elem = node as XmlElement;
                // We only care about XmlElement nodes here
                if (elem == null)
                {
                    continue;
                }
                // Create the right type of KeyInfoClause
                // We use a combination of the namespace and tag name (local name)
                String kicString = elem.NamespaceURI + " " + elem.LocalName;
                // Special-case handling for KeyValue -- we have to go one level deeper
                if (kicString == "http://www.w3.org/2000/09/xmldsig# KeyValue")
                {
                    XmlNodeList nodeList2 = elem.ChildNodes;
                    foreach (XmlNode node2 in nodeList2)
                    {
                        XmlElement elem2 = node2 as XmlElement;
                        if (elem2 != null)
                        {
                            kicString += "/" + elem2.LocalName;
                            break;
                        }
                    }
                }
                KeyInfoClause keyInfoClause = (KeyInfoClause)CryptoConfig.CreateFromName(kicString);
                // if we don't know what kind of KeyInfoClause we're looking at, use a generic KeyInfoNode:
                if (keyInfoClause == null)
                {
                    keyInfoClause = new KeyInfoNode();
                }

                // Ask the create clause to fill itself with the
                // corresponding XML
                keyInfoClause.LoadXml(elem);
                // Add it to our list of KeyInfoClauses
                AddClause(keyInfoClause);
            }
        }
Esempio n. 2
0
        public void LoadXml(XmlElement value)
        {
            if (value is null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            XmlElement keyInfoElement = value;

            _id = Utils.GetAttribute(keyInfoElement, "Id", SignedXml.XmlDsigNamespaceUrl);
            if (!Utils.VerifyAttributes(keyInfoElement, "Id"))
            {
                throw new CryptographicException(SR.Cryptography_Xml_InvalidElement, "KeyInfo");
            }

            XmlNode child = keyInfoElement.FirstChild;

            while (child != null)
            {
                XmlElement elem = child as XmlElement;
                if (elem != null)
                {
                    // Create the right type of KeyInfoClause; we use a combination of the namespace and tag name (local name)
                    string kicString = elem.NamespaceURI + " " + elem.LocalName;
                    // Special-case handling for KeyValue -- we have to go one level deeper
                    if (kicString == "http://www.w3.org/2000/09/xmldsig# KeyValue")
                    {
                        if (!Utils.VerifyAttributes(elem, (string[])null))
                        {
                            throw new CryptographicException(SR.Cryptography_Xml_InvalidElement, "KeyInfo/KeyValue");
                        }
                        XmlNodeList nodeList2 = elem.ChildNodes;
                        foreach (XmlNode node2 in nodeList2)
                        {
                            XmlElement elem2 = node2 as XmlElement;
                            if (elem2 != null)
                            {
                                kicString += "/" + elem2.LocalName;
                                break;
                            }
                        }
                    }

                    KeyInfoClause keyInfoClause = CryptoHelpers.CreateFromName <KeyInfoClause>(kicString);
                    // if we don't know what kind of KeyInfoClause we're looking at, use a generic KeyInfoNode:
                    if (keyInfoClause == null)
                    {
                        keyInfoClause = new KeyInfoNode();
                    }

                    // Ask the create clause to fill itself with the corresponding XML
                    keyInfoClause.LoadXml(elem);
                    // Add it to our list of KeyInfoClauses
                    AddClause(keyInfoClause);
                }
                child = child.NextSibling;
            }
        }
		public void KeyInfoNode () 
		{
			string test = "<Test>KeyInfoNode</Test>";
			XmlDocument doc = new XmlDocument ();
			doc.LoadXml (test);

			KeyInfoNode node = new KeyInfoNode (doc.DocumentElement);
			info.AddClause (node);
			AssertEquals ("node", "<KeyInfo xmlns=\"http://www.w3.org/2000/09/xmldsig#\"><Test xmlns=\"\">KeyInfoNode</Test></KeyInfo>", (info.GetXml ().OuterXml));
			AssertEquals ("node count", 1, info.Count);
		}
        /// <summary>
        /// Initializes a new instance of the <see cref="PartnerTokenCredentials"/> class.
        /// </summary>
        /// <param name="securityToken">The token.</param>
        /// <param name="securityTokenReference">The token reference.</param>
        internal PartnerTokenCredentials(string securityToken, string securityTokenReference)
            : base(securityToken, true /* addTimestamp */)
        {
            EwsUtilities.ValidateParam(securityToken, "securityToken");
            EwsUtilities.ValidateParam(securityTokenReference, "securityTokenReference");

            SafeXmlDocument doc = new SafeXmlDocument();
            doc.PreserveWhitespace = true;
            doc.LoadXml(securityTokenReference);
            this.keyInfoNode = new KeyInfoNode(doc.DocumentElement);
        }
		public void InvalidKeyNode () 
		{
			string bad = "<Test></Test>";
			XmlDocument doc = new XmlDocument ();
			doc.LoadXml (bad);

			KeyInfoNode node1 = new KeyInfoNode ();
			// LAMESPEC: No ArgumentNullException is thrown if value == null
			node1.LoadXml (null);
			AssertNull ("Value==null", node1.Value);
		}
		public void ImportKeyNode () 
		{
			// Note: KeyValue is a valid KeyNode
			string value = "<KeyName xmlns=\"http://www.w3.org/2000/09/xmldsig#\">Mono::</KeyName>";
			XmlDocument doc = new XmlDocument ();
			doc.LoadXml (value);

			KeyInfoNode node1 = new KeyInfoNode ();
			node1.LoadXml (doc.DocumentElement);

			string s = (node1.GetXml ().OuterXml);
			AssertEquals ("Node", value, s);
		}
		public void NewKeyNode () 
		{
			string test = "<Test></Test>";
			XmlDocument doc = new XmlDocument ();
			doc.LoadXml (test);

			KeyInfoNode node1 = new KeyInfoNode ();
			node1.Value = doc.DocumentElement;
			XmlElement xel = node1.GetXml ();

			KeyInfoNode node2 = new KeyInfoNode (node1.Value);
			node2.LoadXml (xel);

			AssertEquals ("node1==node2", (node1.GetXml ().OuterXml), (node2.GetXml ().OuterXml));
		}
        public void LoadXml(XmlElement value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            XmlElement element = value;

            this.m_id = System.Security.Cryptography.Xml.Utils.GetAttribute(element, "Id", "http://www.w3.org/2000/09/xmldsig#");
            for (XmlNode node = element.FirstChild; node != null; node = node.NextSibling)
            {
                XmlElement element2 = node as XmlElement;
                if (element2 != null)
                {
                    string name = element2.NamespaceURI + " " + element2.LocalName;
                    if (name == "http://www.w3.org/2000/09/xmldsig# KeyValue")
                    {
                        foreach (XmlNode node2 in element2.ChildNodes)
                        {
                            XmlElement element3 = node2 as XmlElement;
                            if (element3 != null)
                            {
                                name = name + "/" + element3.LocalName;
                                break;
                            }
                        }
                    }
                    KeyInfoClause clause = (KeyInfoClause)CryptoConfig.CreateFromName(name);
                    if (clause == null)
                    {
                        clause = new KeyInfoNode();
                    }
                    clause.LoadXml(element2);
                    this.AddClause(clause);
                }
            }
        }
Esempio n. 9
0
        public void LoadXml(XmlElement value) {
            if (value == null)
                throw new ArgumentNullException("value");

            XmlElement keyInfoElement = value;
            m_id = Utils.GetAttribute(keyInfoElement, "Id", SignedXml.XmlDsigNamespaceUrl);

            XmlNode child = keyInfoElement.FirstChild;
            while (child != null) {
                XmlElement elem = child as XmlElement;
                if (elem != null) {
                    // Create the right type of KeyInfoClause; we use a combination of the namespace and tag name (local name)
                    String kicString = elem.NamespaceURI + " " + elem.LocalName;
                    // Special-case handling for KeyValue -- we have to go one level deeper
                    if (kicString == "http://www.w3.org/2000/09/xmldsig# KeyValue") {
                        XmlNodeList nodeList2 = elem.ChildNodes;
                        foreach (XmlNode node2 in nodeList2) {
                            XmlElement elem2 = node2 as XmlElement;
                            if (elem2 != null) {
                                kicString += "/" + elem2.LocalName;
                                break;
                            }
                        }
                    }
                    KeyInfoClause keyInfoClause = (KeyInfoClause) CryptoConfig.CreateFromName(kicString);
                    // if we don't know what kind of KeyInfoClause we're looking at, use a generic KeyInfoNode:
                    if (keyInfoClause == null)
                        keyInfoClause = new KeyInfoNode();

                    // Ask the create clause to fill itself with the corresponding XML
                    keyInfoClause.LoadXml(elem);
                    // Add it to our list of KeyInfoClauses
                    AddClause(keyInfoClause);
                }
                child = child.NextSibling;
            }
        }
 public void LoadXml(XmlElement value)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     XmlElement element = value;
     this.m_id = System.Security.Cryptography.Xml.Utils.GetAttribute(element, "Id", "http://www.w3.org/2000/09/xmldsig#");
     for (XmlNode node = element.FirstChild; node != null; node = node.NextSibling)
     {
         XmlElement element2 = node as XmlElement;
         if (element2 != null)
         {
             string name = element2.NamespaceURI + " " + element2.LocalName;
             if (name == "http://www.w3.org/2000/09/xmldsig# KeyValue")
             {
                 foreach (XmlNode node2 in element2.ChildNodes)
                 {
                     XmlElement element3 = node2 as XmlElement;
                     if (element3 != null)
                     {
                         name = name + "/" + element3.LocalName;
                         break;
                     }
                 }
             }
             KeyInfoClause clause = (KeyInfoClause) CryptoConfig.CreateFromName(name);
             if (clause == null)
             {
                 clause = new KeyInfoNode();
             }
             clause.LoadXml(element2);
             this.AddClause(clause);
         }
     }
 }