/* * Commons eID Project. * Copyright (C) 2008-2013 FedICT. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version * 3.0 as published by the Free Software Foundation. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, see * http://www.gnu.org/licenses/. */ /** * Manual exercise for BeIDCardManager. * Prints events and list of readers with eid cards. * [short readername] ... * * @author Frank Marien * */ package test.integ.be.fedict.commons.eid.client; import java.math.BigInteger; import javax.smartcardio.Card; import javax.smartcardio.CardTerminal; import org.junit.Test; import be.fedict.commons.eid.client.BeIDCard; import be.fedict.commons.eid.client.BeIDCardManager; import be.fedict.commons.eid.client.event.BeIDCardEventsListener; import be.fedict.commons.eid.client.event.CardEventsListener; public class BeIDCardManagerExercise implements BeIDCardEventsListener, CardEventsListener { private BeIDCardManager beIDCardManager; // --------------------------------------------------------------------------------------------- @Test public void testAsynchronous() throws Exception { this.beIDCardManager = new BeIDCardManager(new TestLogger()); this.beIDCardManager.addBeIDCardEventListener(this); this.beIDCardManager.addOtherCardEventListener(this); this.beIDCardManager.start(); System.err.println("main thread running.. do some card tricks.."); for (;;) { System.out.println("."); Thread.sleep(500); } } // ------------ callbacks that just print to stderr --------------- @Override public void eIDCardInserted(final CardTerminal cardTerminal, final BeIDCard card) { // save card files for later card simulator use // try // { // byte[] identityTLV=card.readFile(FileType.Identity); // byte[] addressTLV=card.readFile(FileType.Address); // // Identity identity=TlvParser.parse(identityTLV,Identity.class); // System.out.println(identity.firstName+" "+identity.name); // // Address address=TlvParser.parse(addressTLV,Address.class); // System.out.println(address.streetAndNumber); // // File atrFile=new File("/tmp/Alice_ATR.bin"); // OutputStream os=new FileOutputStream(atrFile); // os.write(card.getATR().getBytes()); // // for(FileType fileType:FileType.values()) // { // byte[] tlvData=card.readFile(fileType); // System.err.println("Read ["+fileType+"] -> "+tlvData.length+" bytes."); // File file=new File("/tmp/Alice_"+fileType+".tlv"); // OutputStream stream=new FileOutputStream(file); // stream.write(tlvData); // } // // } // catch(CardException e) // { // // TODO Auto-generated catch block // e.printStackTrace(); // } // catch(IOException e) // { // // TODO Auto-generated catch block // e.printStackTrace(); // } System.err.println("eID Card Inserted Into [" + StringUtils.getShortTerminalname(cardTerminal.getName()) + "]"); // StringUtils.printTerminalOverviewLine(beIDCardManager); } @Override public void eIDCardRemoved(final CardTerminal cardTerminal, final BeIDCard card) { System.err.println("eID Card Removed From [" + StringUtils.getShortTerminalname(cardTerminal.getName()) + "]"); } @Override public void cardInserted(final CardTerminal cardTerminal, final Card card) { if (card != null) { System.out.println("Other Card [" + String.format("%x", new BigInteger(1, card.getATR() .getBytes())) + "] Inserted Into Terminal [" + cardTerminal.getName() + "]"); } else { System.out.println("Other Card Inserted Into Terminal [" + cardTerminal.getName() + "] but failed to connect()"); } } @Override public void cardRemoved(final CardTerminal cardTerminal) { System.out.println("Other Card Removed From [" + cardTerminal.getName() + "]"); } @Override public void cardEventsInitialized() { System.out.println("Other Card Events Initialised"); } @Override public void eIDCardEventsInitialized() { System.out.println("BeID Card Events Initialised"); } }