Esempio n. 1
0
        public List <SmoInfoStrings> GetSmoHistory()
        {
            const string pinCard = "5473";

            // Чтение информации о владельце карты полиса ОМС
            var manager = new PCSCReadersManager();

            try
            {
                // Установление соединения с смарт-карт API
                manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);

                // Вывод списка ридеров в консоль
                if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveCardReader) == false)
                {
                    ////printf("Устройство чтения смарт-карт с именем [{0}] не найдено в системе.");
                    manager.ReleaseContext();
                    return(null);
                }

                if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveToken) == false)
                {
                    ////printf("Устройство чтения смарт-карт с именем [{0}] не найдено в системе.");
                    manager.ReleaseContext();
                    return(null);
                }

                // Получение объекта ридера
                var policyCard = manager[ActiveCardReader];
                var tokenCard  = manager[ActiveToken];

                // Создание объекта для работы с картой полиса ОМС
                var policy = new PolicySmartcard(policyCard, tokenCard);

                // Подключение к карте полиса ОМС
                policy.Connect();


                // Аутентификация с картой модуля безопасности
                policy.Authentificate_External(pinCard);
                policy.Authentificate_External(pinCard, true);

                // Чтение истории СМО
                var historyList = policy.GetSMOHistory();
                var histSmos    = new List <SmoInfoStrings>();
                historyList.ForEach(smo =>
                {
                    if (smo != null)
                    {
                        var smoInfo = new SmoInfoStrings
                        {
                            OgrnSmo            = smo.OGRN,
                            Okato              = smo.OKATO,
                            InsuranceStartDate =
                                FormatPolicyDate(
                                    smo.InsuranceStartDate, "Отсутствует"),
                            InsuranceEndDate =
                                FormatPolicyDate(
                                    smo.InsuranceExpireDate, "Не ограничено"),
                            Eds = smo.EDS == null
                                                            ? null
                                                            : new Eds
                            {
                                Certificate =
                                    new X509Certificate2(smo.EDS.Certificate).Subject,
                                Ecp = smo.EDS.Signature.ToHexString()
                            }
                        };

                        histSmos.Add(smoInfo);
                    }
                });

                // Отключение от карты полиса ОМС
                policy.Disconnect();

                // Отключение от смарт-карт API
                manager.ReleaseContext();
                return(histSmos);
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 2
0
        public SmoInfoStrings GetCurrentSmo()
        {
            // Чтение информации о владельце карты полиса ОМС
            var manager = new PCSCReadersManager();

            // Установление соединения с смарт-карт API
            manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);

            // Вывод списка ридеров в консоль
            if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveCardReader))
            {
                // Получение объекта ридера
                var card = manager[ActiveCardReader];

                // Создание объекта для работы с картой полиса ОМС
                var policy = new PolicySmartcardBase(card);

                // Подключение к карте полиса ОМС
                policy.Connect();

                // Чтение информации о владельце полиса ОМС
                var smo = policy.GetCurrentSMOInformation();
                if (smo != null)
                {
                    var smoInfo = new SmoInfoStrings
                    {
                        OgrnSmo            = smo.OGRN,
                        Okato              = smo.OKATO,
                        InsuranceStartDate =
                            FormatPolicyDate(smo.InsuranceStartDate, "Отсутствует"),
                        InsuranceEndDate =
                            FormatPolicyDate(smo.InsuranceExpireDate, "Не ограничено")
                    };

                    if (smo.EDS != null)
                    {
                        smoInfo.Eds = new Eds
                        {
                            Certificate = new X509Certificate2(smo.EDS.Certificate).Subject,
                            Ecp         = smo.EDS.Signature.ToHexString()
                        };

                        try
                        {
                            smoInfo.Eds.StateEcp = smo.VerifyEDS() ? "Верна" : "Неверна";
                        }
                        catch
                        {
                        }
                    }

                    policy.Disconnect();
                    manager.ReleaseContext();
                    return(smoInfo);
                }

                // Отключение от карты полиса ОМС
                policy.Disconnect();

                // Отключение от смарт-карт API
                manager.ReleaseContext();
                return(null);
            }

            manager.ReleaseContext();
            return(null);
        }