protected bool VerifierSigned(SoapEnvelope envelope, X509Certificate2 certificate, XmlNamespaceManager nsmanager)
        {
            String result = envelope.DocumentElement.InnerText != null ? envelope.DocumentElement.InnerText : "";

            try
            {
                XmlNode signature = envelope.DocumentElement.SelectSingleNode(Constants.DOMAIN_SIGNATURE, nsmanager);

                var signedXml = new XmlSignature(envelope.DocumentElement);
                signedXml.LoadXml(signature as XmlElement);

                return(signedXml.CheckSignature(certificate, true));
            }
            catch (Exception)
            {
                throw new Exception(result);
            }
        }
        public void Signature(S envelope, C certificate)
        {
            soap = null;
            certificateSignature = null;

            soap = envelope as SoapEnvelope;
            certificateSignature = certificate as X509Certificate2;

            InitializeEnvelope(soap);

            XmlElement nodeSecurity = (XmlElement)soap.CreateNode(XmlNodeType.Element, Constants.WSSE, Constants.SECURITY, Constants.WSSECURITY_SECEXT);

            nodeSecurity.SetAttribute(Constants.NS_WEBSERVICE_UTILITY, Constants.WSSECURITY_UTILITY);

            soap.Header.AppendChild(nodeSecurity);

            soap.Header.AppendChild(nodeSecurity);

            InitializeSoapEnv(soap);

            XmlSignature signedXml = new XmlSignature(soap);

            KeyInfo keyInfo = new KeyInfo();

            signedXml.SigningKey = certificateSignature.PrivateKey;
            KeyInfoX509Data keyInfoData = new KeyInfoX509Data();

            keyInfoData.AddIssuerSerial(certificateSignature.Issuer, certificateSignature.GetSerialNumberString());
            keyInfo.AddClause(keyInfoData);
            signedXml.KeyInfo = keyInfo;

            signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;

            signedXml.AddReference(GetReference());
            signedXml.ComputeSignature();

            var signedElement = signedXml.GetXml();

            nodeSecurity.AppendChild(signedElement);

            CreateToken(soap, certificateSignature, (XmlElement)signedElement.ChildNodes[2]);
        }