private async Task <Message> ComputeResponseAsync(Message receivedMessage) { await Task.Delay(10); try { XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.PreserveWhitespace = false;/////////////////////////////////Should do it in both sign and verify xmlDoc.LoadXml(receivedMessage.XmlText); X509Certificate2 cert = XmlSign.GetX509Certificate2FromDongle(); //Load Certificate XmlDocument signedDoc = XmlSign.GetSignedXMLDocument(xmlDoc, cert); if (signedDoc != null) { receivedMessage.XmlText = signedDoc.OuterXml; return(receivedMessage); } else { receivedMessage.XmlText = ""; MessageBox.Show("File Tempered After Last Sign"); return(receivedMessage); } } catch (Exception ex) { receivedMessage.XmlText = ex.Message.ToString(); return(receivedMessage); } }
private static string GetXmlStringBeforeSigning(XmlDocument xmlDoc, out bool hasAnySignature) { hasAnySignature = XmlSign.CheckIfDocumentPreviouslySigned(xmlDoc); XmlDocument basicXml = XmlSign.GetRealXmlDocument(xmlDoc); return(basicXml.OuterXml); }
private void OnLoaded(object sender, RoutedEventArgs e) { XmlDocument tempXml = new XmlDocument(); tempXml.LoadXml(receivedXmlText); certificateList = XmlSign.GetAllSign(tempXml); realDocument = XmlSign.GetRealXmlDocument(tempXml); XmlDataProvider dataProvider = this.FindResource("xmlDataProvider") as XmlDataProvider; #pragma warning disable CS8602 // Dereference of a possibly null reference. dataProvider.Document = realDocument; #pragma warning restore CS8602 // Dereference of a possibly null reference. Signature.ItemsSource = certificateList; }
internal static SignedXmlModel GetSignedXmlModel(string contentString) { SignedXmlModel signedXml = new SignedXmlModel(); bool hasAnySignature; XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.LoadXml(contentString); } catch (Exception ex) { Console.WriteLine(ex); signedXml.success = false; signedXml.error = "File is not a valid XML"; return(signedXml); } try { signedXml.xml = GetXmlStringBeforeSigning(xmlDoc, out hasAnySignature); if (hasAnySignature) { List <CertificateModel> certs = XmlSign.GetAllSign(xmlDoc); if (certs == null) { signedXml.success = false; signedXml.error = "File was modified"; signedXml.xml = null; signedXml.signatures = null; return(signedXml); } signedXml.signatures = certs; } return(signedXml); } catch (Exception ex) { Console.WriteLine(ex); signedXml.success = false; signedXml.error = "Unknown Exception, Please check log File of XML Verifire Service"; signedXml.xml = null; signedXml.signatures = null; return(signedXml); } }
private void SignButtonClicked(object sender, RoutedEventArgs e) { //http://localhost:8080/file/download/831286aaff629434d9d4ddcbec679f8ecbe4afb0631c73e60d0968fbea2cccbea63aa8afb0a5bef528a3e2433c0d9994713da42fdadd62f5fab19d0365520e3cbig.xml String fileName = SelectedFileName.Text.Trim(); XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.PreserveWhitespace = false;/////////////////////////////////Should do it in both sign and verify xmlDoc.Load(fileName); X509Certificate2 cert = XmlSign.GetX509Certificate2FromDongle(); //Load Certificate XmlDocument signedDoc = XmlSign.GetSignedXMLDocument(xmlDoc, cert); if (signedDoc != null) { signedDoc.Save(fileName + "_signed.xml"); //Sign a file } else { MessageBox.Show("File Tempered After Last Sign"); return; } XmlDocument signedXmlDoc = new XmlDocument(); //xmlDoc.PreserveWhitespace = false;///////////////////////////////// signedXmlDoc.Load(fileName + "_signed.xml"); //Verify bool?ifSignVerified = XmlSign.VerifyAllSign(signedXmlDoc); if (ifSignVerified == true) { MessageBox.Show("Verified"); } else if (ifSignVerified == false) { MessageBox.Show("Failed Verification"); } else { MessageBox.Show("File Has No Sign"); } }