ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:smartcard:konfig

Bu, dökümanın eski bir sürümüdür!


Akıllı Kart Kütüphanesi Konfigürasyonu

Akıllı kart kütüphanesinde konfigürasyon aracılığı ile

  1. Yeni kart tipi tanımlanabilir
  2. Kart driver değiştirilebilir
  3. 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 bu 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<CardTypeConfig> cards = new SmartCardConfigParser().readConfig();
        CardType.applyCardTypeConfig(cards);

Eğer konfigürasyon dosyası farklı bir isimde yada başka bir lokasyonda ise SmartCardConfigParser sınıfının InputStream nesnesi alan metodu da kullanılabilir:

        List<CardTypeConfig> 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:

<card-type name="AKIS">
        <lib name="akisp11"/>
        <atr value="3BBA11008131FE4D55454B41452056312E30AE"/>
        <atr value="3B9F968131FE45806755454B41451112318073B3A180E9"/>
        ...
</card-type>

<card-type> elemanı ile kart tipi tanımlanır. <lib> 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.

    <card-type name="NCIPHER">
        <lib name="cknfast" arch="32"/>
        <lib name="cknfast-64" arch="64"/>

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 <card-type> elemanı içine yukarıdaki örnekteki gibi bir <atr> 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);

esya/smartcard/konfig.1374499263.txt.gz · Son değiştirilme: 2013/07/22 13:21 Değiştiren: Beytullah Yiğit