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); } }
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); }