public void EmptyChain()
        {
            TransformChain chain = new TransformChain();

            Assert.Equal(0, chain.Count);
            Assert.NotNull(chain.GetEnumerator());
            Assert.Equal("System.Security.Cryptography.Xml.TransformChain", chain.ToString());
        }
        public void EmptyChain()
        {
            TransformChain chain = new TransformChain();

            Assert.Equal(0, chain.Count);
            Assert.NotNull(chain.GetEnumerator());
            Assert.Equal("Org.BouncyCastle.Crypto.Xml.TransformChain", chain.ToString());
        }
Exemple #3
0
        public void EmptyChain()
        {
            TransformChain chain = new TransformChain();

            Assert.AreEqual(0, chain.Count, "empty count");
            Assert.IsNotNull(chain.GetEnumerator(), "IEnumerator");
            Assert.AreEqual("System.Security.Cryptography.Xml.TransformChain", chain.ToString(), "ToString()");
        }
        public XmlElement ApplyTransform(Reference reference)
        {
            XmlNode        node            = null;
            TransformChain transformChain  = reference.TransformChain;
            int            transCounter    = transformChain.Count;
            IEnumerator    enumerator      = transformChain.GetEnumerator();
            Stream         transformstream = new MemoryStream();

            if (reference.Uri.Equals(""))
            {
                this._inputDocument.Save(transformstream);
                transformstream.Position = 0;
            }
            else
            {
                XmlNodeReader reader = new XmlNodeReader((XmlNode)this._reference);
                XmlWriter     writer = new XmlTextWriter(transformstream, Encoding.UTF8);
                writer.WriteNode(reader, false);
                writer.Flush();
                transformstream.Position = 0;
            }
            for (int i = 0; i < transCounter; i++)
            {
                enumerator.MoveNext();
                Transform trans = (Transform)enumerator.Current;
                string    typ   = trans.ToString();
                switch (typ)
                {
                case "System.Security.Cryptography.Xml.XmlDsigEnvelopedSignatureTransform":
                    if (!reference.Uri.Equals(""))
                    {
                        for (int j = 0; j < _referenceList.Count; j++)
                        {
                            XmlElement temp = (XmlElement)this._referenceList[j];
                            string     uri  = "#" + temp.Attributes["Id"].Value;
                            if (uri.Equals(reference.Uri))
                            {
                                node = temp;
                            }
                        }

                        XmlNode signatureNode = (node as XmlElement).GetElementsByTagName("ds:Signature") != null ? (node as XmlElement).GetElementsByTagName("ds:Signature")[0] as XmlNode : null;
                        if (signatureNode != null)
                        {
                            node.RemoveChild(signatureNode);
                        }
                    }
                    break;


                case "System.Security.Cryptography.Xml.XmlDsigExcC14NTransform":

                    if (!reference.Uri.Equals(""))
                    {
                        for (int j = 0; j < _referenceList.Count; j++)
                        {
                            XmlElement temp = (XmlElement)this._referenceList[j];
                            string     uri  = "#" + temp.Attributes["Id"].Value;
                            if (uri.Equals(reference.Uri))
                            {
                                node = temp;
                            }
                        }
                    }
                    break;

                case SignedXml.XmlDsigEnvelopedSignatureTransformUrl:
                {
                }
                break;

                case "System.Security.Cryptography.Xml.XmlDsigXPathTransform":
                    XmlDocument           doc            = new XmlDocument();
                    XmlDsigXPathTransform xpathTransform = (XmlDsigXPathTransform)trans;
                    XmlElement            xpathElement   = xpathTransform.GetXml();
                    string xpath = xpathElement.InnerText;
                    XmlNamespaceManager xmlNameSpaceManager = new XmlNamespaceManager(this._inputDocument.NameTable);
                    XmlElement          bodyElement         = (XmlElement)this._inputDocument.GetElementsByTagName("s:Body")[0];
                    xmlNameSpaceManager.AddNamespace("s", bodyElement.NamespaceURI);
                    xmlNameSpaceManager.AddNamespace("tns", "http://tempuri.org/");
                    xmlNameSpaceManager.AddNamespace("xenc", "http://www.w3.org/2001/04/xmlenc#");
                    xmlNameSpaceManager.AddNamespace("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis -200401-wss-wssecurity-secext-1.0.xsd");
                    node = this._inputDocument.SelectSingleNode(xpath, xmlNameSpaceManager);
                    break;
                }
            }
            return((XmlElement)node);
        }