cheers
[EMAIL PROTECTED] wrote:
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....
Press any key to continue . . .
Sw1 value i.e. -112 represents FFFFFFFFFFFFFF90 in hex. What is the significance of signed & unsigned responses ? Whether this response is correct ?
Following is the code :
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.
//----------------------------------------------------------------------
--------------------------------------------------
public OCFConnection () {
// 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 () { // represents specimen APDU fro 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 }; 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");
// 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 (commandAPDU.toString ());
//obtain response from card ResponseAPDU responseAPDU = commService.sendCommandAPDU (commandAPDU);
System.out.println (responseAPDU.sw1 ()); System.out.println (responseAPDU.sw2 ());
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);
System.out.println (errorMsg);
}
}
//----------------------------------------------------------------------
--------------------------------------------------
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.
-- ------------------------------------------------------------------ Brian McGuiness Phone: +44(0)1355 272911 Senior Software Engineer Fax: +44(0)1355 272993 Ecebs Limited The James Watt Building, Scottish Enterprise Technology Park, East Kilbride G75 0QD Email: [EMAIL PROTECTED] United Kingdom Internet: http://www.Ecebs.com
This email is only for the use of the addressee. It may contain information which is legally privileged, confidential and exempt from disclosure. If you are not the intended recipient you are hereby notified that any dissemination, distribution, or copying of this communication and its attachments is strictly prohibited. ------------------------------------------------------------------
---
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.
