Give me *.scr script to simulate java card class

this is the java file
++++++++++++++++++++++++++++++++
//Package AID: 'D2 76 00 00 60 50 02'
// Applet AID: 'D2 76 00 00 60 41 02'
// Specification of the proprietary command READ
// command APDU CLA = '80' || INS = '02' ||
// P1 (= '00') || P2 (= offset [byte]) ||
// Le (= number of bytes to read = DATA)
// response APDU (good case) DATA (with length Le) || SW1 || SW2
// response APDU (bad case) SW1 || SW2
// Specification of the proprietary command WRITE
// command APDU CLA = '80' || INS = '04' ||
// P1 (= '00') || P2 (= offset [byte]) ||
// Lc (= number of bytes to write) // DATA (bytes to write)
// response APDU (all cases) SW1 || SW2
package packmini; // this is the package name
import javacard.framework.*; // import all neccessary packages for java card
public class ReadWrite extends Applet {
final static byte CLASS = (byte) 0x80; // class of the APDU commands
final static byte INS_READ = (byte) 0x02; // instruction for the READ APDU command
final static byte INS_WRITE = (byte) 0x04; // instruction for the WRITE APDU command
final static short SIZE_MEMORY = (short) 9; // size of the data storage area
static byte[] memory; // this is the data memory for the application
//----- installation and registration of the applet -----
public static void install(byte[] buffer, short offset, byte length) {
memory = new byte[SIZE_MEMORY]; // this is the data storage area
new ReadWrite().register();
} // install
//----- this is the command dispatcher -----
public void process(APDU apdu) {
byte[] cmd_apdu = apdu.getBuffer();
if (cmd_apdu[ISO7816.OFFSET_CLA] == CLASS) {  // it is the rigth class
switch(cmd_apdu[ISO7816.OFFSET_INS]) {      // check the instruction byte
case INS_READ: // it is a READ instruction
cmdREAD(apdu);
break;
case INS_WRITE: // it is a WRITE instruction
cmdWRITE(apdu);
break;
default : // the instruction in the command apdu is not supported
ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
} // switch
} // if
else {                                        // the class in the command apdu is not supported
ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
} // else
} // process
//----- program code for the APDU command READ -----
private void cmdREAD(APDU apdu) {
byte[] cmd_apdu = apdu.getBuffer();
//----- check the preconditions -----
// check if P1=0
if (cmd_apdu[ISO7816.OFFSET_P1] != 0) ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
// check if offset P2 is inside the bound of the memory array
short offset = (short) (cmd_apdu[ISO7816.OFFSET_P2] & 0x00FF); // calculate offset
if (offset >= SIZE_MEMORY) ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
// check if offset P2 and expected length Le is inside the bounds of the memory array
short le = (short)(cmd_apdu[ISO7816.OFFSET_LC] & 0x00FF); // calculate Le (expected length)
if ((offset + le) > SIZE_MEMORY) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
// check if expected length Le is 0
if (le == 0) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
//----- now all preconditions are fulfilled, the data can be send to the IFD -----
apdu.setOutgoing(); // set transmission to outgoing data
apdu.setOutgoingLength((short)le); // set the number of bytes to send to the IFD
apdu.sendBytesLong(memory, (short)offset, (short)le); // send the requested number of bytes to the IFD
} // cmdREAD
//----- program code for the APDU command WRITE -----
private void cmdWRITE(APDU apdu) {
byte[] cmd_apdu = apdu.getBuffer();
//----- check the preconditions -----
// check if P1=0
if (cmd_apdu[ISO7816.OFFSET_P1] != 0) ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
// check if offset P2 is inside the bound of the memory array
short offset = (short) (cmd_apdu[ISO7816.OFFSET_P2] & 0x00FF); // calculate offset
if (offset >= SIZE_MEMORY) ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
// check if offset P2 and expected length Le is inside the bounds of the memory array
short lc = (short)(cmd_apdu[ISO7816.OFFSET_LC] & 0x00FF); // calculate Lc (expected length)
if ((offset + lc) > SIZE_MEMORY) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
// check if command length Lc is 0
if (lc == 0) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
receiveAPDUBody(apdu); // receive now the rest of the APDU
//----- now all preconditions are fulfilled, the data can be copied to the memory -----
Util.arrayCopy(cmd_apdu, (short)((ISO7816.OFFSET_CDATA) & 0x00FF), memory, offset, lc); // this copy precedure is atomic
ISOException.throwIt(ISO7816.SW_NO_ERROR); // command proper executed
} // cmdWRITE
//----- receive the body of the command APDU
public void receiveAPDUBody(APDU apdu) {
byte[] buffer = apdu.getBuffer();
short lc = (short)(buffer[ISO7816.OFFSET_LC] & 0x00FF); // calculate Lc (expected length)
// check if Lc != number of received bytes of the command APDU body
if (lc != apdu.setIncomingAndReceive()) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
} // receiveAPDUBody
++++++++++++++++++++++++++++++++
I hope u can give me sollution for my problem..
Thank u all..

need help ... somebody can help me ??
I have java file..(on this below)..I want to run it with JCWDE...can you give me script APDU to run it on JCWDE ???
thank for your attention .
package packmini;
import javacard.framework.APDU;
import javacard.framework.ISO7816;
import javacard.framework.Applet;
import javacard.framework.ISOException;
import javacard.framework.Util;
public class IdCard extends Applet {
     //The Cla Value
     final static byte claValue = (byte) 0x08;
     //The Ins Value
     final static byte readName = (byte)0x01;
     final static byte readPhone = (byte) 0x02;
     final static byte writeName = (byte) 0x03;
     final static byte writePhone = (byte) 0x04;
     byte[] nameID;;
     byte[] phone ;
     public IdCard()
          nameID = new byte[12];
          phone = new byte[12];
     public static void install(byte[] bArray, short bOffset, byte bLength) {
          // GP-compliant JavaCard applet registration
          new packmini.IdCard().register(bArray, (short) (bOffset + 1),
                    bArray[bOffset]);
     public void process(APDU apdu) {
          // Good practice: Return 9000 on SELECT
          if (selectingApplet()) {
               return;
          byte[] buf = apdu.getBuffer();
          if(buf[ISO7816.OFFSET_CLA]!= claValue)
               ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
          switch (buf[ISO7816.OFFSET_INS]) {
          case writeName :     
                    writeNameIn(apdu);
                    break;
          case writePhone:
                    writePhoneIn(apdu);
                    break;
          case readName:
                    readNameOut(apdu);
                    break;
          case readPhone:
                    readPhoneOut(apdu);
                    break;
          default:
               // good practice: If you don't know the INStruction, say so:
               ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
     public void writeNameIn(APDU apdu)
          byte[] buff = apdu.getBuffer();
          short lcLength = buff[ISO7816.OFFSET_LC];
          short readCount = apdu.setIncomingAndReceive();
          if(readCount== 0 || lcLength == 0)
               ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
          Util.arrayCopy(buff,(short) ISO7816.OFFSET_CDATA, nameID, (short)0, readCount);     
     public void writePhoneIn(APDU apdu)
          byte [] buff = apdu.getBuffer();
          short readCount = apdu.setIncomingAndReceive();
          short lcLength = buff[ISO7816.OFFSET_LC];
          if(readCount== 0 || lcLength == 0)
               ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
          Util.arrayCopy(buff, ISO7816.OFFSET_CDATA, phone, (short)0, readCount);     
     public void readNameOut(APDU apdu)
          byte [] buff = apdu.getBuffer();
          short le = apdu.setOutgoing();
          apdu.setOutgoingLength((short) nameID.length);
          Util.arrayCopy(nameID,(short) 0, buff,(short) 0,(short) nameID.length);
          apdu.sendBytes((short)0, (short) nameID.length);
     public void readPhoneOut(APDU apdu)
          byte [] buff = apdu.getBuffer();
          short le = apdu.setOutgoing();
          apdu.setOutgoingLength((short) phone.length);
          Util.arrayCopy(phone,(short) 0, buff,(short) 0,(short) phone.length);
          apdu.sendBytes((short)0, (short) phone.length);
}

Similar Messages

  • Ant tools: converter java card -  class file  not belonging to the package!

    Hi
    I have another problem with converter. Could you help me please again if you have the time?
    I have created a directory when I save the class files generated by javac. After That , I use convert in this way:
    <convert
    JCA="true"
    EXP="true"
    CAP="true"
    packagename="testUn/classes/testUn"
    packageaid="0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x02:0x00"
    majorminorversion="1.0"
    verbose = "true">
    <AppletNameAID
    appletname="testUn.classes.testUn.PorteAppUn"
    aid="0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x02:0x00:0x00"/>
    <classpath refid="classpath"/>
    </convert>
    Here is the answer of the computer:
    [echo] Generation of the CAP,JCA and EXP files...
    [convert] Java Card Ant Tasks, Version 1.0
    [convert] Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
    [convert] Note: Usage of Java Card Ant Tasks is optional. Java Card Ant Tasks are not supported by Sun Microsystems, Inc.
    [convert] Java Card 2.2.2 Class File Converter, Version 1.3
    [convert] Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
    [convert] parsing /home/ehoudart/app-manager/VersionZero/src/testUn/classes/testUn/PorteAppUn.class
    [convert] converting testUn.PorteAppUn
    [*convert] error: class PorteAppUn does not belong to package testUn.classes.testUn.*
    [convert] conversion completed with 1 errors and 0 warnings.
    I do not understand why this unique applet class file does not belong to its own package. Is someone an idea?
    Thanks very much in advance for your answer.

    Here is a complete example build.xml (I think I have posted this before).
    <?xml version="1.0" encoding="UTF-8" ?>
    <project default="convert" name="javacard-starter">
      <!-- Build specific properties -->
      <property name="target.classes" location="${basedir}/target/classes" />
      <property name="target.javacard" location="${basedir}/target/javacard" />
      <property name="source.java" location="${basedir}/src/main/java" />
      <!-- Must point to the folder containing the JAR files from the JCDK -->
      <property name="javacard.libs" location="${basedir}/lib" />
      <!-- Must point to the folder containing the JAR file from the JCDK ant task -->
      <property name="javacard.ant-task" location="${basedir}/lib" />
      <!-- Must point to the folder containing the API export files from the JCDK -->
      <property name="javacard.export" location="${basedir}/src/main/export" />
      <property name="verbose" value="true" />
      <property name="noverify" value="false" />
      <!-- Path for JC tasks -->
      <path id="classpath">
        <fileset dir="${javacard.ant-task}">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${javacard.libs}">
          <include name="*.jar" />
        </fileset>
      </path>
      <!-- set the export path to the Java Card export files -->
      <path id="export" description="set the export file path">
        <fileset dir="${javacard.export}">
          <include name="**/*.exp" />
        </fileset>
        <pathelement path="${javacard.export}" />
        <pathelement path="${target.classes}" />
        <pathelement path="${target.javacard}" />
      </path>
      <!-- Definitions for tasks for Java Card tools -->
      <taskdef name="capgen" classname="com.sun.javacard.ant.tasks.CapgenTask" classpathref="classpath" />
      <taskdef name="deploycap" classname="com.sun.javacard.ant.tasks.DeployCapTask" classpathref="classpath" />
      <taskdef name="convert" classname="com.sun.javacard.ant.tasks.ConverterTask" classpathref="classpath" />
      <taskdef name="verifyexport" classname="com.sun.javacard.ant.tasks.VerifyExpTask" classpathref="classpath" />
      <taskdef name="verifycap" classname="com.sun.javacard.ant.tasks.VerifyCapTask" classpathref="classpath" />
      <taskdef name="verifyrevision" classname="com.sun.javacard.ant.tasks.VerifyRevTask" classpathref="classpath" />
      <typedef name="appletnameaid" classname="com.sun.javacard.ant.types.AppletNameAID" classpathref="classpath" />
      <typedef name="jcainputfile" classname="com.sun.javacard.ant.types.JCAInputFile" classpathref="classpath" />
      <target name="init">
        <mkdir dir="${target.classes}" />
        <mkdir dir="${target.javacard}" />
      </target>
      <target name="clean">
        <delete dir="${target.classes}" />
        <delete dir="${target.javacard}" />
        <delete dir="${javacard.eeprom}" />
      </target>
      <target name="compile" depends="init" description="Compile source code to class files">
        <!-- Compile the java code from ${src} to ${classes} -->
        <javac debug="yes" optimize="no" srcdir="${source.java}" destdir="${target.classes}" source="1.5" target="1.5">
          <classpath refid="classpath" />
        </javac>
      </target>
      <target name="convert" depends="compile" description="Convert class files to cap files">
              <convert packagename="chaining" packageaid="0xF0:0x00:0x00:0x01:0x00:0x01" majorminorversion="1.0" classdir="${target.classes}" outputdirectory="${target.classes}" jca="true" exp="true" cap="true" debug="true" verbose="${verbose}" noverify="${noverify}">
                   <appletnameaid aid="0xF0:0x00:0x00:0x01:0x00:0x01:0x00:0x01" appletname="chaining.ChainingApplet" />
                   <exportpath refid="export" />
                   <classpath refid="classpath" />
              </convert>
      </target>
      <target name="copy-debug">
        <mkdir dir="${target.debug}" />
        <echo>Copying cap files</echo>
        <copy flatten="true" todir="${target.debug}" verbose="true">
          <fileset dir="${target.classes}" includes="**/*.cap" />
          <fileset dir="${target.classes}" includes="**/*.exp" />
          <fileset dir="${target.classes}" includes="**/*.jca" />
        </copy>
      </target>
      <target name="all" depends="clean, convert" />
    </project>

  • Help about running Java Card developement Kit Demo

    I am following the Java Card development kit step by step. I have set all environments but I could not run the demo at all. D:\JAVACARD\SAMPLES\SRC\DEMO>
    if I type "jcwde jcwde.app" at the demo directory, it tells me that, jcwde is not an intenal or batch file command. when I copied the jcwde.bat from bin directory to demo directory, it run but a lot of erros.
    I will be glad if somebody can help to overcome this initial and very important steps in my adventure to smart card.
    Thanks

    Thanks everybody for their contribution and suggestion. I have been able to make the demo works apart from demo1 which still give problems.
    if I type jcwde jcwde.app, it gives me the following errors.
    Java Card 2.2 Workstation Development Environment (version 0.18).
    Copyright 2002 Sun Microsystems, Inc. All rights reserved.
    jcwde is listening for T=0 Apdu's on TCP/IP port 9,025.
    Exception in thread "main" java.lang.IllegalAccessError: class javacard.framewor
    k.JCWDEDispatcher cannot access its superclass javacard.framework.Dispatcher
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:509)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
    3)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:246)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
    at com.sun.javacard.jcwde.Main.run(Main.java:77)
    at com.sun.javacard.jcwde.Main.main(Main.java:141)

  • Need help for equipments for java card with RFID technology .

    I 'm doin a project using java card with RFID technology.Can ne one give me exact equipments for java card reader & writer for RFID technology?
    I need to buy these things from UK.Can ne one provide me some product list & as well as the exact pricelist?
    plz reply me asap.

    I 'm doin a project using java card with RFID
    technology.Can ne one give me exact equipments for
    r java card reader & writer for RFID technology?I guess with "RFID" you are referring to "contact-less javacards"?
    If yes, one keyword for you is "Mifare", a industry standard for smartcards with dual interface (contact-based and contactless).
    Jan

  • How to start with java card

    hello,
    i'm new to java card n know a bit of core java.. my superior of company asked me to get complete knowledge on java card.. iworked for 1 month on native cards..n know a bit of gsm 11.14. I want a favour.
    my queries:-
    a) how and from where should i start
    b) wat all basics i need to know &
    c)how to work on this card.
    ANY REPLY WILL BE APPRECIATED..
    Thanks

    a)
    - Look at Sun's tutorials on Java Card.
    - Z. Chen's book from Sun about smart cards gives you deeper knowledge about the Java Card technology.
    - Furthermore there is a great reference book about smart cards in general from W. Rankl.
    b)
    - Java: You should have basic understanding and knowledge about Java.
    - Java Card: is a subset of Java, but you need to be much more aware of the Java Card VM and RE.
    - You need to have some specifications at hand
    - Java Card API, VM and RE
    - GlobalPlatform
    - ISO 7816 and ISO 14443 for CL
    c)
    - There is a number of smart card operating systems.
    - I recommend the Java Card Open Platform (JCOP) from IBM/NXP. There is a good developer environment (JCOP Tools plugin for Eclipse) where you can start developing against a smart card SW simulator.

  • Is it possible to simulate whole java card application on simulator?

    Hello all,
    currently i dont have any real java card yet,not either reader . I already made a simple applet and check its working by CJCRE (net beans simulator), it is working fine,
    now i want to move to host application which will communicate with java card via card reader. Is this possible to simulate complete application ( host application + java card applets)?
    I want to check it out that:- which line of java program would be helpful to know that:-
    1-"how real host application will talk to reader"
    2- how it connect and disconnect the reader
    3- how it send apdu to java card by reader
    and much more.
    I am using netbeans 7.1 and it is using CJCRE as a simulator....

    you mean to say this
    http://askra.de/software/jcdocs/app-notes-2.2.2/apduio.html
    I am quite confused now, i read this but still can not imagine the concept ,
    an applet code is :-
    public class GetName extends Applet
         final static byte CLASS     = (byte) 0x80;  // Class of the APDU commands
         final static byte INS_READ  = (byte) 0x02;  // instruction for the READ APDU command
         final static byte INS_WRITE = (byte) 0x03;  // instruction for the READ APDU command
         final static byte INS_DY_CO = (byte) 0x04;  // instruction for the READ APDU command
         final static byte[] text    = {(byte) 'A', (byte) 'M', (byte) 'I', (byte) 'T'};
         public static byte[] holder;
         public static void install(byte[] bArray, short bOffset, byte bLength)
            new GetName();
        protected GetName()
            holder = new byte[5];// allocation of memory in runtime
            register();
        public void process(APDU apdu)
              if(selectingApplet())
                   return;
            byte[] cmd_apdu = apdu.getBuffer();         
             if (cmd_apdu[ISO7816.OFFSET_CLA] == CLASS)
                   switch(cmd_apdu[ISO7816.OFFSET_INS])
                        case INS_READ:  
                        if ((cmd_apdu[ISO7816.OFFSET_P1] != 0) || (cmd_apdu[ISO7816.OFFSET_P2] != 0))
                        ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
                        short le = (short)(cmd_apdu[ISO7816.OFFSET_LC] & 0x00FF); 
                        short len_text = (short)text.length;                      
                        if (le != len_text)
                        ISOException.throwIt((short)(ISO7816.SW_CORRECT_LENGTH_00 + len_text)); 
                        apdu.setOutgoing();                      
                        apdu.setOutgoingLength((short)len_text);
                        apdu.sendBytesLong(text, (short)0, (short)len_text);
                        break;
                    // here we save data from apdu and will keep inside the data byte                   
                        case INS_WRITE:
                    short lc = (short)(cmd_apdu[ISO7816.OFFSET_LC] & 0x00FF); 
                    Util.arrayCopy(cmd_apdu, (short) ((ISO7816.OFFSET_CDATA) & 0xff), holder, (short) 0, lc);
                        short len_holder_inside_write= (short) holder.length;
                       apdu.setOutgoing();
                    apdu.setOutgoingLength((short)len_holder_inside_write);
                    apdu.sendBytesLong(holder, (short) 0, (short) len_holder_inside_write);
                    break;
                    case INS_DY_CO:
                        short len_holder= (short) holder.length;
                    apdu.setOutgoing();
                    apdu.setOutgoingLength((short)len_holder);
                    apdu.sendBytesLong(holder, (short) 0, (short) len_holder);
                    break;
                        default : 
                        ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
             else
                    ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }now i think i need to make a another java file which would contain a main class, Is this both file would be inside a single java card project. and how these both would be connect to each other.
    for manually run a applet- there were two steps 1-
    C:\java_card_kit-2_2\samples\src\demo>jcwde jcwde-getname.app
    Java Card 2.2 Workstation Development Environment (version 0.18).
    Copyright 2002 Sun Microsystems, Inc. All rights reserved.
    jcwde is listening for T=0 Apdu's on TCP/IP port 9,025.
    and in second terminal we wrote-
    C:\java_card_kit-2_2\samples\src\demo>apdutool -nobanner -noatr getname.scr > ge
    tname.scr.jcwde.out
    Here it is clear that, if i will use javacardio then no need to pass the apdu from a file .....but i am confuse about how it possible, ie. is both file lie in same project , because i m using simulator so i need to run these both file simoltaneously........give me some roughly steps to implement this.

  • Please ..give me some example APDU for writing data to java card

    morning everybody .. :)
    I need some example APDUs for writing data to java card. (CLA || INS || P1 || P2 etc)..
    please..thank for your attention .. god blessing u.

    Hi,
    did you check some articles about JavaCards:
    [Understanding Java Card 2.0|http://www.javaworld.com/cgi-bin/mailto/x_java.cgi?pagetosend=/export/home/httpd/javaworld/javaworld/jw-03-1998/jw-03-javadev.html&pagename=/javaworld/jw-03-1998/jw-03-javadev.html&pageurl=http://www.javaworld.com/javaworld/jw-03-1998/jw-03-javadev.html&site=jw_core]
    [How to write a Java Card applet: A developer's guide|http://www.javaworld.com/cgi-bin/mailto/x_java.cgi?pagetosend=/export/home/httpd/javaworld/javaworld/jw-07-1999/jw-07-javacard.html&pagename=/javaworld/jw-07-1999/jw-07-javacard.html&pageurl=http://www.javaworld.com/javaworld/jw-07-1999/jw-07-javacard.html&site=jw_core]
    Hope it helps,
    Tex

  • How to check the output of a java card program ?

    Hi,
    I am new to java card technology.I am trying to run a simple helloworld program given in the java development kit2.2 -windows samples in eclipse3.5.
    For running I followed the following steps:-
    1) Firstly,I went to JCWDE->start
    2) then on Project->java tools->deploy
    It shows me following output :-
    Java Card 2.2.2 APDU Tool, Version 1.3
    Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
    Opening connection to localhost on port 9025.
    Connected.
    Received ATR = 0x3b 0xf0 0x11 0x00 0xff 0x00
    CLA: 00, INS: a4, P1: 04, P2: 00, Lc: 09, a0, 00, 00, 00, 62, 03, 01, 08, 01, Le: 00, SW1: 90, SW2: 00
    CLA: 80, INS: b0, P1: 00, P2: 00, Lc: 00, Le: 00, SW1: 90, SW2: 00
    CLA: 80, INS: b2, P1: 01, P2: 00, Lc: 00, Le: 00, SW1: 90, SW2: 00
    CLA: 80, INS: b4, P1: 01, P2: 00, Lc: 18, 01, 00, 15, de, ca, ff, ed, 01, 02, 04, 00, 01, 0b, 01, 02, 03, 04, 05, 06, 07, 08, 09, 00, 01, Le: 00, SW1: 64, SW2: 3a
    CLA: 80, INS: bc, P1: 01, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 02, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 02, P2: 00, Lc: 20, 02, 00, 1f, 00, 15, 00, 1f, 00, 0f, 00, 15, 00, 36, 00, 0c, 00, 69, 00, 0a, 00, 14, 00, 00, 00, 6c, 00, 00, 00, 00, 00, 00, 02, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 02, P2: 00, Lc: 02, 01, 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 02, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 04, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 04, P2: 00, Lc: 18, 04, 00, 15, 02, 03, 01, 07, a0, 00, 00, 00, 62, 01, 01, 00, 01, 07, a0, 00, 00, 00, 62, 00, 01, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 04, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 03, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 03, P2: 00, Lc: 12, 03, 00, 0f, 01, 0b, 01, 02, 03, 04, 05, 06, 07, 08, 09, 00, 00, 00, 14, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 03, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 06, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 06, P2: 00, Lc: 0f, 06, 00, 0c, 00, 80, 03, 01, 00, 01, 07, 01, 00, 00, 00, 21, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 06, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 07, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 07, P2: 00, Lc: 20, 07, 00, 69, 00, 02, 10, 18, 8c, 00, 01, 18, 11, 01, 00, 90, 0b, 87, 00, 18, 8b, 00, 02, 7a, 02, 30, 8f, 00, 03, 3d, 8c, 00, 04, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 07, P2: 00, Lc: 20, 8b, 00, 02, 7a, 05, 23, 19, 8b, 00, 05, 2d, 19, 8b, 00, 06, 32, 03, 29, 04, 70, 19, 1a, 08, ad, 00, 16, 04, 1f, 8d, 00, 0b, 3b, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 07, P2: 00, Lc: 20, 16, 04, 1f, 41, 29, 04, 19, 08, 8b, 00, 0c, 32, 1f, 64, e8, 19, 8b, 00, 07, 3b, 19, 16, 04, 08, 41, 8b, 00, 08, 19, 03, 08, 8b, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 07, P2: 00, Lc: 0c, 00, 09, 19, ad, 00, 03, 16, 04, 8b, 00, 0a, 7a, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 07, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 08, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 08, P2: 00, Lc: 0d, 08, 00, 0a, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 08, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 05, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 05, P2: 00, Lc: 20, 05, 00, 36, 00, 0d, 02, 00, 00, 00, 06, 80, 03, 00, 03, 80, 03, 01, 01, 00, 00, 00, 06, 00, 00, 01, 03, 80, 0a, 01, 03, 80, 0a, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 05, P2: 00, Lc: 19, 06, 03, 80, 0a, 07, 03, 80, 0a, 09, 03, 80, 0a, 04, 03, 80, 0a, 05, 06, 80, 10, 02, 03, 80, 0a, 03, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 05, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b2, P1: 09, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: b4, P1: 09, P2: 00, Lc: 17, 09, 00, 14, 00, 03, 0e, 27, 2c, 00, 0d, 05, 0c, 06, 04, 03, 07, 05, 10, 0c, 08, 09, 06, 09, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: bc, P1: 09, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    CLA: 80, INS: ba, P1: 00, P2: 00, Lc: 00, Le: 00, SW1: 64, SW2: 21
    Can anyone tell me what is this output? And Am i deplyoing in the right way?

    Hi,
    You might want to check the JCDK user guide (cJDK_Users_Guide_bin_do.pdf) for details of using an emulated card environment. It outlines how to use the simulators provided with the JCDK. This should tell you how the deploy process works and will give you some insight into what this script is doing.
    Cheers,
    Shane

  • How does the Java card simulator work? and other misc questions

    First, I have a class inherited from Applet. Okay, I did that.
    How do I convert this class to a CAP file? I mean I have a class file which is compiled by javac, do I use this file to convert into a CAP file? What is an AID? Do I make up this AID?
    In this .scr file (APDU Script), I understand the first 4 bytes, it means to create an Applet, but what about the rest? I know there are some intermixes of lengths and AIDs, I just can't decipher this.
    // create wallet applet
    0x80 0xB8 0x00 0x00 0x14 0x0a 0xa0 0x0 0x0 0x0 0x62 0x3 0x1 0xc 0x6 0x1 0x08 0 0 0x05 0x01 0x02 0x03 0x04 0x05 0x7F;
    And here comes the main question?
    How does the simulator work? How do I generate the data that mimics what the card reader reads?
    Thanks
    Jack

    At first blush,
    I have these when executing the RMIPurse sample according to the user guide
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported type long of field interfaceHash.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type long of method dispatch.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.SkeletonMismatchException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Skel: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported type long of field interfaceHash.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported type long of field serialVersionUID.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode new in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokespecial in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.rmi.server.Operation.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokevirtual in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method getMethod(java.lang.String, java.lang.Class[]) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode pop in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokevirtual in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method getMethod(java.lang.String, java.lang.Class[]) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokevirtual in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method getMethod(java.lang.String, java.lang.Class[]) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokevirtual in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method getMethod(java.lang.String, java.lang.Class[]) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokevirtual in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method getMethod(java.lang.String, java.lang.Class[]) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode anewarray in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokestatic in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method class$(java.lang.String) of class com.sun.jcclassic.samples.rmi.PurseImpl_Stub.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode aastore in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported bytecode invokevirtual in clinit method.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method getMethod(java.lang.String, java.lang.Class[]) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode goto in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unhandled bytecode pop in clinit method, try a different compiler.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of method class$.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method forName(java.lang.String) of class java.lang.Class.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported return type String of invoked method getMessage() of class java.lang.Throwable.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String) of class java.lang.NoClassDefFoundError.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java.lang.Object[], long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method newCall(java.rmi.server.RemoteObject, java.rmi.server.Operation[], int, long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnexpectedException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java.lang.Object[], long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method newCall(java.rmi.server.RemoteObject, java.rmi.server.Operation[], int, long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnexpectedException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java.lang.Object[], long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method newCall(java.rmi.server.RemoteObject, java.rmi.server.Operation[], int, long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnexpectedException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java.lang.Object[], long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method newCall(java.rmi.server.RemoteObject, java.rmi.server.Operation[], int, long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnmarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnexpectedException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java.lang.Object[], long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported long type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type long of invoked method newCall(java.rmi.server.RemoteObject, java.rmi.server.Operation[], int, long) of class java.rmi.server.RemoteRef.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.MarshalException.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported String type constant.
      [convert] error: com.sun.jcclassic.samples.rmi.PurseImpl_Stub: unsupported parameter type String of invoked method <init>(java.lang.String, java.lang.Exception) of class java.rmi.UnexpectedException.At the first command prompt, I typed cref -o demoee
    and at the next command prompt, I typed ant all, and I got those error messages.
    Thanks, you are so nice to help :)
    Jack

  • Please help error regarding GPShell 1.4.2 with Java Card 2.2.1

    Hi masters..
    please help me regarding GPShell + Smart Card Reader (namely Omnikey Cardman 5321)..
    currently i've a smart card reader (Omnikey) and a sample java card that support for Java Card 2.2.1..
    i've installed Smart card reader's driver, and it has already completely function..
    When i try to run this command in GPShell 1.4.2, i get this report :
    C:\GPShell-1.4.2>GPShell helloInstallgemXpressoProR3_2E64.txt
    mode_201
    gemXpressoPro
    enable_trace
    establish_context
    card_connect
    * reader name OMNIKEY CardMan 5x21 0
    card_connect() returns 0x80100069 (The smart card has been removed, so that furt
    her communication is not possible.
    select -AID A000000018434D00
    Command --> 00A4040008A000000018434D00
    Wrapped command --> 00A4040008A000000018434D00
    select_application() returns 0x00000006 (The handle is invalid.
    Yes, i know that in that script (helloInstallgemXpressoProR3_2E64.txt), there's a script for load helloworld.cap into Java card..
    i tried that because i just want to make sure whether my Java Card run well or not..
    Please help me regarding this..
    Thanks in advance..

    Hi safarmer, thanks for your reply :)..
    Sorry before, i still don't understand about your last reply.. :(
    especially for check the crytpogram.. :(
    could you describe what mean of each line of code from that snippet code?..
    Sequence   : 0002
    challenge  : 598dd3961bfd
    cryptogram : 24cccf18c18437bb
    host       : 5a7787ba91497948
    DEBUG [] - Input to session S-ENC derivation: 01820002000000000000000000000000
    DEBUG [] - S-ENC: adc1163ba2a146fbb94af44c8676fb7cadc1163ba2a146fb
    DEBUG [] - Input to session DEK derivation : 01810002000000000000000000000000
    DEBUG [] - S-DEK: fd01086b6db03bdfe0d5cb61d03ed3abfd01086b6db03bdf
    DEBUG [] - Input to session CMAC derivation: 01010002000000000000000000000000
    DEBUG [] - S-MAC: 3e07b0c8fdfd798a573b9b9889d0cb513e07b0c8fdfd798a
    Input to card cryptogram verification: 5a7787ba914979480002598dd3961bfd8000000000000000
    DEBUG [] - Signature : 24cccf18c18437bb
    DEBUG [] - Cryptogram: 24cccf18c18437bb
    Card cryptogram authenticated=======================================================================================
    =======================================================================================
    i've added script "mode_211" to my script, as follow :
    mode_211
    enable_trace
    establish_context
    card_connect -readerNumber 2
    select -AID a0000000030000
    open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f // Open secure channel
    delete -AID a00000006203010c0101
    delete -AID a00000006203010c01
    delete -AID a00000006203010c0101
    install -file HelloWorld.cap -nvDataLimit 500 -instParam 00 -priv 2
    card_disconnect
    release_contextbut when i executed that script in the console, i got this :
    C:\GPShell-1.4.2>GPShell helloInstallChan.txt
    mode_211
    enable_trace
    establish_context
    card_connect -readerNumber 2
    * reader name OMNIKEY CardMan 5x21-CL 0
    select -AID a0000000030000
    Command --> 00A4040007A0000000030000
    Wrapped command --> 00A4040007A0000000030000
    Response <-- 6F108408A000000003000000A5049F6501FF9000
    open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4
    f -enc_key 404142434445464748494a4b4c4d4e4f // Open secure channel
    Command --> 80CA006600
    Wrapped command --> 80CA006600
    Response <-- 664C734A06072A864886FC6B01600C060A2A864886FC6B02020101630906072A864
    886FC6B03640B06092A864886FC6B040215650B06092B8510864864020102660C060A2B060104012
    A026E01029000
    Command --> 80500000083C4E03633407EC1800
    Wrapped command --> 80500000083C4E03633407EC1800
    Response <-- 0000715457173C2B8FC1FF020002598DD3961BFD8B6F2963C070FF949000
    Command --> 8482010010E17B69E2A3DFEA320B0B457657362614
    Wrapped command --> 8482010010E17B69E2A3DFEA320B0B457657362614
    Response <-- 9000
    delete -AID a00000006203010c0101
    Command --> 80E400800C4F0AA00000006203010C010100
    Wrapped command --> 84E40080144F0AA00000006203010C0101D259A163E654B99900
    Response <-- 6A88
    delete_applet() returns 0x80206A88 (6A88: Referenced data not found.)
    delete -AID a00000006203010c01
    Command --> 80E400800B4F09A00000006203010C0100
    Wrapped command --> 84E40080134F09A00000006203010C01094A9BF13AD2CC3E00
    Response <-- 6A88
    delete_applet() returns 0x80206A88 (6A88: Referenced data not found.)
    delete -AID a00000006203010c0101
    Command --> 80E400800C4F0AA00000006203010C010100
    Wrapped command --> 84E40080144F0AA00000006203010C010156679B9711B83FAB00
    Response <-- 6A88
    delete_applet() returns 0x80206A88 (6A88: Referenced data not found.)
    install -file HelloWorld.cap -nvDataLimit 500 -instParam 00 -priv 2
    file name HelloWorld.cap
    Command --> 80E602001F09A00000006203010C0107A0000000030000000AEF08C60201A8C80201
    F40000
    Wrapped command --> 84E602002709A00000006203010C0107A0000000030000000AEF08C60201
    A8C80201F400D35F07F1D11A31E500
    Response <-- 6985
    install_for_load() returns 0x80206985 (6985: Command not allowed - Conditions of use not satisfied.)What it does mean?..
    so, can i reset THE RETRY COUNTER of my Java Card?..
    could you give me an example script that reset the Retry Counter?..
    Thanks in advance..
    Sorry i really confuse.. :(

  • Java card cap file install error in jcop tools

    When i try to run java card applet in real java card it gives this error.i used jcop tools and java version 1.5  and eclipse 3.2.when i run the applet in simulater it works fine.i saw some document it says allocate memory for the installation process.i don't know how to do that.
    /term "winscard:4|SCM Microsystems Inc. SCL010 Contactless Reader 0"
    --Opening terminal
    >  /card -a a000000003000000 -c com.ibm.jc.CardManager
    resetCard with timeout: 0 (ms)
    --Waiting for card...
    ATR=3B 8A 80 01 4A 43 4F 50 33 31 56 32 33 32 7A       ;...JCOP31V232z
    ATR: T=0, T=1, Hist="JCOP31V232"
    => 00 A4 04 00 08 A0 00 00 00 03 00 00 00 00          ..............
    (23807 usec)
    <= 6F 65 84 08 A0 00 00 00 03 00 00 00 A5 59 9F 65    oe...........Y.e
        01 FF 9F 6E 06 47 91 73 51 2E 00 73 4A 06 07 2A    ...n.G.sQ..sJ..*
        86 48 86 FC 6B 01 60 0C 06 0A 2A 86 48 86 FC 6B    .H..k.`...*.H..k
        02 02 01 01 63 09 06 07 2A 86 48 86 FC 6B 03 64    ....c...*.H..k.d
        0B 06 09 2A 86 48 86 FC 6B 04 02 15 65 0B 06 09    ...*.H..k...e...
        2B 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01    +...Hd...f...+..
        04 01 2A 02 6E 01 02 90 00                         ..*.n....
    Status: No Error
    cm>  set-key 255/1/DES-ECB/404142434445464748494a4b4c4d4e4f 255/2/DES-ECB/404142434445464748494a4b4c4d4e4f 255/3/DES-ECB/404142434445464748494a4b4c4d4e4f
    cm>  init-update 255
    => 80 50 00 00 08 AC B1 90 01 BF 2D 24 A0 00          .P........-$..
    (49906 usec)
    <= 00 00 91 18 01 39 93 95 05 59 FF 02 00 2C BE 39    .....9...Y...,.9
        5E A5 07 55 87 B8 C3 A8 A6 93 66 2B 90 00          ^..U......f+..
    Status: No Error
    cm>  ext-auth plain
    => 84 82 00 00 10 0C AE 50 3E C8 7E 1D 92 29 E2 59    .......P>.~..).Y
        08 D9 DA 02 16                                     .....
    (57276 usec)
    <= 90 00                                              ..
    Status: No Error
    cm>  delete 060504030201
    => 80 E4 00 00 08 4F 06 06 05 04 03 02 01 00          .....O........
    (40041 usec)
    <= 6A 88                                              j.
    Status: Reference data not found
    jcshell: Error code: 6a88 (Reference data not found)
    jcshell: Wrong response APDU: 6A88
    Ignoring expected error
    cm>  delete 010203040506
    => 80 E4 00 00 08 4F 06 01 02 03 04 05 06 00          .....O........
    (17392 usec)
    <= 6A 88                                              j.
    Status: Reference data not found
    jcshell: Error code: 6a88 (Reference data not found)
    jcshell: Wrong response APDU: 6A88
    Ignoring expected error
    cm>  upload -d -b 250 "Cap File location"
    => 80 E6 02 00 13 06 01 02 03 04 05 06 08 A0 00 00    ................
        00 03 00 00 00 00 00 00 00                         .........
    (32303 usec)
    <= 00 90 00                                           ...
    Status: No Error
    => 80 E8 00 00 FA C4 81 F2 01 00 23 DE CA FF ED 02    ..........#.....
        02 04 00 01 06 01 02 03 04 05 06 12 68 6D 73 2F    ............hms/
        6A 61 76 61 63 61 72 64 2F 68 65 6C 6C 6F 02 00    javacard/hello..
        21 00 23 00 21 00 0A 00 0B 00 1E 00 0E 00 3D 00    !.#.!.........=.
        0A 00 0B 00 00 00 4D 01 BE 00 00 00 00 00 00 01    ......M.........
        01 00 04 00 0B 01 02 01 07 A0 00 00 00 62 01 01    .............b..
        03 00 0A 01 06 06 05 04 03 02 01 00 08 06 00 0E    ................
        00 00 00 80 03 00 FF 00 07 01 00 00 00 1C 07 00    ................
        3D 00 01 10 18 8C 00 05 7A 05 30 8F 00 00 3D 8C    =.......z.0...=.
        00 01 18 1D 04 41 18 1D 25 8B 00 02 7A 02 21 18    .....A..%...z.!.
        8B 00 03 60 03 7A 19 8B 00 04 2D 1A 04 25 73 00    ...`.z....-..%s.
        09 00 00 00 00 00 0F 11 6D 00 8D 00 06 7A 08 00    ........m....z..
        0A 00 00 00 00 00 00 00 00 00 00 05 00 1E 00 07    ................
        01 00 02 00 06 00 00 01 03 80 03 02 03 80 03 03    ................
        03 80 0A 01 06 80 03 00 06 80 07 01 09 00 0B 00    ................
        00 00 07 05 06 04 0A 07 07 13 0B 00 4D 01 00 00    ............M...
    (764519 usec)
    <= 6A 80                                              j.
    Status: Wrong data
    jcshell: Error code: 6a80 (Wrong data)
    jcshell: Wrong response APDU: 6A80
    Unexpected error; aborting execution

    Thanks ReNa
    i am using nxp jcop 31 contact-less card.and it will support for java card 2.2.1 and global-platform card specification 2.1.1 .so i am using nxp jcop training 2007 tools and it has java card 2.2.1 and global-platform card specification 2.1.1.Inside my project there are three jar files these are jc221.jar and gp211.jar and bio10.jar
    i will appreciate your help
    Thanks

  • New to Java card

    I want to develop an aplication with java cads, for this porpouse I've chosen the JCOP41, but I have some questions:
    1. Where I can find the JCOP41 appart from http://www.usasmartcard.com (I preffer Europe)
    2. While I'm waiting to JCOP tools can I work with eclipse JCDE plug in. I mean If I can write in the card and simulate with this insted of JCOP tools
    3. If I want to use a token for digital signature wich one do you recomend me?
    Thanks and regards

    Amirali10 wrote:
    Thank you for answer my friend,but I have a studies project about javaCard 3 connected edition,so I hope you could give me a practical example of how I can deploy them in smart cards,so what mean I use to deploy it,should I get smartcard writer or reader,or what should I get and I do?Hi,
    You will not have much luck finding commercially available Java Card 3 cards yet. If you want to be able to deploy to a real card rather than a simulator in the near future you will want to look at Java Card 2.2.1 or 2.2.2. To deploy to a card you will need a PC/SC card reader and software that can authenticate to the card (what this software needs to do is also outlined in the GlobalPlatform card specification). This will give you the ability to write to the card as well. Search the forum for recent posts on card reader vendors.
    Cheers,
    Shane

  • How does the Java Card simulator work? (Using NetBeans)

    Hi,
    I'm using NetBeans and am trying to simulate:
    Someone powering up the card, saving a value, and powering down... And then they power it up again, get the value, and power down.
    When I edit my APDU script to do the second part, the value I entered the first time is never stored, which probably means that when I 'run' my code, my application is loaded and everything is initialized again.
    How do I edit NetBeans to not install the application every time I hit 'run'? And not to initialize the values, so that when i power it up again, I can get a value stored in a previous running of a script?
    When I use powerup, powerdown and then powerup again, NetBeans doesn't powerup the simulator the second time. So understanding the Java Card Simulator would also help... where it is, how it runs, what options it runs with, etc.

    Hi Shane,
    I have not read anywhere else that the JC3 cards are not available, thank you so much for that tip! I am not doing it for research, but I am working on this alone and will have to deploy a card later on. I will be getting all the right versions now.
    I'll ask the question then, using just the JCDK:
    If I want to save a value on the card, and then need it at a later time, how do I go about it. Do I do the following?
    (1) Install the application on the card. (I know how to do this)
    (2) Run the simulator using -o "eeprom data filename"
    (3) Save the value using the APDU calls and Java code on the card + close connection.
    Code:
    public class MyApp extends Applet {
        private static byte[] data = {0x00, 0x00, 0x00};
        // Install method, method to register, process method that can call saveData or recallData, etc
        public static void saveData()
           // code to change data
           data = {0x01, 0x01, 0x01};
        public static byte[] recallData()
           // code to return data
           return data;
    }(4) Run the simulator using -i "eeprom data filename". get the value using recallData().
    Will selecting the app not make data initialize to {0x00, 0x00, 0x00} again?
    If I know this is the correct way of going about it, then I can work towards it getting done.
    From other examples I can see that this is probably the way it should work, but my data array always returns as {0x00, 0x00, 0x00}.

  • Java Card Gurus.. help needed!!! Could be a hidden bug with JavaCard Tools!

    Hello,
    I've run into a small problem, if u could help me out, Id be really grateful.
    The problem lies in the WAY the tools are used(apdutool, jcwde etc). The project envisages the running of the tools from a RELATIVE point of view and not absolute. That is, (simplistically speaking),
    The Host side is handled thus:
    I AM NOTrunning jcwde as : jcwde -p 9025 jcwde.app
    The mode is : c:\javacarddk\bin\jcwde.bat -p 9025 c:\temp\raj\jcwde.app
    The Card side is handled thus :
    The CAP file generation is : c:\javacarddk\bin\converter.bat -config c:\temp\raj\walletfile.opt
    The SCR file generation is : c:\javacarddk\bin\scriptgen.bat -o wallet.scr com/sun/..../javacard/wallet.cap
    However. the SERVER responds positively with the "T=0 listening on port 9025" message,
    but as soon as the CLIENT is started, ie
    c:\javacarddk\bin\apdutool c:\temp\raj\wallet.scr,
    The following exception is thrown :(SERVER)
    java.net.SocketException: Connection reset by peer: JVM_recv in socket input str
    eam read
    jcwde terminating on receipt of SimulationException. See previous messages for
    cause.
    and on the CLIENT :
    com.sun.javacard.apdutool.ReaderWriterError: Card powered down. (0x15)
    Please help, as the source codes of the JavaCard API are not available, so I am unable to determine if this
    RELATIVE path access is the root of the problem.
    Any help is appreceiated!!!!
    Thanks
    --Raj

    cref is not the same as JCWDE.
    JCWDE uses class files to emulate Java Card environment. It doesn't support package installation.
    If you want to test a package using JCWDE you should a) add path to your class files to classpath that is used by JCWDE and b) specify in JCWDE configuration file AIDs for your applets.
    JCWDE receives APDU commands and transfer them to your classes, everything is executed in usual java VM. You can even put debug output (System.out.println(...)) into your sources.
    cref if a 'c reference implementation' of Java Card VM. It executes Java Card bytecodes and emulates real device. It supports package installation (scriptgen/apdutool) and works with converted packages.
    If you want to test a package using cref you should compile sources, convert class files into cap file, create a script for package installation and use apdutool to install and 'run' package in cref.

  • How to run Java Card 2.2.2 sample Wallet Application?

    Hi Friends..
    I've downloaded Eclipse Pulsar and Java Card Plugins..
    and i tried to make an empty applicatio, and then i loaded all samples application into my empty application..
    after that, i tried to set AID for Wallet Applet and for package of Wallet Applet..
    I've tried to creates a .CAP file, .EXP file, .JCA file, and scripts file through Eclipse Java Card tools..
    and then what else i've to do?..
    Please give me any suggestion.., because i'm so dizzy.. :(
    Thanks in advance..

    Sorry, i forgot to ask this question..
    Will .cap file installed automatically, when .cap file loaded successfully?
    it means that the all packages and applets would be installed automatically, when that all files loaded successfully?
    Thanks in advance..

Maybe you are looking for