Forum Stats

  • 3,826,348 Users
  • 2,260,631 Discussions
  • 7,896,912 Comments

Discussions

Unable to throw ISO Exception 61XX

nara
nara Member Posts: 21

Hi,

My applet needs to return data more than 10K and hence i want to go ahead with command chaining. So after the first Get Data response i throw an ISO Exception 6100 to indicate that more data to follow. I use SmartCardIO libraries in my middleware. So the code breaks at the line where i throw the 6100 iso exception. I get a could not get response error in my java code. It used to work absolutely fine earlier for the same code. Has the PCSC wrapper changed in windows? My code works if i throw a 62XX or 63XX exception, but not 6100.  Anyone else faced a similar scenario? It fails on JCShell as well.

Any help in this regard will be highly appreciated.

My code snippet:

            sendLen = apdu.setOutgoing();

            remainingData = (short) (obj.currentContainer.DataWritten - readOffset[OFFSET_SENT]);

            boolean chain = remainingData > sendLen;

            sendLen = chain ? sendLen : remainingData;

            apdu.setOutgoingLength(sendLen);

            apdu.sendBytesLong(obj.currentContainer.Buffer, readOffset[OFFSET_SENT], sendLen);

           

            // Check to see if there are more Data to send

            if (chain)

            {

                 readOffset[OFFSET_SENT] += sendLen; // count the bytes sent

                 remain = (short) (obj.currentContainer.DataWritten - readOffset[OFFSET_SENT]);

                 if(remain < sendLen)

                 {

                      Util.arrayCopyNonAtomic(obj.currentContainer.Buffer, (short)(readOffset[OFFSET_SENT]),

                        chainingBuffer, (short)0, (short)remain);

                      ISOException.throwIt((short)((short)(0x6100) |(short)((remain))));

                 }

                 else

                      ISOException.throwIt((short) (ISO7816.SW_BYTES_REMAINING_00 | (short)(sendLen)));

                      //ISOException.throwIt((short)((short)(0x6100) |(short)((sendLen))));

            }

PS: I tried on both JCOP 2.4.2R3 and JCOP3 Chips. Looks like its a PCSC issue as it works absolutely fine on a simulator.

Regards

Narasimha

This discussion has been closed.