public object BeforeSendRequest(ref Message request, IClientChannel channel) { try { FixHeaderForDebug(ref request); var messageRef = MessageString(ref request); if (!messageRef.Contains(Constants.SignElementId)) { return(null); } var service = new GostXadesBesService(ServicePointConfig.CryptoProviderType); var signedXml = service.Sign(messageRef, Constants.SignElementId, ServicePointConfig.CertificateThumbPrint, ServicePointConfig.PrivateKeyPassword); request = CreateMessageFromString(signedXml, request.Version); } catch (Exception ex) { string error = $"В {this.GetType().Name} произошло исключение: {ex.GetBaseException().Message}"; Console.WriteLine(error); } return(null); }
private static XmlDocument SignSTR(string xml, string elementId, string CertificateThumbprint, string Password) { var xadesService = new GostXadesBesService(); return(xadesService.Sign(xml, elementId, CertificateThumbprint, Password)); }
private static XmlDocument Sign(XmlDocument xml, string elementId, string CertificateThumbprint, string Password) { var xadesService = new GostXadesBesService(); if (string.IsNullOrEmpty(elementId)) { var rootNode = xml.DocumentElement; var rootNodeId = GetRootId(rootNode); if (!string.IsNullOrEmpty(rootNodeId)) { Warning(string.Format("Не задан элемент для подписи. Используется корневой элемент {0} с Id {1}", rootNode.Name, rootNodeId)); elementId = rootNodeId; } else { elementId = Guid.NewGuid().ToString("N"); var attribulte = xml.CreateAttribute("Id"); attribulte.Value = elementId; rootNode.Attributes.Append(attribulte); Warning(string.Format("Не задан элемент для подписи. Используется корневой элемент {0} с Id {1} (атрибут сгенерирован)", rootNode.Name, elementId)); } } return(xadesService.Sign(xml.OuterXml, elementId, CertificateThumbprint, Password)); }
public void Sign_ValidXml_NotThrows(string exampleXmlFileName, string elementId) { var data = NUnitTestHelper.GetInputFile(exampleXmlFileName); var service = new GostXadesBesService(); var signedData = service.Sign(data, elementId, CertificateThumbprint, CertificatePassword); service.ValidateSignature(signedData, elementId); }
public static string GetSignElement(string messageString) { var originalDoc = new XmlDocument { PreserveWhitespace = true }; originalDoc.LoadXml(messageString); var nodes = originalDoc.SelectNodes($"//node()[@Id='{CryptoConsts.CONTAINER_ID}']"); if (nodes == null || nodes.Count == 0) { return(originalDoc.OuterXml); } var gostXadesBesService = new GostXadesBesService(); string st = gostXadesBesService.Sign(messageString, CryptoConsts.CONTAINER_ID, CryptoConsts.CERTIFICATE_THUMBPRINT, string.Empty); return(st); }
// Метод добавления сигнатуры подписи в аттрибуты XML документа. private static string Sign(XmlDocument xml, string elementId, string certificateThumbprint, string passwd, string guid) { if (string.IsNullOrEmpty(elementId)) { var rootNode = xml.DocumentElement; var rootNodeId = GetRootId(rootNode); if (!string.IsNullOrEmpty(rootNodeId)) { //Warning($"Не задан элемент для подписи. Используется корневой элемент {rootNode.Name} с Id {rootNodeId}"); elementId = rootNodeId; } else { elementId = guid; var attribulte = xml.CreateAttribute("Id"); attribulte.Value = elementId; rootNode.Attributes.Append(attribulte); //Warning($"Не задан элемент для подписи. Используется корневой элемент {rootNode.Name} с Id {elementId} (атрибут сгенерирован)"); } } GostXadesBesService xadesService = new GostXadesBesService(); return(xadesService.Sign(xml.OuterXml, elementId, certificateThumbprint, passwd)); }