private void AddSignature(XmlElement parent) { body.Normalize(); SignedXml signed = new SamlSignedXml(body); signed.SigningKey = sessionCert.PrivateKey; signed.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl; signed.KeyInfo = new KeyInfo(); signed.KeyInfo.AddClause(new KeyInfoX509Data(sessionCert, X509IncludeOption.EndCertOnly)); Reference requestRef = new Reference("#" + requestId); requestRef.AddTransform(new XmlDsigEnvelopedSignatureTransform()); requestRef.AddTransform(new XmlDsigExcC14NTransform()); signed.AddReference(requestRef); signed.ComputeSignature(); parent.InsertBefore(signed.GetXml(), parent.FirstChild); }