Exemplo n.º 1
0
        private void button2_Click_2(object sender, EventArgs e)
        {
            String[] terminals = SmartOp.getCardTerminals();
            if (terminals == null || terminals.Length == 0)
            {
                MesajiIsle("Kart takılı bir kart okuyucu bulunamadı-Kart Kontrol İşlemi", 1);
                return;
            }
            // eger tum kartlari kendisi kontrol edip oto. imzalayacaksa askoption calistirma,
            // for dongusunde tum kartlari ve kartlardaki tum sertifikalari gezip bunlari arraya, sonrasinda da tabloya at
            // imzalama asamasinda tckimlikno uyusmamasi gibi bir durum olursa ancak o zaman tum kartlari bir kez daha
            // dolasarak db tablodaki kart ve sertifikalarin slot nolarini yenile

            // ***********************
            // alt satirda hem kartlar hem sertifikalar hem ltrm classi dolduruluyor
            SmartCardManagerTumunuOku scmgr = SmartCardManagerTumunuOku.getInstanceTumunuOku();

            // ***********************
            {
                // olustur
                string Mesaj = "";
                for (int i = 0; i < Program.ltrm.Count; i++)
                {
                    Mesaj += "\r\nKart No: " + Convert.ToString(i + 1) + ", TerminalAdı: " + Program.ltrm[i].TerminalAdi + ", TCKimlikNo: " + Program.ltrm[i].TCKimlikNo + ", AdSoyad: " + Program.ltrm[i].AdiSoyadi + ", KartTipi: " + Program.ltrm[i].KartTipi + ", SlotID: " + Program.ltrm[i].SlotID;
                }
                if (Program.ltrm.Count > 0)
                {
                    MessageBox.Show("Kartlar okundu: " + Mesaj, "Kayıt Bilgisi");
                }
            }

            return;
        }
Exemplo n.º 2
0
        public bool KartveOkuyucuKontrol()
        {
            // ilk giriste terminal sayisini degiskene kaydet, sertifikayi goster ve degiskene kaydet
            String[] terminals = SmartOp.getCardTerminals();
            Program.TerminalSayisi = terminals.Length;

            if (terminals == null || terminals.Length == 0)
            {
                MesajiIsle("Kart takılı bir kart okuyucu bulunamadı. E-İmza programına girmeden evvel imza için kullanacağınız kartı takmalısınız.", 1);
                // eskiden bundan sonra cikartmiyordum, eimza kısmında kart değiştigi veya sonradan takıldığı ortaya cikiyordu.
                // orada uyari alip cikiyordu (karti programa girdikten sonra degistirmeyin veya onceden takiniz gibi...)
                // Bir tus konulup kartlari Oku diye girdikten sonra manuel olarak kart bilgisi almasi saglanabilir ama gerekli oldugunu sanmiyorum.
                //MessageBox.Show("Kart takılı kart okuyucu bulunamadı", "", MessageBoxButtons.OK,
                //             System.Windows.Forms.MessageBoxIcon.Error,
                //             System.Windows.Forms.MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                return(false);
                // throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
            }
            SmartCardManager scmgr = SmartCardManager.getInstance();

            {
                ECertificate signingCert = scmgr.getSignatureCertificate(true, false);
                lbSertifikaSahibi.Text   = "Sertifika ve Sahiplik Bilgisi: " + signingCert.ToString();
                Program.SertifikaBilgisi = "Sertifika ve Sahiplik Bilgisi: " + signingCert.ToString();
                //lbTCKimlikNo.Text = TerminalSayisi
            }

            return(true);
        }
Exemplo n.º 3
0
        private SmartCardManager()
        {
            try
            {
                Console.WriteLine("New SmartCardManager will be created");
                String[] terminals = SmartOp.getCardTerminals();
                String   terminal;
                //List<CardTypeConfig> cards = new SmartCardConfigParser().readConfig();
                //CardType.applyCardTypeConfig(cards);

                if (terminals == null || terminals.Length == 0)
                {
                    throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                if (terminals.Length > 1)
                {
                    throw new SmartCardException("Birden fazla kart okuyucu bulundu.");
                }

                Console.WriteLine("Kart okuyucu sayısı : " + terminals.Length);

                int index = 0;
                if (terminals.Length == 1)
                {
                    terminal = terminals[index];
                }
                else
                {
                    //index = askOption(null, null, terminals, "Okuyucu Listesi", new String[] { "Tamam" });
                    terminal = terminals[index];
                }
                Console.WriteLine("PKCS11 Smartcard will be created");
                Pair <long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);

                bsc = new P11SmartCard(slotAndCardType.getmObj2());
                bsc.openSession(slotAndCardType.getmObj1());

                mSerialNumber = StringUtil.ToString(bsc.getSerial());
                mSlotCount    = terminals.Length;
            }
            catch (SmartCardException e)
            {
                throw new SmartCardException("Kart Okunurken bir hata oluştu(SC).", e);
            }
            catch (PKCS11Exception e)
            {
                throw new SmartCardException("Kart okunurken bir hata oluştu(PKCS11).", e);
            }
            catch (IOException e)
            {
                throw new SmartCardException("Kart okunurken bir hata oluştu(IO).", e);
            }
            catch (Exception e)
            {
                throw new SmartCardException("Genel bir hata oluştu(E)", e);
            }
        }
Exemplo n.º 4
0
        private void button1_Click(object sender, EventArgs e)
        {
            String[] terminals = SmartOp.getCardTerminals();
            if (terminals == null || terminals.Length == 0)
            {
                MesajiIsle("Kart takılı bir kart okuyucu bulunamadı-Kart Kontrol İşlemi", 1);
                return;
            }
            // eger tum kartlari kendisi kontrol edip oto. imzalayacaksa askoption calistirma,
            // for dongusunde tum kartlari ve kartlardaki tum sertifikalari gezip bunlari arraya, sonrasinda da tabloya at
            // imzalama asamasinda tckimlikno uyusmamasi gibi bir durum olursa ancak o zaman tum kartlari bir kez daha
            // dolasarak db tablodaki kart ve sertifikalarin slot nolarini yenile

            // ***********************
            // alt satirda hem kartlar hem sertifikalar hem ltrm class dolduruluyor
            SmartCardManagerTumunuOku scmgr = SmartCardManagerTumunuOku.getInstanceTumunuOku();

            // ***********************
            {
                // sql olustur
                String SqlCumlesi = "";
                SqlCumlesi = "Delete AkilliKartlar ";

                for (int i = 0; i < Program.ltrm.Count; i++)
                {
                    SqlCumlesi += " insert into AkilliKartlar (FisNo, TerminalAdi,TCKimlikNo,AdiSoyadi,InsertDate, KartTipi, SlotID) values ('" +
                                  Convert.ToString(i + 1) + "','" + Program.ltrm[i].TerminalAdi + "','" + Program.ltrm[i].TCKimlikNo + "','" + Program.ltrm[i].AdiSoyadi + "', getdate(), '" + Program.ltrm[i].KartTipi + "', '" + Convert.ToInt64(Program.ltrm[i].SlotID) + "' )";
                }
                if (Program.ltrm.Count > 0)
                {
                    if (Program.ParamSQLServer == "")
                    {
                        MesajiIsle("SQL Server bağlantı bilgileri eksik. Kayıt işlemi yapılamadı.", 0);
                        //return;
                    }
                    if (Program.ParamSQLUser == "")
                    {
                        MesajiIsle("SQL Server bağlantı bilgileri eksik. Kayıt işlemi yapılamadı.", 0);
                        return;
                    }
                    if (Program.ParamSQLPassword == "")
                    {
                        MesajiIsle("SQL Server bağlantı bilgileri eksik. Kayıt işlemi yapılamadı.", 0);
                        return;
                    }
                    // dbye kaydet
                    SqlConnection SQLFormVeriBaglantisi = new SqlConnection();
                    SQLFormVeriBaglantisi.ConnectionString = "server=" + Program.ParamSQLServer + ";user="******";pwd=" + Program.ParamSQLPassword + ";database=konur;";
                    SQLFormVeriBaglantisi.Open();
                    SqlCommand qryVeriKaydet = new SqlCommand(SqlCumlesi, SQLFormVeriBaglantisi);
                    qryVeriKaydet.ExecuteNonQuery();
                    SQLFormVeriBaglantisi.Close();
                    MessageBox.Show("Kayıt işlemi Tamamlandı", "Kayıt Bilgisi");
                }
            }

            return;
        }
Exemplo n.º 5
0
        /*
         *
         * @throws SmartCardException
         */

        /**
         * BaseSigner interface for the requested certificate. Do not forget to logout after your crypto
         * operation finished
         * @param aCardPIN
         * @param aCert
         * @return
         * @throws SmartCardException
         */

        public SmartCardManager()
        {
            try
            {
                LOGGER.Debug("New SmartCardManager will be created");
                String[] terminals = SmartOp.getCardTerminals();
                String   terminal;


                if (terminals == null || terminals.Length == 0)
                {
                    MesajiIsle("Kart takılı kart okuyucu bulunamadı-SmartCardManager", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                    // throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                LOGGER.Debug("Kart okuyucu sayısı : " + terminals.Length);
                if (terminals.Length != Program.TerminalSayisi && Program.TerminalSayisi != 0)
                {
                    MesajiIsle("Kart seçildikten sonra imzalama aşamasında yeni kart okuyucu takıldı.", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                }
                Program.TerminalSayisi = terminals.Length;
                int index = 0;
                if (terminals.Length == 1)
                {
                    terminal = terminals[index];
                }
                else
                {
                    index    = askOption(null, null, terminals, "Okuyucu Listesi", new String[] { "Tamam" });
                    terminal = terminals[index];
                }
                Pair <long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);
                bsc = new P11SmartCard(slotAndCardType.getmObj2());
                bsc.openSession(slotAndCardType.getmObj1());

                mSerialNumber = StringUtil.ToString(bsc.getSerial());
                mSlotCount    = terminals.Length;
            }
            catch (SmartCardException e)
            {
                throw e;
            }
            catch (PKCS11Exception e)
            {
                throw new SmartCardException("Pkcs11 exception", e);
            }
            catch (IOException e)
            {
                throw new SmartCardException("Smart Card IO exception - Detay bilgilerine bakınız", e);
            }
        }
Exemplo n.º 6
0
        public static SmartCardManager getInstance()
        {
            if (mSCManager == null)
            {
                mSCManager = new SmartCardManager();
                return(mSCManager);
            }
            else
            {
                //Check is there any change
                try
                {
                    //If there is a new card in the system, user will select a smartcard.
                    //Create new SmartCard.
                    if (mSCManager.getSlotCount() < SmartOp.getCardTerminals().Length)
                    {
                        LOGGER.Debug("New card pluged in to system");
                        mSCManager = null;
                        return(getInstance());
                    }

                    //If used card is removed, select new card.
                    String availableSerial = null;
                    try
                    {
                        availableSerial = StringUtil.ToString(mSCManager.getBasicSmartCard().getSerial());
                    }
                    catch (SmartCardException ex)
                    {
                        LOGGER.Debug("Card removed");
                        mSCManager = null;
                        return(getInstance());
                    }
                    if (!mSCManager.getSelectedSerialNumber().Equals(availableSerial))
                    {
                        LOGGER.Debug("Serial number changed. New card is placed to system");
                        mSCManager = null;
                        return(getInstance());
                    }

                    return(mSCManager);
                }
                catch (SmartCardException e)
                {
                    mSCManager = null;
                    throw;
                }
            }
        }
Exemplo n.º 7
0
        /**
         *
         * @throws SmartCardException
         */

        private SmartCardManager()
        {
            try
            {
                LOGGER.Debug("New SmartCardManager will be created");
                String[] terminals = SmartOp.getCardTerminals();
                String   terminal;


                if (terminals == null || terminals.Length == 0)
                {
                    throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                LOGGER.Debug("Kart okuyucu sayısı : " + terminals.Length);

                int index = 0;
                if (terminals.Length == 1)
                {
                    terminal = terminals[index];
                }
                else
                {
                    index    = askOption(null, null, terminals, "Okuyucu Listesi", new String[] { "Tamam" });
                    terminal = terminals[index];
                }
                LOGGER.Debug("PKCS11 Smartcard will be created");
                Pair <long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);
                bsc = new P11SmartCard(slotAndCardType.getmObj2());
                bsc.openSession(slotAndCardType.getmObj1());


                mSerialNumber = StringUtil.ToString(bsc.getSerial());
                mSlotCount    = terminals.Length;
            }
            catch (SmartCardException e)
            {
                throw e;
            }
            catch (PKCS11Exception e)
            {
                throw new SmartCardException("Pkcs11 exception", e);
            }
            catch (IOException e)
            {
                throw new SmartCardException("Smart Card IO exception", e);
            }
        }
Exemplo n.º 8
0
        public bool KartveOkuyucuKontrol()
        {
            String[] terminals = SmartOp.getCardTerminals();
            Program.TerminalSayisi = terminals.Length;

            if (terminals == null || terminals.Length == 0)
            {
                return(false);
            }
            SmartCardManager scmgr = SmartCardManager.getInstance();

            {
                ECertificate signingCert = scmgr.getSignatureCertificate(true, false);
                LBLTCKIMLIK.Text  = Bul(signingCert.ToString(), "SERIALNUMBER=", ",");
                LBLADISOYADI.Text = Bul(signingCert.ToString(), "CN=", ",");
                LBLSERIAL.Text    = Bul(signingCert.ToString(), "Serial:", "Valid from").TrimStart(' ');
                LBLBASTARIH.Text  = Bul(signingCert.ToString(), "Valid from", "to").TrimStart(' ').TrimEnd(' ');
                LBLBITTARIH.Text  = Bul(signingCert.ToString(), " to", "Ca:").TrimStart(' ').TrimEnd(' ');

                DateTime bitis_tarihi     = DateTime.Parse(LBLBITTARIH.Text);
                DateTime baslangic_tarihi = DateTime.Parse(LBLBASTARIH.Text);
                DateTime simdi            = DateTime.Now;
                int      kalangun         = GunFarkikBul(simdi, bitis_tarihi);

                if (bitis_tarihi < simdi)
                {
                    LBLKALANGUN.Text      = "- " + kalangun.ToString();
                    LBLKALANGUN.ForeColor = Color.Red;
                }
                else
                {
                    LBLKALANGUN.Text = kalangun.ToString();
                }

                Program.SertifikaBilgisi = "Sertifika ve Sahiplik Bilgisi: " + signingCert.ToString();
            }

            return(true);
        }
Exemplo n.º 9
0
 public string[] getTerminals()
 {
     return(SmartOp.getCardTerminals());
 }
Exemplo n.º 10
0
        /*
         *
         * @throws SmartCardException
         */

        /**
         * BaseSigner interface for the requested certificate. Do not forget to logout after your crypto
         * operation finished
         * @param aCardPIN
         * @param aCert
         * @return
         * @throws SmartCardException
         */

        public SmartCardManager()
        {
            try
            {
                LOGGER.Debug("New SmartCardManager will be created");
                String terminal;

                int      index     = 0;
                String[] terminals = SmartOp.getCardTerminals();

                if (terminals == null || terminals.Length == 0)
                {
                    MesajiIsle("Kart takılı kart okuyucu bulunamadı (SmartCardManager)", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                    // throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                LOGGER.Debug("Kart okuyucu sayısı : " + terminals.Length);
                if (terminals.Length != Program.TerminalSayisi && Program.TerminalSayisi != 0)
                {
                    MesajiIsle("Kart seçildikten sonra imzalama aşamasında yeni kart okuyucu takıldı.", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                }

                // MesajiIsle("Bilgi 1 - Terminal: " + terminal, 0);
                try
                {  // karttipi bastan parametre ile gelmisse
                    if (Program.ParamCardType != "")
                    {
                        Program.ParamSlotID = SmartOp.findSlotNumber(CardTypeConverter.AsCardType(Program.ParamCardType)).ToString();
                        bsc           = new P11SmartCard(CardTypeConverter.AsCardType(Program.ParamCardType));
                        mSerialNumber = StringUtil.ToString(bsc.getSerial(Convert.ToInt64(Program.ParamSlotID)));
                        bsc.openSession(Convert.ToInt64(Program.ParamSlotID));

                        Program.CardType = Program.ParamCardType;
                    }
                    else
                    {
                        if (terminals.Length == 1)
                        {
                            terminal = terminals[index];
                        }
                        else
                        {
                            index    = askOption(null, null, terminals, "Okuyucu Listesi", new String[] { "Tamam" });
                            terminal = terminals[index];
                        }
                        // burada try catch gerek olmadan kart tipi ve slot id tesbit ediliyor...
                        // ama sadece akis icin calisiyor, safesign da calismadi
                        Pair <long, CardType> slotAndCardType = SmartOp.getSlotAndCardType(terminal);
                        //  MesajiIsle("Bilgi 2 - Terminal: " + terminal + " SmartCard Type: " + slotAndCardType.getmObj2().ToString() + " SlotID: " + slotAndCardType.getmObj1().ToString(), 0);
                        // bulunan kart type kullanilarak kart yapisi olusturuluyor
                        bsc = new P11SmartCard(slotAndCardType.getmObj2());
                        // olusturulan kart yapisi bulunan slotid kullanilarak aciliyor
                        bsc.openSession(slotAndCardType.getmObj1());
                        Program.ParamSlotID = slotAndCardType.getmObj1().ToString();
                        Program.CardType    = slotAndCardType.getmObj2().ToString();
                        Program.Terminal    = terminal;
                    }
                }
                catch
                {
                    // etugra
                    //bsc = new P11SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);
                    //bsc.openSession(52481);
                    //MessageBox.Show(index.ToString() + " nolu terminal serino");
                    //MessageBox.Show(StringUtil.ToString(bsc.getSerial()));
                    //MessageBox.Show("Serino gösterdi");
                    // continue;
                    // bu slot id belirleme ve open session kismini, manuel imzalamada signerhelp icerisine aldim, yoksa
                    // burada acilan sessioni gormuyordu bir sekilde. bu kisim sertifika okuma ozelligi cozulebilirse iptal edilebilir belki...

                    long[] PresentSlots;
                    // long[] PresentSerials;
                    try
                    {
                        sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.AKIS);
                        if (Program.ParamSlotID == "")
                        {
                            FindSlotID();
                        }

                        string s = new string(sc.getSlotInfo(Convert.ToInt64(Program.ParamSlotID)).slotDescription);
                        s = new string(sc.getSlotInfo(Convert.ToInt64(Program.ParamSlotID)).manufacturerID);
                        s = sc.getSlotInfo(Convert.ToInt64(Program.ParamSlotID)).ToString();
                        // MesajiIsle("slotDescription (SlotID(" +Program.ParamSlotID+"): "+ s, 0);
                        //Program.ParamSlotIndex = index.ToString();
                        Program.CardType = sc.getCardType().ToString();
                        bsc = new P11SmartCard(sc.getCardType());
                        // MesajiIsle("Bilgi 3 - SmartCard Type: " + sc.getCardType().ToString() + " SlotID: " + Program.ParamSlotID, 0);
                        bsc.openSession(Convert.ToInt64(Program.ParamSlotID));
                    }
                    catch
                    {
                        try
                        {
                            sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);
                            if (Program.ParamSlotID == "")
                            {
                                FindSlotID();
                            }

                            string s = new string(sc.getSlotInfo(Convert.ToInt64(Program.ParamSlotID)).slotDescription);
                            // MesajiIsle("slotDescription (SlotID(" +Program.ParamSlotID+"): "+ s, 0);
                            //Program.ParamSlotIndex = index.ToString();
                            Program.CardType = sc.getCardType().ToString();
                            bsc = new P11SmartCard(sc.getCardType());
                            // MesajiIsle("Bilgi 3 - SmartCard Type: " + sc.getCardType().ToString() + " SlotID: " + Program.ParamSlotID, 0);
                            bsc.openSession(Convert.ToInt64(Program.ParamSlotID));
                        }
                        catch
                        {
                            try
                            {
                                sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.GEMPLUS);
                            }
                            catch
                            {
                                try
                                {
                                    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.TKART);
                                }
                                catch
                                {
                                    try
                                    {
                                        sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.ALADDIN);
                                    }
                                    catch
                                    {
                                        try
                                        {
                                            sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SEFIROT);
                                            //PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                                            //for (m = 0; m < PresentSlots.Length; m++)
                                            //{
                                            //    ListSmartCard.Add(new P11SmartCard(sc.getCardType()));
                                            //    ListSmartCard[index].openSession(PresentSlots[m]); // etugra icin 52481
                                            //    tekkartSerialNumber = StringUtil.ToString(ListSmartCard[index].getSerial());
                                            //    // sertifika getirme islemi
                                            //    ImzaSertifikasiGetirTek(true, false, index);
                                            //    PresentSlots[m].ToString();
                                            //    index = index + 1;
                                            //}
                                        }
                                        catch
                                        { }
                                    }
                                }
                            }
                        }
                    }
                    if (sc != null)
                    {
                        PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                        // PresentSerials = sc.getTokenSerialNo();
                        // secim kutusu haline getirerek slotid al
                        index = 0;
                        // long SlotID = 0;
                        if (PresentSlots.Length == 1)
                        {
                            Program.ParamSlotID = PresentSlots[index].ToString();
                        }
                        else
                        {
                            Program.ParamSlotID = askOptionValue(null, null, PresentSlots, "Slot Listesi", new String[] { "Tamam" });
                        }
                        // sc.getSlotInfo(slots[0]).slotDescription;
                        string s = new string(sc.getSlotInfo(Convert.ToInt64(Program.ParamSlotID)).slotDescription);
                        // MesajiIsle("slotDescription (SlotID(" +Program.ParamSlotID+"): "+ s, 0);
                        //Program.ParamSlotIndex = index.ToString();
                        Program.CardType = sc.getCardType().ToString();
                        bsc = new P11SmartCard(sc.getCardType());
                        // MesajiIsle("Bilgi 3 - SmartCard Type: " + sc.getCardType().ToString() + " SlotID: " + Program.ParamSlotID, 0);
                        bsc.openSession(Convert.ToInt64(Program.ParamSlotID));

                        //bsc.openSession(SlotID);
                        //MessageBox.Show("bsc.login(5255)");
                        //bsc.login("5255");
                        //MessageBox.Show("login ok");
                    }
                    else
                    {
                        MesajiIsle("Kart tipi belirlenemedi", 0);
                    }
                }

                mSerialNumber = StringUtil.ToString(bsc.getSerial());
                mSlotCount    = terminals.Length;
            }
            catch (SmartCardException e)
            {
                throw e;
            }
            catch (PKCS11Exception e)
            {
                throw new SmartCardException("Pkcs11 exception", e);
            }
            catch (IOException e)
            {
                throw new SmartCardException("Smart Card IO exception - Detay bilgilerine bakınız", e);
            }
        }
Exemplo n.º 11
0
        /*
         *
         * @throws SmartCardException
         */

        /**
         * BaseSigner interface for the requested certificate. Do not forget to logout after your crypto
         * operation finished
         * @param aCardPIN
         * @param aCert
         * @return
         * @throws SmartCardException
         */

        //  public delegate void tm();
        public SmartCardManagerTumunuOku()
        {
            try
            {
                LOGGER.Debug("New SmartCardManagerToplu will be created");
                String[] terminals = SmartOp.getCardTerminals();

                if (terminals == null || terminals.Length == 0)
                {
                    MesajiIsle("Kart takılı kart okuyucu bulunamadı-SmartCardManagerTumunuOku", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                    // throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                mSlotCount = terminals.Length;
                int index = 0;
                bsc = new List <IBaseSmartCard>();
                Program.ltrm.Clear();
                long[] PresentSlots;
                int    m;
                //string SlotID;
                SmartCard sc;
                // kartlari turlerine gore denetleyip getSignatureCertificateTek tek bsc listesine ekleyip
                // TC, AdSoyad, SlotID ve CardType bilgilerini topla. terminal iptal...

                // yeni sekil tum kartlari bu sekilde okumayi dene
                //if (Program.ParamCardType != "")
                {   // meltemde o oldugu icin sadece safesign gonderip onu toplamak yerine kart tiplerinin tümünü ardarda da deneyebiliriz...
                    // bu zaten tum kart tipşerini ve slotlarini ciftler halinde getiriyor. guzel... 26.12.2015 ikazanci
                    //List <Pair<long, CardType>> slotAndCardType = SmartOp.findCardTypesAndSlots(CardTypeConverter.AsCardType(Program.ParamCardType).getApplication());
                    //for (m = 0; m < slotAndCardType.Count; m++)
                    //{
                    //    SlotID = slotAndCardType[m].getmObj1().ToString();
                    //    bsc.Add(new P11SmartCard(slotAndCardType[m].getmObj2()));
                    //    bsc[index].openSession(slotAndCardType[m].getmObj1()); // etugra icin 52481
                    //    mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial(Convert.ToInt64(SlotID))));
                    //    // sertifika getir
                    //    getSignatureCertificateTek(true, false, index);
                    //    terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", slotAndCardType[m].getmObj2().ToString(), slotAndCardType[m].getmObj1().ToString());
                    //    bsc[index].closeSession();
                    //    index = index + 1;
                    //}
                    sc           = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);
                    PresentSlots = sc.getTokenPresentSlotList(); // getTokenPresentSlotList(); // tokenli slot listesini al
                    for (m = 0; m < PresentSlots.Length; m++)
                    {
                        bsc.Add(new P11SmartCard(sc.getCardType()));
                        bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                        mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                        // sertifika getir
                        getSignatureCertificateTek(true, false, index);
                        terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                        index = index + 1;
                    }
                }

                // ...
                // ...
                // yeni sekil sonu

                if (1 == 0)
                {
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.ALADDIN);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //        mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //        // sertifika getir
                    //        getSignatureCertificateTek(true, false, index);
                    //        terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //        index = index + 1;
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.AKIS);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        //MessageBox.Show(sc.getCardType().ToString() + " " + PresentSlots[m].ToString());
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            // bsc[index].openSession(PresentSlots[m]);
                    //            var t = new tm(() => KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 500;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            DelayAction(1000, timer.Stop);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }

                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        //MessageBox.Show(sc.getCardType().ToString() + " " + PresentSlots[m].ToString());
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            // bsc[index].openSession(PresentSlots[m]);
                    //            var t = new tm(() => KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 500;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            DelayAction(1000, timer.Stop);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.GEMPLUS);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.TKART);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SEFIROT);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.AEPKEYPER);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }

                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.AKIS_KK);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }

                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.CARDOS);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.DATAKEY);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.KEYCORP);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }

                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.NCIPHER);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }

                    //try
                    //{
                    //    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.UTIMACO);
                    //    PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                    //    for (m = 0; m < PresentSlots.Length; m++)
                    //    {
                    //        bsc.Add(new P11SmartCard(sc.getCardType()));
                    //        try
                    //        {
                    //            SessionOpened = 0;
                    //            var t = new tm(() => SessionOpened = KartAc(index, PresentSlots[m]));
                    //            var timer = new System.Timers.Timer();
                    //            timer.Interval = 5000;
                    //            timer.AutoReset = false;
                    //            timer.Start();
                    //            timer.Elapsed += (sender, e) => timer_Elapsed(t);
                    //            t.BeginInvoke(null, null);
                    //            // bsc[index].openSession(PresentSlots[m]); // etugra icin 52481
                    //            if (SessionOpened == 1)
                    //            {
                    //                mSerialNumber.Add(StringUtil.ToString(bsc[index].getSerial()));
                    //                // sertifika getirme islemi
                    //                getSignatureCertificateTek(true, false, index);
                    //                terminalekle(GetTcNo(mSignatureCert[index].ToString()), GetAdSoyad(mSignatureCert[index].ToString()), "", sc.getCardType().ToString(), PresentSlots[m].ToString());
                    //                index = index + 1;
                    //            }
                    //            else
                    //            {
                    //                bsc.RemoveAt(index);
                    //            }
                    //        }
                    //        catch { bsc.RemoveAt(index); }
                    //    }
                    //}
                    //catch
                    //{ }
                }
                // iptal edilen kisim sonu
            }

            catch (SmartCardException e)
            {
                MesajiIsle("Takılı bütün kartların listelemesi yapılamadı, muhtemelen sistemde farklı türde bir kart takılı: " + e.Message, 1);
                // throw e;
            }
            catch (PKCS11Exception e)
            {
                throw new SmartCardException("Pkcs11 exception", e);
            }
            catch (IOException e)
            {
                throw new SmartCardException("Smart Card IO exception - Detay bilgilerine bakınız", e);
            }
        }
Exemplo n.º 12
0
        /*
         *
         * @throws SmartCardException
         */

        /**
         * BaseSigner interface for the requested certificate. Do not forget to logout after your crypto
         * operation finished
         * @param aCardPIN
         * @param aCert
         * @return
         * @throws SmartCardException
         */

        public SmartCardManagerKimlikNodanSec(int desktop)
        {
            try
            {
                LOGGER.Debug("New SmartCardManager will be created");
                String[] terminals = SmartOp.getCardTerminals();

                if (terminals == null || terminals.Length == 0)
                {
                    MesajiIsle("İçinde kart takılı bir kart okuyucu bulunamadı-SmartCardManagerKimlikNodanSec", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                    // throw new SmartCardException("Kart takılı kart okuyucu bulunamadı");
                }

                LOGGER.Debug("Kart okuyucu sayısı : " + terminals.Length);
                if (terminals.Length != Program.TerminalSayisi && Program.TerminalSayisi != 0)
                {
                    MesajiIsle("Kart seçildikten sonra imzalama aşamasında yeni kart okuyucu takıldı.", 1);
                    Program.KartOkuyucuYok = 1;
                    return;
                }

                if (desktop == 0)
                {
                    //*******************************
                    // sadece parametre ile gelen slotID & karttipine session ac
                    //*******************************
                    // dbden oku
                    MesajiIsle("ParamSQLServer:" + Program.ParamSQLServer + " " + Program.ParamSlotID, 0);
                    String SqlCumlesi = "";
                    SqlCumlesi = "select * from AkilliKartlar where TCKimlikNo = '" + Program.ParamTCKimlikNo + "' and SlotID = " + Program.ParamSlotID;
                    SqlConnection SQLFormVeriBaglantisi = new SqlConnection();
                    SQLFormVeriBaglantisi.ConnectionString = "server=" + Program.ParamSQLServer + ";user="******";pwd=" + Program.ParamSQLPassword + ";database=konur;";
                    SQLFormVeriBaglantisi.Open();
                    SqlCommand    qryVeriOku = new SqlCommand(SqlCumlesi, SQLFormVeriBaglantisi);
                    SqlDataReader reader = qryVeriOku.ExecuteReader();
                    string        KayitliKartTipi = "", KayitliAdiSoyadi = "", KayitliPinKodu = "";
                    //while (
                    reader.Read();
                    KayitliKartTipi  = reader["KartTipi"].ToString().Trim();
                    KayitliAdiSoyadi = reader["AdiSoyadi"].ToString().Trim();
                    reader.Close();

                    // ikinci veri okuma kismi
                    // PIN kodunun teyidi
                    SqlCumlesi             = "select EimzaPin from TnmPersonel where TCKimlikNo = '" + Program.ParamTCKimlikNo + "' and isnull(EimzaPin,'') <> '' and CalismaDurumu = 'E' ";
                    qryVeriOku.CommandText = SqlCumlesi;
                    reader = qryVeriOku.ExecuteReader();
                    reader.Read();
                    KayitliPinKodu = reader["EimzaPin"].ToString().Trim();
                    reader.Close();

                    // baglantiyi kapat
                    SQLFormVeriBaglantisi.Close();
                    if (KayitliKartTipi == "")
                    {
                        MesajiIsle("Kart Tipi kaydı AkilliKartlar tablosunda bulunamadı", 1);
                    }
                    if (KayitliPinKodu == "")
                    {
                        MesajiIsle("PIN Kodu kaydı Personel tablosunda bulunamadı. TCKimlikNo: " + Program.ParamTCKimlikNo, 1);
                    }
                    if (KayitliPinKodu != Program.ParamPin)
                    {
                        MesajiIsle("Bulunan PIN Kodu kaydı gelen PIN kodu ile eşleşmiyor. TnmPersonel PIN: " + KayitliPinKodu + " Param.PIN: " + Program.ParamPin + " TCKimlikNo: " + Program.ParamTCKimlikNo, 1);
                    }
                    MesajiIsle("KayitliKartTipi Okundu:" + KayitliKartTipi + " " + KayitliAdiSoyadi + "SlotID: " + Program.ParamSlotID, 0);

                    // MesajiIsle("Secili SlotID:" + PTerminal, 0);

                    try
                    {
                        bsc = new P11SmartCard(CardTypeConverter.AsCardType(KayitliKartTipi));
                        MesajiIsle("new P11SmartCard ok: " + KayitliKartTipi, 0);
                        bsc.openSession(Convert.ToInt64(Program.ParamSlotID));
                    }
                    catch
                    {
                        MesajiIsle("Kartı otomatik açmada hata oluştu:" + KayitliKartTipi + " " + KayitliAdiSoyadi, 0);
                        //// etugra
                        //bsc = new P11SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);
                        //bsc.openSession(52481);
                        ////MessageBox.Show(index.ToString() + " nolu terminal serino");
                        ////MessageBox.Show(StringUtil.ToString(bsc.getSerial()));
                        ////MessageBox.Show("Serino gösterdi");
                        //// continue;
                    }
                    mSerialNumber = StringUtil.ToString(bsc.getSerial());
                    mSlotCount    = terminals.Length;
                    getSignatureCertificate(true, false);

                    String Temp = mSignatureCert.ToString();

                    int startIndex1 = Temp.IndexOf("SERIALNUMBER=");
                    //TC = Temp.Substring(startIndex1 + 13, 11);

                    // adsoyad alma
                    int startIndex2 = Temp.IndexOf("CN=");
                    int endIndex = Temp.IndexOf(",", startIndex2);
                    //Ad=Temp.Substring(startIndex2 + 3, endIndex - (startIndex2 + 3));

                    if (Program.ParamTCKimlikNo == Temp.Substring(startIndex1 + 13, 11) && Program.ParamAdiSoyadi == Temp.Substring(startIndex2 + 3, endIndex - (startIndex2 + 3)))
                    {
                        MesajiIsle("Otomatik olarak dogru karta konumlandi", 0);
                    }
                    else
                    {// MesajiIsle("Dogru karta konumlanamadi. Karttaki TCNo ve Isim:" +
                     //    Temp.Substring(startIndex1 + 13, 11) +" "+ Temp.Substring(startIndex2 + 3, endIndex - (startIndex2 + 3))+
                     //    ", Recetedeki Doktor TCNo ve Isim:" + Program.ParamTCKimlikNo + " " + Program.ParamAdiSoyadi, 1);
                    }
                }
                else
                {
                    // desktop = 1 ise
                    // imzalama oncesi session acma kismi
                    //*******************************
                    // kart tipini deneyerek bul ve o kart tipine session ac
                    //*******************************
                    try
                    {
                        // sadece parametre ile gelen (giriste ilk timerda okunuyor ya) slotID & karttipine session ac
                        bsc = new P11SmartCard(CardTypeConverter.AsCardType(Program.CardType));
                        bsc.openSession(Convert.ToInt64(Program.ParamSlotID));
                        // sonra tc, serial kontrolu falan yapmak lazim programa girip oto. kart okunduktan sonra kart degismis mi diye
                        // ..
                        // ...
                    }
                    catch
                    {
                        SmartCard sc       = null;
                        string    KartTipi = ""; //, AdiSoyadi = "", TCKimlikNo = "";
                        // aslinda giriste okudugundan burada sadece giriste elde edilen terminal, slotid ve cardtype degerleri uzerinden baglanip
                        // seri no kontrolu yapmali try sc catch kisimlarini kaldirmali sadece giriste birakmali... 11.12.2015
                        try
                        {
                            sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.AKIS);
                        }
                        catch
                        {
                            try
                            {
                                sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SAFESIGN);
                            }
                            catch
                            {
                                try
                                {
                                    sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.GEMPLUS);
                                }
                                catch
                                {
                                    try
                                    {
                                        sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.TKART);
                                    }
                                    catch
                                    {
                                        try
                                        {
                                            sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.ALADDIN);
                                        }
                                        catch
                                        {
                                            try
                                            {
                                                sc = new SmartCard(tr.gov.tubitak.uekae.esya.api.smartcard.pkcs11.CardType.SEFIROT);
                                                //PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                                                //for (m = 0; m < PresentSlots.Length; m++)
                                                //{
                                                //    ListSmartCard.Add(new P11SmartCard(sc.getCardType()));
                                                //    ListSmartCard[index].openSession(PresentSlots[m]); // etugra icin 52481
                                                //    tekkartSerialNumber = StringUtil.ToString(ListSmartCard[index].getSerial());
                                                //    // sertifika getirme islemi
                                                //    ImzaSertifikasiGetirTek(true, false, index);
                                                //    PresentSlots[m].ToString();
                                                //    index = index + 1;
                                                //}
                                            }
                                            catch
                                            { }
                                        }
                                    }
                                }
                            }
                        }

                        if (sc != null)
                        {  // slotid tesbit et
                            long[] PresentSlots;
                            // long SlotID = 0;
                            PresentSlots = sc.getTokenPresentSlotList(); // tokenli slot listesini al
                            if (PresentSlots.Length == 1)
                            {
                                Program.ParamSlotID = PresentSlots[0].ToString();
                            }
                            else
                            {
                                Program.ParamSlotID = SmartCardManager.askOptionValue(null, null, PresentSlots, "Slot Listesi", new String[] { "Tamam" });
                            }
                            KartTipi = sc.getCardType().ToString();
                            try
                            {
                                bsc = new P11SmartCard(sc.getCardType());
                                MesajiIsle("SmartCard Type: " + KartTipi + " SlotID: " + Program.ParamSlotID, 0);
                                bsc.openSession(Convert.ToInt64(Program.ParamSlotID));
                            }
                            catch
                            {
                                MesajiIsle("Kartı açmada hata oluştu. Kart Tipi: " + KartTipi + " SlotID: " + Program.ParamSlotID, 0);
                            }
                        }
                        else
                        {
                            MesajiIsle("Kart tipi belirlenemedi", 0);
                        }
                    }
                    //mSerialNumber = StringUtil.ToString(bsc.getSerial());
                    //mSlotCount = terminals.Length;
                    getSignatureCertificate(true, false);

                    String Temp = mSignatureCert.ToString();


                    // adsoyad alma (gereksiz... labela koymak istersen dursun, degilse sil...) 11.12.2015
                    //int startIndex1 = Temp.IndexOf("SERIALNUMBER=");
                    //int startIndex2 = Temp.IndexOf("CN=");
                    //int endIndex = Temp.IndexOf(",", startIndex2);
                    //KartTipi = sc.getCardType().ToString();
                    //TCKimlikNo = Temp.Substring(startIndex1 + 13, 11);
                    //AdiSoyadi = Temp.Substring(startIndex2 + 3, endIndex - (startIndex2 + 3));
                }
            }

            catch (SmartCardException e)
            {
                throw e;
            }
            catch (PKCS11Exception e)
            {
                throw new SmartCardException("Pkcs11 exception", e);
            }
            catch (IOException e)
            {
                throw new SmartCardException("Smart Card IO exception - Detay bilgilerine bakınız", e);
            }
        }