===== Akıllı Kart Kütüphanesi Konfigürasyonu =====
Akıllı kart kütüphanesinde konfigürasyon aracılığı ile
- Yeni kart tipi tanımlanabilir
- Kart driver değiştirilebilir
- Tanımlı kart tiplerine, kartı tanımaya yarayan yeni ATR değerleri eklenebilir.Böylece sistemde yeni bir kart(marka/versiyon) kullanılabilir.
Bu işlemler API ile birlikte dağıtılan ''smartcard-config.xml'' adındaki konfigürasyon dosyası ile yapılmaktadır. Bu dosyada ilk değerler vardır. Bu değerler API içinde gömülü olduğu için, yeni bir ayar yapılmayacaksa bu dosyayı kullanmaya gerek yoktur.
Eğer konfigürasyonda değişiklik yapılırsa, konfigürasyon dosyası ''SmartCardConfigParser'' aracılığı ile okunmalı ve ''CardType'' sınıfı, bu konfigürasyondan haberdar edilmelidir.
Örnek Kod: Çalışma dizini içindeki ''smartcard-config.xml'' ile akıllı kart konfigürasyonu yapma.
List cards = new SmartCardConfigParser().readConfig();
CardType.applyCardTypeConfig(cards);
Eğer konfigürasyon dosyası farklı bir isimde ya da başka bir lokasyonda ise ''SmartCardConfigParser'' sınıfının InputStream nesnesi alan metodu da kullanılabilir:
List cards = new SmartCardConfigParser().readConfig(inputStream);
CardType.applyCardTypeConfig(cards);
==== Konfigürasyon ile Kart Tipi Tanımlama ====
Aşağıda örnek bir akıllı kart tanımlaması görülmektedir:
...
'''' elemanı ile kart tipi tanımlanır. '''' elemanı işletim sistemine özel driver belirtmek için kullanılır.
Eğer 32 ve 64 bit mimariler için farklı driver gerekiyorsa bu ayrım ''arch'' özelliği ile aşağıdaki gibi belirtilir.
==== ATR Değeri ====
Kart tipini anlamak için karta özel ATR değerini bilmek gerekmektedir. ATR, Answer To Reset ifadesinin kısaltmasıdır. Protokol gereği kart resetlendiğinde tanıtıcı bir byte dizisi gönderir. Eğer bu byte dizisi biliniyorsa, ve karta özel ayırdedici bilgi içeriyorsa(historical bytes) kart tipi tespit edilebilir. Bilinen her bir ATR byte dizisi için '''' elemanı içine yukarıdaki örnekteki gibi bir '''' elemanı eklenmelidir.
Java ile ATR değeri hesaplamak için aşağıdaki kod parçasını kullanabilirsiniz. Kod ilk terminaldeki(kart okuyucu) akıllı kartın ATRsini ekrana yazdırmaktadır.
Card card = TerminalFactory.getDefault().terminals().list().get(0).connect("*");
ATR atr = card.getATR();
String historicalBytesStr = StringUtil.toString(atr.getHistoricalBytes());
System.out.println("historical bytes >"+historicalBytesStr);
String atrHex = StringUtil.toString(card.getATR().getBytes());
System.out.println("ATR >"+atrHex);