[ soko @ 07.07.2010. 21:12 ] @
Interesuje me da li neko moze da mi objasni na koji nacin pristupiti citacu smart kartica sa web stranice (jsp,jsf)? Trebalo bi da omogucim logovanje na web aplikaciju pomocu smart kartice? Trebalo bi mi nesto sto radi na svim web browserima.
Ako neko ima ideju dobro bi mi dosla?

Hvala unapred
[ ghost in the shell @ 02.08.2010. 11:31 ] @
Ja sam ovim kodom prozvao citac i karticu. Sa samom karticom pricas slanjem APDUa. Sve to radis preko paketa javax.smartcardio.

Code:

package smartKartice;

import java.util.List;
import javax.smartcardio.Card;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.CommandAPDU;
import javax.smartcardio.ResponseAPDU;
import javax.smartcardio.TerminalFactory;

public class Main {

    public static void main(String[] a) {
        TerminalFactory tf = TerminalFactory.getDefault();

        try {
            List<CardTerminal> ctList = ctList = tf.terminals().list();
            System.out.println("Terminali: " + ctList);
            Card card = ctList.get(0).connect("T=0");
            System.out.println("Kartica: " + card);
            System.out.println(card.getATR());
            //posaljiAPDU(card);
            System.out.println("Protokol: " + card.getProtocol());
            card.disconnect(false);
        } catch (CardException ex) {
            ex.printStackTrace();
        }
    }

    private static void posaljiAPDU(Card card) throws CardException {
        CommandAPDU apdu = new CommandAPDU(1, 1, 0, 0);
        CardChannel cc = card.getBasicChannel();
        ResponseAPDU rApdu = cc.transmit(apdu);
        byte[] data = rApdu.getData();
        String response = "";
        for (int i = 0; i < data.length; i++) {
            response += (char) data[i];
        }
        System.out.println("Odgovor: " + response);
    }
}