Ejemplo n.º 1
0
        public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
        {
            LastRequestXML = request.ToString();

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(LastRequestXML);

            XmlHelpers.AddNamespacesToEnvelope(xmlDoc);
            XmlHelpers.AddNamespaceToBody(xmlDoc);
            XmlHelpers.AddTimestamp(xmlDoc);
            string id1 = XmlHelpers.AddIDToElement(xmlDoc, "Body", "http://www.w3.org/2003/05/soap-envelope", "DB-1");

            XmlHelpers.ReplaceIdWithNamespaceId(xmlDoc);
            _signXml.AddSignature(xmlDoc, "#" + id1);

            _encryptXml.EncryptBody(xmlDoc);

            string id2 = XmlHelpers.AddIDToElement(xmlDoc, "EncryptedData", "http://www.w3.org/2001/04/xmlenc#", "DB-2");

            _signXml.AddSignature(xmlDoc, "#" + id2);

            using (StringWriter stringWriter = new StringWriter())
                using (var xmlTextWriter = XmlWriter.Create(stringWriter))
                {
                    xmlDoc.WriteTo(xmlTextWriter);
                    xmlTextWriter.Flush();
                    var result = stringWriter.GetStringBuilder().ToString();

                    request = ChangeString(request, result);
                    return(request);
                }
        }