Hi, We are developing Java Card project. We are using Swing for Host Application, JCDK for Card Applets, & OCF for interfacing. We are using GXP211_PK card.
When we run following code, we get following response, Uses ISOTPDU wait for smart card - insert smart card in terminal ATR: 3F 6D 00 00 80 31 80 65 B0 05 01 02 5E 83 00 90 00 Command APDU = [EMAIL PROTECTED] 0000: 00 A4 04 00 07 A0 00 00 00 18 43 4D 00 ..........CM. sw1 = -112 sw2 = 0 Response APDU = [EMAIL PROTECTED] 0000: 6F 18 84 07 A0 00 00 00 18 43 4D A5 0D 9F 6E 06 o........CM...n. 0010: 32 31 03 00 33 30 9F 65 01 FF 90 00 21..30.e.... sw1 = -112 sw2 = 0 Response APDU = [EMAIL PROTECTED] 0000: 43 4D 02 80 00 00 38 25 00 A7 0D 01 3D F0 0A F8 CM....8%....=... 0010: 7D 85 43 4F F6 EC 79 07 F0 98 21 A4 90 00 }.CO..y...!... sw1 = 99 sw2 = 0 Response APDU = [EMAIL PROTECTED] 0000: 63 00 c. Press any key to continue . . . I have successfully selected Card Manager & Initialize Update is successful, but when I try External Authenticate command, It returns 63 00 code. APDU's sent are specified in code. Is there some step missing or what ? Following is the code, import java.io.InputStream; import java.io.FileInputStream; import java.util.Properties; import opencard.core.terminal.CommandAPDU; import opencard.core.terminal.ResponseAPDU; import opencard.core.terminal.CardID; import opencard.core.terminal.CardTerminalRegistry; import opencard.core.service.SmartCard; import opencard.core.service.CardRequest; import com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminal; import com.ibm.opencard.terminal.pcsc.PcscError; import opencard.opt.util.PassThruCardService; import opencard.opt.applet.AppletID; import opencard.core.terminal.CardTerminalException; public class OCFConnection { private Pcsc10CardTerminal cardTerminal; //represents card reader private static final int IFD_TIMEOUT = 10; public PassThruCardService commService; //represents communication channel private int n; //temporary counter. private int intATR; //represents int form of ATR. private byte[] cardATR; //represents ATR returned by card. private CommandAPDU commandAPDU; //represents instruction & data to be sent to reader. private byte bytesw1,bytesw2; public OCFConnection () { /*addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } });*/ // get system properties Properties systemProperties = System.getProperties (); // set system properties for OCF, PC/SC and PassThruCardServce systemProperties.put ("OpenCard.terminals", "com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminalFactory"); systemProperties.put ("OpenCard.services","opencard.opt.util.PassThruCardServiceFactory"); } public void initOCF () { // APDU for selecting Card Manager byte[] apduContents = {(byte)0,(byte)164,(byte)4,(byte)0,(byte)7, (byte)160,(byte)0,(byte)0,(byte)0,(byte)24, (byte)67,(byte)77,(byte)0 }; // APDU for Initialize Update byte[] initUpdateAPDU = {(byte)128,(byte)80,(byte)13,(byte)0,(byte)8, (byte)0,(byte)0,(byte)0,(byte)0,(byte)0, (byte)0,(byte)0,(byte)0,(byte)28 }; // APDU for selecting External Authenticate byte[] extAuthAPDU = {(byte)132,(byte)130,(byte)3,(byte)0,(byte)16, (byte)68,(byte)68,(byte)68,(byte)68,(byte)68, (byte)68,(byte)68,(byte)68,(byte)17, (byte)34,(byte)51,(byte)68,(byte)85, (byte)102,(byte)119,(byte)136,(byte)0 }; commandAPDU = new CommandAPDU (apduContents); try { SmartCard.start (); CardTerminalRegistry cardTerminalRegistry = CardTerminalRegistry.getRegistry (); cardTerminal = (Pcsc10CardTerminal)cardTerminalRegistry.cardTerminalForName ("Gemplus GemPC430 0"); CardRequest cardRequest = new CardRequest (CardRequest.ANYCARD, null, PassThruCardService.class); cardRequest.setTimeout (IFD_TIMEOUT); // set timeout for IFD System.out.println ("wait for smart card - insert smart card in terminal"); System.out.println (); // wait for a smart card inserted into the terminal SmartCard smartCard = SmartCard.waitForCard (cardRequest); if (smartCard != null) { // no error occur and a smart card is in the terminal commService = (PassThruCardService) smartCard.getCardService (PassThruCardService.class, true); String stringATR = new String (); System.out.print ("ATR: "); CardID cardID = smartCard.getCardID (); cardATR = cardID.getATR (); for (n=0; n< cardATR.length; n++) { intATR = (int) (0x000000FF & cardATR[n]); // byte to int conversion stringATR = Integer.toHexString (intATR).toUpperCase (); //String conversion if (stringATR.length () == 1) stringATR = "0" + stringATR; System.out.print(stringATR + " "); } // end of for System.out.println (""); }// end of if. System.out.println (); System.out.println ("Command APDU = "+commandAPDU.toString ()); System.out.println (); //obtain response from card ResponseAPDU responseAPDU = commService.sendCommandAPDU (commandAPDU); bytesw1 = responseAPDU.sw1 (); bytesw2 = responseAPDU.sw2 (); System.out.println ("sw1 = "+(byte)bytesw1); System.out.println ("sw2 = "+(byte)bytesw2); System.out.println (); System.out.println("Response APDU = "+responseAPDU.toString()); System.out.println (); commandAPDU = new CommandAPDU (initUpdateAPDU); responseAPDU = commService.sendCommandAPDU (commandAPDU); bytesw1 = responseAPDU.sw1 (); bytesw2 = responseAPDU.sw2 (); System.out.println ("sw1 = "+(byte)bytesw1); System.out.println ("sw2 = "+(byte)bytesw2); System.out.println (); System.out.println("Response APDU = "+responseAPDU.toString()); System.out.println (); commandAPDU = new CommandAPDU (extAuthAPDU); responseAPDU = commService.sendCommandAPDU (commandAPDU); bytesw1 = responseAPDU.sw1 (); bytesw2 = responseAPDU.sw2 (); System.out.println ("sw1 = "+(byte)bytesw1); System.out.println ("sw2 = "+(byte)bytesw2); System.out.println (); System.out.println("Response APDU = "+responseAPDU.toString()); System.out.println (); smartCard.close (); SmartCard.shutdown (); } catch (CardTerminalException e) { System.out.println (e.getMessage ()); } catch (Exception e) { System.out.println (e.getMessage ()); } finally { String errorMsg = PcscError.getMessage ((int)57); } } public static void main (String args[]) { OCFConnection siObject = new OCFConnection (); siObject.initOCF (); } } Thanks in advance. Awadhoot Aphale --- > Visit the OpenCard web site at http://www.opencard.org/ for more > information on OpenCard---binaries, source code, documents. > This list is being archived at http://www.opencard.org/archive/opencard/ ! To unsubscribe from the [EMAIL PROTECTED] mailing list send an email ! to ! [EMAIL PROTECTED] ! containing the word ! unsubscribe ! in the body.