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; }
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); }
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; }
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); }
/* * * @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); } }