public FunctionABI(string name, bool constant, bool serpent = false) { Name = name; Serpent = serpent; Constant = constant; signatureEncoder = serpent ? new SerpentSignatureEncoder() : new SignatureEncoder(); }
public EventABI(string name) { Name = name; signatureEncoder = new SignatureEncoder(); }
public EventABI(string name, bool isAnonymous) { Name = name; IsAnonymous = isAnonymous; signatureEncoder = new SignatureEncoder(); }
public bool ChangeSmo(string ogrnSmo, string okatoSmo, string dateFrom, string dateTo, string securityModulePin, string cardPin) { // Чтение информации о владельце карты полиса ОМС var manager = new PCSCReadersManager(); try { // Установление соединения с смарт-карт API manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER); // Вывод списка ридеров в консоль if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveCardReader) == false) { manager.ReleaseContext(); return(false); } if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveToken) == false) { manager.ReleaseContext(); return(false); } // Получение объекта ридера var policyCard = manager[ActiveCardReader]; var tokenCard = manager[ActiveToken]; // Создание объекта для работы с картой полиса ОМС var policy = new PolicySmartcard(policyCard, tokenCard); // Подключение к карте полиса ОМС policy.Connect(); // Аутентификация с картой модуля безопасности // Пин-код модуля безопасности 12345678 policy.Authentificate_Mutual(securityModulePin, true); var verifyArgs = new VerifyPINArguments { // Данный параметр устанавливает признак использования пин-пада для // предъявления пин-кода с помощью выносной клавиатуры. В случае установки данного параметра в значение false // требуется заполнение параметра 'PinValue' // Использование пин-пада возможно только в случае, если карта полиса ОМС установлена // в устройство с поддержкой функции выносной клавиатуры. // Проверить наличие функций выносной клавиатуры у устройства можно с помощью метода // 'PolicyPinpad.IsDeviceSupported(policy_card, false // Не выполнять подключение к карте если подключение было выполнено внешними средствами UsePinpad = PolicyPinpad.IsDeviceSupported(policyCard, false), // Значение пин-кода. Данный параметр используется только если UsePinpad = false PinValue = "1234", // Ссылка на метод для отмены ввода пин-кода программным способом в случае использовании выносной клавиатуры // Инициализация происходит на стороне метода VerifyPIN CancelHandler = null, // Ссылка на метод для обработки события нажатия кнопок на выносной клавиатуре // Можно не инициализировать - используется только в случае использовании выносной клавиатуры EnteredDigitHandler = key => { // Тело метода, обработчика } }; // Проверка пина policy.VerifyPIN(ref verifyArgs); // Парсим даты DateTime dtFrom = DateTime.Now; DateTime.TryParse(dateFrom, out dtFrom); // Парсим даты DateTime dtTo = DateTime.Now.AddYears(5); DateTime.TryParse(dateTo, out dtTo); // Создание объекта нового СМО var smo = new SMOInformation { OGRN = ogrnSmo, OKATO = okatoSmo, InsuranceStartDate = dtFrom, InsuranceExpireDate = dtTo, EDS = null /*ЭЦП будет инициализирована позже после ее создания*/ }; // [Формирование ЭЦП нового СМО] // Открытие хранилища сертификатов текущего пользователя var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); // Выбор сертификата с помощью строенного диалога var selected = X509Certificate2UI.SelectFromCollection( store.Certificates, "Сертификата", "Выберите сертификат для формирования ЭЦП СМО", X509SelectionFlag.SingleSelection); if (selected.Count > 0) { // Создание объекта формирования подписи var signatureEncoder = new SignatureEncoder(selected[0]); // Формирование ЭЦП smo.EDS = new SMOInformationEDS { Signature = signatureEncoder.CreateSignHash(smo.EncodeBER()), // Преобразование объекта к формату BER-TLV Certificate = selected[0].Export(X509ContentType.Cert) }; } // Запись информации о новом СМО на карту полиса ОМС policy.CreateNewSMO(smo); // Отключение от карты полиса ОМС policy.Disconnect(); // Отключение от смарт-карт API manager.ReleaseContext(); return(true); } catch { return(false); } }
public FunctionABI(string name, bool constant) { Name = name; Constant = constant; signatureEncoder = new SignatureEncoder(); }