internal static bool ValidateSignResponse(XmlDocument signResponse, DSSConfiguration configuration) { X509Certificate2 certificate = GetCertificate(configuration.DSSCertificate); XmlElement signatureNode = (XmlElement)signResponse.GetElementsByTagName("Signature", "http://www.w3.org/2000/09/xmldsig#")[0]; SignedXml signed = new SignedXml(signatureNode); signed.LoadXml(signatureNode); return(signed.CheckSignature(certificate, false)); }
internal static void SignXmlDocument(XmlDocument doc, XmlNode nodeWhereToPlaceSignature, DSSConfiguration configuration) { X509Certificate2 certificate = GetCertificate(configuration.SigningCertificate); CspParameters cspParams = new CspParameters(24) { KeyContainerName = "XML_DISG_RSA_KEY" }; RSACryptoServiceProvider key = new RSACryptoServiceProvider(cspParams); key.FromXmlString(certificate.PrivateKey.ToXmlString(true)); SignedXml signed = new SignedXml(doc); signed.SigningKey = key; signed.SignedInfo.SignatureMethod = DSSConstants.VALUE_SIGNATURE_METHOD_XML; Reference reference = new Reference(); reference.Uri = ""; reference.AddTransform(new XmlDsigEnvelopedSignatureTransform()); reference.DigestMethod = DSSConstants.VALUE_DIGEST_METHOD_XML; signed.AddReference(reference); KeyInfo keyInfo = new KeyInfo(); keyInfo.AddClause(new KeyInfoX509Data(certificate)); signed.KeyInfo = keyInfo; signed.ComputeSignature(); XmlNode signatureNode = doc.ImportNode(signed.GetXml(), true); nodeWhereToPlaceSignature.AppendChild(signatureNode); }
public DSSManager(DSSConfiguration configuration) { this.configuration = configuration; }