ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:smartcard:erisim

Farklar

Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.

Karşılaştırma görünümüne bağlantı

esya:smartcard:erisim [2013/07/24 06:41]
Beytullah Yiğit removed
— (mevcut)
Satır 1: Satır 1:
-===== Akıllı Karta Erişim ===== 
  
-SmartCard ​ sınıfı ​ akıllı ​ kart  ile  ilgili ​ işlemlerden ​ sorumlu ​ sınıftır. ​ SmartCard ​ sınfının çalıştırılabilmesi için hangi akıllı kartın kullanıldığının bilinmesi gerekmektedir. Çünkü akıllı kart işlemleri ​ akıllı ​ kartın ​ sürücüsü ​ üzerinden ​ yapı lmaktadır. ​ Java  6  ile  java  kütüphaneleri kullanılarak kart bilgilerine erişilip hangi kart olduğu belirlenebilmektedir. Java 5 ve .NET'​te ise hangi akıllı ​ kartın kullanıldığı ​ bilinmelidir. 
- 
-Java  6  için  SmartOp ​ sınıfının ​ findCardTypeAndSlot() ​ fonksiyonu ​ ile  kartın ​ slot numarası ​ ve  kart  tipi  bulunabilmektedir. ​ Eğer  bilgisayara ​ bir  akıllı ​ kart  takılı ​ ise  fonksiyon doğrudan bu kartın bilgilerini dönecektir. ​ Eğer  birden ​ fazla  akıllı ​ kart  takılı ​ ise  javax.swing.JOptionPane ile kullanıcıya akıllı kartlardan biri seçtirilecektir. 
- 
-<sxh java;​title:​Java 6 ve C#> 
-Pair<​Long,​ CardType>​ slotAndCardType = SmartOp.findCardTypeAndSlot();​ 
-Long slot = slotAndCardType.getObject1();​ 
-SmartCard smartCard = new SmartCard(slotAndCardType.getObject2());​ 
-longsession = smartCard.openSession(slot);​ 
-</​sxh>​ 
- 
-Eğer görsel ​ bir arayüzün API  tarafından gösterilmesini ​ istemiyorsanız; ​ SmartOp sınıfının getCardTerminals() fonksiyonu ile akıllı kart  okuyucularının isimlerini ​ alabilirsiniz. ​ Bu isimler ​ ile  kartı kullanıcıya seçtirdikten sonra getSlotAndCardType(String ​ terminal) fonksiyonuyla kullanıcının seçtiği kartın slot numarası ​ ve kart tipi alınabilir. 
- 
-Eğer  kullanıcıya ​ kart  tipine ​ göre  akıllı ​ kartı ​ seçtirmek ​ isteniyorsa, ​ SmartOp ​ sınıfının findCardTypesAndSlots() ​ ile  bağlı ​ olan  bütün ​ kartların ​ slot  numaralarını ​ ve  kart  tiplerini alabilirsiniz. 
-  
-Java 5 ve .NET'​te ise akıllı kartın türü bilinmelidir. Aşağıdaki örnek kodda herhangi ​ bir seçim yapılmadan birinci karta oturum açılmaktadır. SmartCard sınıfının getSlotInfo(Long slot)  foksiyonu ile slot hakkındaki bilgiler edinelebilir, ​ burdaki ​ slot  tanımlamasıyla kullanıcıdan kart seçmesi istenebilir. 
- 
-Akıllı ​ kart  ile  işlem ​ yapmaya ​ başlamak ​ için  openSession() ​ fonksiyonu ​ ile  oturum açılmalıdır. Karttan sertifika okumak için login olmaya gerek yoktur. Yalnız imza çözme veya şifreleme işlemi yapılacaksa karta login olunmalıdır. 
- 
-<sxh java;​title:​Java 5-6 ve C#> 
-SmartCard sc = new SmartCard(CardType.AKIS);​ 
-long [] slots = sc.getSlotList();​ 
-//​sc.getSlotInfo(slots[0]).slotDescription;​ 
-long session = sc.openSession(slots[0]);​ 
-sc.login(session,​ "​12345"​) 
-</​sxh>​ 
- 
-==== Akis Kartlara Erişim ==== 
- 
-Akis kartlara Java 6 kullanıldığında Akis'​in java kütüphanesi kullanılarak komut (APDU) gönderilebilmektedir. Sistemde akis sürücüsü yüklü olmasa bile AkisCIF.x.x.x.jar oldugunda karta erişilmektedir. AkisCIF üzerinden akıllı karta erişmek akıllı kart işlemlerinin süresini dolayısıyla imza süresini kısaltmaktadır. Yalnız AkisCIF üzerinden karta erişildiğinde diğer programlar karta erişememektedir. Yeni bir sürüm akis kart kullanmaya başladığınızda AkisCIF'​i de yenilemeniz gerekecektir. 
- 
-Akıllı karta APDU komutları ile  AkisCIF.x.x.x.jar üzerinden erişilmesinden APDUSmartCard sınıfı sorumludur. Örnek bir kullanım aşağıdaki gibidir. 
- 
-<sxh java;​title:​Java 6>  
-APDUSmartCard sc = new APDUSmartCard();​ 
-long [] slots = sc.getSlotList();​ 
-sc.openSession(slots[0]);​ 
-List<​byte []> certs = sc.getSignatureCertificates();​ 
-CertificateFactory cf = CertificateFactory.getInstance("​X.509"​); ​ 
-X509Certificate cert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(certs.get(0)));​ 
- 
-BaseSignersigner = sc.getSigner(cert,​ Algorithms.SIGNATURE_RSA_SHA1);​ 
-</​sxh>​ 
- 
-Yukarıda da belirtildiği gibi AkisCIF arayüzü bütün kartları desteklemeyebilir. AkisCIF desteklendiğinde AkisCIF ile desteklenmediğinde dll ile işlemlerinizi yapmak için aşağıdaki şekilde kullanabilirsiniz. 
- 
-<sxh java;​title:​Java 6> 
-BaseSmartCard bsc = null; 
-int index = 0; 
-String [] terminals = SmartOp.getCardTerminals();​ 
-String selectedTerminal = terminals[index];​ 
-long slot; 
- 
-if(APDUSmartCard.isSupported(selectedTerminal)) 
-{ 
- bsc = new APDUSmartCard();​ 
- slot = index + 1; 
-} 
-else 
-{ 
- Pair<​Long,​ CardType>​ slotAndCardType = SmartOp.getSlotAndCardType(selectedTerminal);​ 
- slot = slotAndCardType.getObject1();​ 
- bsc = new P11SmartCard(slotAndCardType.getObject2());​ 
-} 
-bsc.openSession(slot);​ 
-</​sxh>​ 
esya/smartcard/erisim.1374648070.txt.gz · Son değiştirilme: 2013/07/24 06:41 Değiştiren: Beytullah Yiğit