public static XmlElement Generate(XmlElement xmlElement, string elementId, AsymmetricAlgorithm signingKey, KeyInfo keyInfo, SignedXml signedXml, string inclusiveNamespacesPrefixList, string digestMethod, string signatureMethod) { try { XmlSignature.RemoveSignature(xmlElement); signedXml.SigningKey = signingKey; signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/2001/10/xml-exc-c14n#"; Reference reference = new Reference(); reference.Uri = "#" + elementId; reference.AddTransform((Transform) new XmlDsigEnvelopedSignatureTransform()); if (!string.IsNullOrEmpty(digestMethod)) { reference.DigestMethod = digestMethod; } XmlDsigExcC14NTransform excC14Ntransform = new XmlDsigExcC14NTransform(); if (!string.IsNullOrEmpty(inclusiveNamespacesPrefixList)) { excC14Ntransform.InclusiveNamespacesPrefixList = inclusiveNamespacesPrefixList; } reference.AddTransform((Transform)excC14Ntransform); signedXml.AddReference(reference); signedXml.KeyInfo = keyInfo; if (!string.IsNullOrEmpty(signatureMethod)) { signedXml.SignedInfo.SignatureMethod = signatureMethod; } signedXml.ComputeSignature(); return(signedXml.GetXml()); } catch (Exception ex) { throw new SamlSignatureException("Failed to generate XML signature.", ex); } }
public static void RemoveSignature(XmlElement xmlElement) { XmlSignature.RemoveSignature(xmlElement); }