コード例 #1
0
        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);
        }
コード例 #2
0
        private static XmlDocument SignSTR(string xml, string elementId, string CertificateThumbprint, string Password)
        {
            var xadesService = new GostXadesBesService();


            return(xadesService.Sign(xml, elementId, CertificateThumbprint, Password));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        // Метод добавления сигнатуры подписи в аттрибуты 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));
        }