/// <summary> /// Actualiza el documento resultante /// </summary> internal void UpdateDocument() { if (_document == null) { _document = new XmlDocument(); } if (_document.DocumentElement != null) { XmlNode xmlNode = _document.SelectSingleNode("//*[@Id='" + _xadesSignedXml.Signature.Id + "']"); if (xmlNode != null) { XmlNamespaceManager nm = new XmlNamespaceManager(_document.NameTable); nm.AddNamespace("xades", XadesSignedXml.XadesNamespaceUri); nm.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); XmlNode xmlQPNode = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties", nm); XmlNode xmlUnsingedPropertiesNode = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties/xades:UnsignedProperties", nm); if (xmlUnsingedPropertiesNode != null) { xmlUnsingedPropertiesNode.InnerXml = _xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.GetXml().InnerXml; } else { xmlUnsingedPropertiesNode = _document.ImportNode(_xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.GetXml(), true); xmlQPNode.AppendChild(xmlUnsingedPropertiesNode); } } else { XmlElement xmlSigned = _xadesSignedXml.GetXml(); byte[] canonicalizedElement = XMLUtil.ApplyTransform(xmlSigned, new XmlDsigC14NTransform()); XmlDocument doc = new XmlDocument { PreserveWhitespace = true }; doc.LoadXml(Encoding.UTF8.GetString(canonicalizedElement)); XmlNode canonSignature = _document.ImportNode(doc.DocumentElement, true); _xadesSignedXml.GetSignatureElement().AppendChild(canonSignature); } } else { _document.LoadXml(_xadesSignedXml.GetXml().OuterXml); } }
internal void UpdateDocument() { if (_document == null) { _document = new XmlDocument(); } if (_document.DocumentElement != null) { XmlNode xmlNode = _document.SelectSingleNode("//*[@Id='" + _xadesSignedXml.Signature.Id + "']"); if (xmlNode != null) { XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(_document.NameTable); xmlNamespaceManager.AddNamespace("xades", "http://uri.etsi.org/01903/v1.3.2#"); xmlNamespaceManager.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#"); XmlNode xmlNode2 = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties", xmlNamespaceManager); XmlNode xmlNode3 = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties/xades:UnsignedProperties", xmlNamespaceManager); if (xmlNode3 != null) { xmlNode3.InnerXml = _xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.GetXml().InnerXml; } else { xmlNode3 = _document.ImportNode(_xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.GetXml(), true); xmlNode2.AppendChild(xmlNode3); } } else { XmlElement xml = _xadesSignedXml.GetXml(); byte[] bytes = XMLUtil.ApplyTransform(xml, new XmlDsigC14NTransform()); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.PreserveWhitespace = true; xmlDocument.LoadXml(Encoding.UTF8.GetString(bytes)); XmlNode newChild = _document.ImportNode(xmlDocument.DocumentElement, true); _xadesSignedXml.GetSignatureElement().AppendChild(newChild); } } else { _document.LoadXml(_xadesSignedXml.GetXml().OuterXml); } }
/// <summary> /// Actualiza el documento resultante /// </summary> internal void UpdateDocument() { if (_document == null) { _document = new XmlDocument(); } if (_document.DocumentElement != null) { XmlNode xmlNode = _document.SelectSingleNode("//*[@Id='" + _xadesSignedXml.Signature.Id + "']"); if (xmlNode != null) { XmlNamespaceManager nm = new XmlNamespaceManager(_document.NameTable); nm.AddNamespace("xades", XadesSignedXml.XadesNamespaceUri); nm.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); XmlNode xmlQPNode = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties", nm); XmlNode xmlUnsingedPropertiesNode = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties/xades:UnsignedProperties", nm); if (xmlUnsingedPropertiesNode != null) { XmlNode xmlUnsingedSignaturePropertiesNode = xmlNode.SelectSingleNode("ds:Object/xades:QualifyingProperties/xades:UnsignedProperties/xades:UnsignedSignatureProperties", nm); XmlElement xmlUnsignedPropertiesNew = _xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.UnsignedSignatureProperties.GetXml(); foreach (XmlNode childNode in xmlUnsignedPropertiesNew.ChildNodes) { if (childNode.Attributes["Id"] != null && xmlUnsingedSignaturePropertiesNode.SelectSingleNode("//*[@Id='" + childNode.Attributes["Id"].Value + "']") == null) { var newNode = _document.ImportNode(childNode, true); xmlUnsingedSignaturePropertiesNode.AppendChild(newNode); } } // Se comprueban las ContraFirmas if (_xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.UnsignedSignatureProperties.CounterSignatureCollection.Count > 0) { foreach (XadesSignedXml counterSign in _xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.UnsignedSignatureProperties.CounterSignatureCollection) { if (xmlNode.SelectSingleNode("//*[@Id='" + counterSign.Signature.Id + "']") == null) { XmlNode xmlCounterSignatureNode = _document.CreateElement(XadesSignedXml.XmlXadesPrefix, "CounterSignature", XadesSignedXml.XadesNamespaceUri); xmlUnsingedSignaturePropertiesNode.AppendChild(xmlCounterSignatureNode); xmlCounterSignatureNode.AppendChild(_document.ImportNode(counterSign.GetXml(), true)); } } } } else { xmlUnsingedPropertiesNode = _document.ImportNode(_xadesSignedXml.XadesObject.QualifyingProperties.UnsignedProperties.GetXml(), true); xmlQPNode.AppendChild(xmlUnsingedPropertiesNode); } } else { XmlElement xmlSigned = _xadesSignedXml.GetXml(); byte[] canonicalizedElement = XMLUtil.ApplyTransform(xmlSigned, new XmlDsigC14NTransform()); XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; doc.LoadXml(Encoding.UTF8.GetString(canonicalizedElement)); XmlNode canonSignature = _document.ImportNode(doc.DocumentElement, true); _xadesSignedXml.GetSignatureElement().AppendChild(canonSignature); } } else { _document.LoadXml(_xadesSignedXml.GetXml().OuterXml); } }