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