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.