Example usage for javax.smartcardio CardTerminal connect

List of usage examples for javax.smartcardio CardTerminal connect

Introduction

In this page you can find the example usage for javax.smartcardio CardTerminal connect.

Prototype

public abstract Card connect(String protocol) throws CardException;

Source Link

Document

Establishes a connection to the card.

Usage

From source file:Main.java

/**
 * Establishes the connection with the Smart Card (if present)
 * using the first available terminal.//from  w  ww  . j a v a 2  s.  com
 */
public static Card connectCard() throws CardException {
    // Get available terminals
    List<CardTerminal> terminals = TerminalFactory.getDefault().terminals().list();
    if (terminals.size() < 1) {
        throw new CardException("No attached Smart Card terminals found");
    }

    // Search for connected cards
    Card card = null;
    for (CardTerminal terminal : terminals) {
        if (terminal.isCardPresent()) {
            card = terminal.connect("*");
            break;
        }
    }
    if (card == null) {
        throw new CardException("No connected Smart Cards found");
    }

    return card;
}

From source file:net.java.jless.smartcard.SCIOSmartcard.java

/**
 * Constructor taking {@link javax.smartcardio.CardTerminal }.
 * Calls {@link CardTerminal#connect(String)} with <code>"*"</code>.
 * @param terminal card terminal//from   ww  w .  ja  va2  s  . c om
 * @throws CardException if error connecting
 */
public SCIOSmartcard(CardTerminal terminal) throws CardException {
    this(terminal.connect("*"), terminal.getName());
}

From source file:davmail.util.ClientCertificateTest.java

public void testCardReaders() throws CardException {
    for (CardTerminal terminal : TerminalFactory.getDefault().terminals().list()) {
        System.out.println("Card terminal: " + terminal.getName() + " "
                + (terminal.isCardPresent() ? "Card present" : "No card"));
        terminal.waitForCardPresent(10);
        if (terminal.isCardPresent()) {
            Card c = null;// w  ww.ja va2  s  .c  om
            try {
                c = terminal.connect("T=0");
            } catch (Exception e) {
                // failover
                c = terminal.connect("T=1");
            }

            ATR atr = c.getATR();

            byte[] bytes = atr.getBytes();
            System.out.print("card:");

            for (byte b : bytes) {
                System.out.print(" " + Integer.toHexString(b & 0xff));
            }
            System.out.println();

        }
    }
}

From source file:src.eidreader.EstEIDUtil.java

public String readCard(final Boolean full) {
    System.err.println("EIDReader.readCard()");
    return AccessController.doPrivileged(new PrivilegedAction<String>() {
        public String run() {
            try {
                TerminalFactory factory = TerminalFactory.getDefault();
                List<CardTerminal> terminals = factory.terminals().list();

                if (terminals.size() == 0) {
                    return "Error: No card reader found";
                }/* ww  w .  j  a  v a  2  s. c o  m*/
                //~ throws java.lang.IndexOutOfBoundsException when there is no reader
                CardTerminal terminal = terminals.get(0);

                if (!terminal.isCardPresent()) {
                    return "Error: No card found on terminal";
                    //~ return new EidReaderResponse(new String[] { "No card found on terminal" });
                }
                // "The best way to go is, as explained by Shane, to use the wildcard protocol."
                // https://forums.oracle.com/message/10531935
                Card card = terminal.connect("T=0");
                // Card card = terminal.connect("T=1");
                // Card card = terminal.connect("*");
                System.err.println("Protocol: " + card.getProtocol());
                ATR atr = card.getATR();

                CardChannel channel = card.getBasicChannel();

                if (BelgianReader.matchesEidAtr(atr)) {
                    System.err.println("It's a Belgian card");
                    BelgianReader pf = new BelgianReader(channel);
                    return pf.resultAsString(full);
                }

                System.err.println("It's an Estonian card");
                PersonalFile pf = new PersonalFile(channel);
                return pf.resultAsString(full);
                //~ return new String[] { pf.toString() };
                //~ return new EidReaderResponse(pf.getData());
                //~ return pf.getSurName();
            } catch (Throwable e) {
                //~ return new EidReaderResponse(new String[] { e.toString() });
                e.printStackTrace();
                return "Error: " + e.toString();
            }
        }
    });
}

From source file:test.be.fedict.eid.applet.PcscTest.java

@Test
public void testReadPhoto() throws Exception {
    TerminalFactory terminalFactory = TerminalFactory.getDefault();
    CardTerminals cardTerminals = terminalFactory.terminals();
    CardTerminal cardTerminal = cardTerminals.list().get(0);
    Card card = cardTerminal.connect("T=0");
    CardChannel cardChannel = card.getBasicChannel();
    // select file
    cardChannel.transmit(/*from  w w  w. ja v a  2  s.  c  om*/
            new CommandAPDU(0x00, 0xA4, 0x08, 0x0C, new byte[] { 0x3F, 0x00, (byte) 0xDF, 0x01, 0x40, 0x35 }));
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int offset = 0;
    ResponseAPDU responseApdu;
    do {
        // read binary
        responseApdu = cardChannel.transmit(new CommandAPDU(0x00, 0xB0, offset >> 8, offset & 0xFF, 0xff));
        baos.write(responseApdu.getData());
        offset += responseApdu.getData().length;
    } while (responseApdu.getData().length == 0xff);
    BufferedImage photo = ImageIO.read(new ByteArrayInputStream(baos.toByteArray()));
    JOptionPane.showMessageDialog(null, new ImageIcon(photo));
}