public FunctionABI(string name, bool constant, bool serpent = false)
 {
     Name             = name;
     Serpent          = serpent;
     Constant         = constant;
     signatureEncoder = serpent ? new SerpentSignatureEncoder() : new SignatureEncoder();
 }
Example #2
0
 public FunctionABI(string name, bool constant, bool serpent = false)
 {
     Name = name;
     Serpent = serpent;
     Constant = constant;
     signatureEncoder = serpent ? new SerpentSignatureEncoder() : new SignatureEncoder();
 }
Example #3
0
 public EventABI(string name)
 {
     Name = name;
     signatureEncoder = new SignatureEncoder();
 }
Example #4
0
 public EventABI(string name, bool isAnonymous)
 {
     Name             = name;
     IsAnonymous      = isAnonymous;
     signatureEncoder = new SignatureEncoder();
 }
Example #5
0
 public EventABI(string name)
 {
     Name             = name;
     signatureEncoder = new SignatureEncoder();
 }
Example #6
0
        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);
            }
        }
Example #7
0
 public FunctionABI(string name, bool constant)
 {
     Name = name;
     Constant = constant;
     signatureEncoder = new SignatureEncoder();   
 }
Example #8
0
 public FunctionABI(string name, bool constant)
 {
     Name             = name;
     Constant         = constant;
     signatureEncoder = new SignatureEncoder();
 }