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.

Reply via email to