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,
sometimes card is connected successfully
& it returns ATR
but when some data is passed to it following error occurs,
[ERROR ]
com.ibm.opencard.terminal.pcsc10.OCFPCSC1.OCFPCSC1.SCardTransmit
--- message PCSC Exception in method SCardTransmit: error occurred
with SCardT
ransmit
return code = 00000057
--- thread Thread[main,5,main]
--- source [EMAIL PROTECTED]
Pcsc10CardTerminal: PCSC Exception in method SCardTransmit: error
occurred with
SCardTransmit
return code = 00000057
& sometims card doesn't return ATR, instead it gives following error,
[ERROR ]
com.ibm.opencard.terminal.pcsc10.OCFPCSC1.OCFPCSC1.SCardConnect
--- message PCSC Exception in method SCardConnect: PC/SC Error
SCardConnect
return code = 8010000b
--- thread Thread[Thread-0,5,main]
--- source [EMAIL PROTECTED]
Pcsc10CardTerminal: PCSC Exception in method SCardConnect: PC/SC Error
SCardConn
ect
return code = 8010000b
We are stuck here !!
Can somebody help us out ?
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.
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 ();
}
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.