Debug Problem on Jcop Tools

Hello,
I have developed a Java Card Applet on Eclipse and I can run it through Jcop Tools' simulator. However, when I try to debug it, simulator returns 6A80 to upload command. Would you please tell me, what can be the reason of this problem?
Thanks in Advance,
Regards

Dear ankey21, thank you for your response. Restarting Eclipse could not solve the problem.
Here is apdu trace:
cm>  upload -d -b 250 "D:\**.cap"
=> 80 E6 02 00 12 05 6D 79 61 70 70 08 A0 00 00 00    ......myapp.....
    03 00 00 00 00 00 00 00                            ........
(1556 usec)
<= 00 90 00                                           ...
Status: No Error
=> 80 E8 00 00 FA C4 83 01 1E D7 01 00 15 DE CA FF    ................
    ED 02 02 04 00 01 05 6D 79 61 70 70 05 6D 79 61    .......myapp.mya
    70 70 02 00 21 00 15 00 21 00 09 00 32 04 56 00    pp..!...!...2.V.
    55 4A 89 00 DD 0A 62 00 00 0C 5F B7 73 00 18 00    UJ....b..._.s...
    0B 00 B2 05 01 00 04 00 32 05 02 01 07 A0 00 00    ........2.......
    00 62 01 01 02 01 07 A0 00 00 00 62 02 01 02 01    .b.........b....
    07 A0 00 00 00 62 01 02 00 01 06 A0 00 00 01 51    .....b.........Q
    00 00 01 07 A0 00 00 00 62 00 01 03 00 09 01 05    ........b.......
    4D 79 41 70 70 04 09 06 00 55 00 00 80 00 80 03    MyApp....U......
    43 00 40 04 06 00 00 04 32 FF FF 04 1D 04 3C 32    [email protected].....<2
    E3 32 EE 00 84 00 07 00 07 01 02 00 08 47 4D 47    .2...........GMG
    72 46 56 46 66 46 95 46 D1 47 11 47 E1 47 F6 48    rFVFfF.F.G.G.G.H
    04 00 84 00 08 00 07 01 00 00 0A 49 6E 49 BA 49    ...........InI.I
    C4 49 D0 49 EB 4A 0C 4A 1B 4A 2D 4A 3F 4A 71 07    .I.I.J.J.J-J?Jq.
    4A 89 24 03 D3 80 1A 03 ED 00 00 04 25 80 04 04    J.$.........%...
    2B 00 AB 04 54 01 AE 06 04 00 64 04 54 01 AE 00    +...T.....d.T...
(864915 nsec)
<= 6A 80                                              j.
Status: Wrong data
jcshell: Error code: 6a80 (Wrong data)
jcshell: Wrong response APDU: 6A80
Unexpected error; aborting executionRegards,

Similar Messages

  • Problem with JCOP tool

    Hi all,
    I wrote simple applet and I tried to test it with JCOP Tool (eclipse) but I get this error
    cm>  /term "Remote|localhost:8050"
    /card -a a000000003000000 -c com.ibm.jc.CardManagerATR: 3BFA1300008131FE454A434F5034315632323196
    ATR: T=1, FI=1/DI=3 (93clk/etu), N=0, IFSC=254, BWI=4/CWI=5, Hist="JCOP41V221"
    cm>  set-key 255/1/DES-ECB/404142434445464748494a4b4c4d4e4f 255/2/DES-ECB/404142434445464748494a4b4c4d4e4f 255/3/DES-ECB/404142434445464748494a4b4c4d4e4f
    cm>  init-update 255
    cm>  ext-auth plain
    cm>  delete 4422331234
    cm>  delete 4422331234
    jcshell: Error code: 6a88 (Reference data not found)
    jcshell: Wrong response APDU: 6A88
    Ignoring expected error
    cm>  delete 0000000001
    cm>  delete 0000000011
    cm>  upload -b 250 "D:\Development\Java\projects\JavaCard\HelloWorld\bin\org\erno\jc\hello\javacard\hello.cap"
    cm>  install -i 0000000001  -q C9#() 0000000011 0000000001
    cm>  upload -b 250 "D:\Development\Java\projects\JavaCard\test\bin\org\erno\test\javacard\test.cap"
    cm>  install -i 4422331234  -q C9#() 4422331234 4422331234
    jcshell: Error code: 6985 (Conditions of use not satisfied)
    jcshell: Wrong response APDU: 6985
    Unexpected error; aborting executiondoes anybody know what is wrong with it? I am new about this :-(. thanx for any help.
    regards
    p.s. I'm using simulator not real card.

    Hy,
    here is the status I get when I try to run my applet
    -  /term "Remote|localhost:50337"
    --Opening terminal
    /card -a a000000003000000 -c com.ibm.jc.CardManagerresetCard with timeout: 0 (ms)
    --Waiting for card...
    ATR=3B FA 13 00 00 81 31 FE 45 4A 43 4F 50 34 31 56    ;.....1.EJCOP41V
        32 32 31 96                                        221.
    ATR: T=1, FI=1/DI=3 (93clk/etu), N=0, IFSC=254, BWI=4/CWI=5, Hist="JCOP41V221"
    => 00 A4 04 00 08 A0 00 00 00 03 00 00 00 00          ..............
    (15538 usec)
    <= 6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65    o..............e
        01 FF 90 00                                        ....
    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 D7 5D 16 84 88 87 8B B0 00          .P....].......
    (4177 usec)
    <= 00 00 57 F3 97 D9 7F 72 88 55 FF 02 00 00 3D 02    ..W....r.U....=.
        9C 31 C7 89 90 D8 41 D7 23 6B DD B4 90 00          .1....A.#k....
    Status: No Error
    cm>  ext-auth plain
    => 84 82 00 00 10 45 11 3E D7 C1 3E 63 40 3A 2F EF    .....E.>..>c@:/.
        C1 E6 93 3C 0F                                     ...<.
    (3099 usec)
    <= 90 00                                              ..
    Status: No Error
    cm>  delete 0000000012
    => 80 E4 00 00 07 4F 05 00 00 00 00 12 00             .....O.......
    (1459 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 0000000012
    => 80 E4 00 00 07 4F 05 00 00 00 00 12 00             .....O.......
    (1613 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 -b 250 "D:\Development\Java\projects\JavaCard\JCErnad\bin\erno\jc\javacard\jc.cap"
    => 80 E6 02 00 12 05 00 00 00 00 12 08 A0 00 00 00    ................
        03 00 00 00 00 00 00 00                            ........
    (3475 usec)
    <= 00 90 00                                           ...
    Status: No Error
    => 80 E8 80 00 E8 C4 81 E5 01 00 17 DE CA FF ED 02    ................
        02 04 00 01 05 00 00 00 00 12 07 65 72 6E 6F 2F    ...........erno/
        6A 63 02 00 21 00 17 00 21 00 09 00 0B 00 1E 00    jc..!...!.......
        0E 00 3D 00 0A 00 0B 00 00 00 4D 01 A3 00 00 00    ..=.......M.....
        00 00 00 01 01 00 04 00 0B 01 02 01 07 A0 00 00    ................
        00 62 01 01 03 00 09 01 05 00 00 00 00 12 00 08    .b..............
        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 06 7A 05 30 8F 00    ...=.......z.0..
        03 3D 8C 00 00 18 1D 04 41 18 1D 25 8B 00 01 7A    .=......A..%...z
        02 21 18 8B 00 02 60 03 7A 19 8B 00 04 2D 1A 04    .!....`.z....-..
        25 73 00 09 00 00 00 00 00 0F 11 6D 00 8D 00 05    %s.........m....
        7A 08 00 0A 00 00 00 00 00 00 00 00 00 00 05 00    z...............
        1E 00 07 06 00 00 01 03 80 03 02 03 80 03 03 01    ................
        00 02 00 03 80 0A 01 06 80 07 01 06 80 03 00 09    ................
        00 0B 00 00 00 07 05 06 04 0A 07 07 13 00          ..............
    (18434 usec)
    <= 00 90 00                                           ...
    Status: No Error
    Load report:
      232 bytes loaded in 0.0 seconds
      effective code size on card:
          + package AID       5
          + applet AIDs       12
          + classes           17
          + methods           64
          + statics           0
          + exports           0
            overall           98  bytes
    cm>  install -i 0000000012  -q C9#() 0000000012 0000000012
    => 80 E6 0C 00 18 05 00 00 00 00 12 05 00 00 00 00    ................
        12 05 00 00 00 00 12 01 00 02 C9 00 00 00          ..............
    (3280 usec)
    <= 69 85                                              i.
    Status: Conditions of use not satisfied
    jcshell: Error code: 6985 (Conditions of use not satisfied)
    jcshell: Wrong response APDU: 6985
    Unexpected error; aborting executionthanks
    regards
    erno

  • JCOP Tools init-update problem

    Hello, everybody!!!
    I wanna simulate CardManager authentication behaviour and have some problems... Below i show you excerpts from my applet and the process of sending INITIALIZE UPDATE command to it using JCOP Shell.
    If somebody has an idea to deal with this issue, please help.
    Here's the definition of key i've used:
    byte[] secKey = new byte[] {
          (byte)0x40, (byte)0x41, (byte)0x42, (byte)0x43,
          (byte)0x44, (byte)0x45, (byte)0x46, (byte)0x47
    };This is done inside the constructor (secKey declared as a class field).
    Next, i've added method to process INITIALIZE UPDATE command:
       private boolean processInitUpdate(APDU apdu) {
          byte[] buffer = apdu.getBuffer();
          if((buffer[ISO7816.OFFSET_CLA] != 0x80) &&
                (buffer[ISO7816.OFFSET_INS] != 0x50))
             return false;
          byte challengeLen = buffer[ISO7816.OFFSET_LC];
          byte dataRead = (byte)apdu.setIncomingAndReceive();
          if((challengeLen != 0x08) || (dataRead != 0x08)) {
             ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
          // Encrypted cryptogram buffer
          byte[] cryptogram = new byte[8];
          DESKey des_key = (DESKey)KeyBuilder.buildKey(
                KeyBuilder.TYPE_DES, KeyBuilder.LENGTH_DES, false);
          des_key.setKey(secKey, (short)0);
          Cipher cipher = Cipher.getInstance(Cipher.ALG_DES_ECB_NOPAD, false);
          cipher.init(des_key, Cipher.MODE_ENCRYPT);
          // Encrypt the incoming challenge
          cipher.doFinal(buffer, ISO7816.OFFSET_CDATA, (byte)8, cryptogram, (byte)0);
          // Output data
          byte[] keyDeriviation = new byte[] {
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
          byte[] keyInfo = new byte[] {
                (byte)0xff, (byte)0x02
          // TODO generate random
          byte[] challenge = new byte[] {
                (byte)0x11, (byte)0x22, (byte)0x33, (byte)0x44,
                (byte)0x55, (byte)0x66, (byte)0x77, (byte)0x88
          // Calculate total length of the data to be sent
          short totalLen = (short)(keyDeriviation.length + keyInfo.length +
                                   cryptogram.length + challenge.length);
          apdu.setOutgoing();
          apdu.setOutgoingLength(totalLen);
          apdu.sendBytesLong(keyDeriviation, (short)0, (short)keyDeriviation.length);
          apdu.sendBytesLong(keyInfo, (short)0, (short)keyInfo.length);
          apdu.sendBytesLong(challenge, (short)0, (short)challenge.length);
          apdu.sendBytesLong(cryptogram, (short)0, (short)cryptogram.length);
          return true;
       }This method returns true if command has been processed successfully.
    I've used GlobalPlatform specification to properly parse command APDU and to generate response APDU.
    Then i use JCOP Tools for Eclipse shell. I select above applet and define keys as follows:
    set-key 255/1/DES-ECB/4041424344454647
    set-key 255/2/DES-ECB/4041424344454647
    set-key 255/3/DES-ECB/4041424344454647Then i use init-update command:
    init-update 255Shell generates the following APDU command sequence:
    80 50 00 00 08 C3 17 13 59 C6 0F ED ED 00We can see the challenge, generated by simulator: C3 17 13 59 C6 0F ED ED.
    I got the response:
    00 00 00 00 00 00 00 00 00 00 FF 02 11 22 33 44 55 66 77 88 4D 4C E8 7E 6A 04 B1 43 90 00It seems everything all right, but shell shows an error:
    Status: No Error
    jcshell: Error code: -5 (Authentication failed)
    jcshell: Wrong response APDU: 00000000000000000000FF0211223344556677884D4CE87E6A04B1439000I think I set keys inside the shell incorrectly. I use triple-DES, but code uses simple DES. However, i use equal keysets for triple-DES so it's the same as DES.
    What's wrong?
    Thank you.

    Hello everybody, again!
    At last, I solved my problem. The issue was I incorrectly generated card cryptogram data. Cryptogram must be constructed using full triple DES algorithm. After that JCOP shell processes init-update 255 successfully.
    Below I'll present working code for processing INITIALIZE UPDATE command in JCOP tools, maybe this will be helpful for somebody.
       private boolean processInitUpdate(APDU apdu) {
          byte[] buffer = apdu.getBuffer();
          // Whether this INITIALIZE UPDATE command?
          if((buffer[ISO7816.OFFSET_CLA] != 0x80) &&
                (buffer[ISO7816.OFFSET_INS] != 0x50))
             return false;
          byte challengeLen = buffer[ISO7816.OFFSET_LC];
          byte dataRead = (byte)apdu.setIncomingAndReceive();
          if((challengeLen != 0x08) || (dataRead != 0x08)) {
             ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
          // TODO generate random
          // Card challange
          byte[] challenge = new byte[] {
                (byte)0x11, (byte)0x22, (byte)0x33, (byte)0x44,
                (byte)0x55, (byte)0x66, (byte)0x77, (byte)0x88
          // DES Secure Channel Encryption Key (S-ENC) generation
          // Deriviation data array
          byte[] derivData = new byte[16];
          // Secure Channel Encryption Key data array
          byte[] s_enc_key = new byte[16];
          // The construction of deriviation data
          Util.arrayCopy(buffer, (short)(ISO7816.OFFSET_CDATA + 4), derivData, (short)12, (short)4);
          Util.arrayCopy(challenge, (short)0, derivData, (short)8, (short)4);
          Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, derivData, (short)4, (short)4);
          Util.arrayCopy(challenge, (short)4, derivData, (short)0, (short)4);
          // Construct and initialize Cipher with des_key
          DESKey des_key = (DESKey)KeyBuilder.buildKey(
                KeyBuilder.TYPE_DES, KeyBuilder.LENGTH_DES3_2KEY, false);
          des_key.setKey(secKey, (short)0);
          Cipher cipher = Cipher.getInstance(Cipher.ALG_DES_ECB_NOPAD, false);
          cipher.init(des_key, Cipher.MODE_ENCRYPT);
          // Generate session S-ENC key
          cipher.doFinal(derivData, (byte)0, (byte)derivData.length, s_enc_key, (byte)0);
          // Card Authentication Cryptogram generation
          // Cryptogram data array
          byte[] cryptogram = new byte[8];
          // Initial vector data
          byte[] initVector = new byte[] {
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
          // Construct and initialize Cipher with s_enc_key
          des_key.setKey(s_enc_key, (short)0);
          cipher = Cipher.getInstance(Cipher.ALG_DES_CBC_NOPAD, false);
          cipher.init(des_key, Cipher.MODE_ENCRYPT, initVector, (short)0, (short)initVector.length);
          // Extract host challenge from input buffer
          byte[] hostChallenge = new byte[8];
          Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, hostChallenge, (short)0, (short)hostChallenge.length);
          // Step 1: Encrypt host challenge using ICV of binary zeroes
          byte[] inputData = xorOperation(initVector, hostChallenge);
          cipher.doFinal(inputData, (short)0, (short)inputData.length, cryptogram, (short)0);
          // Step 2: Encrypt card challenge using results of the previous operation
          inputData = xorOperation(cryptogram, challenge);
          cipher.doFinal(inputData, (short)0, (short)inputData.length, cryptogram, (short)0);
          // Step 3: Encrypt DES padding data using results of the previous operation
          byte[] pad = new byte[] {
                (byte)0x80, (byte)0x00, (byte)0x00, (byte)0x00,
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
          inputData = xorOperation(cryptogram, pad);
          cipher.doFinal(inputData, (short)0, (short)inputData.length, cryptogram, (short)0);
          // Generate output
          byte[] keyDeriviation = new byte[] {
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
          byte[] keyInfo = new byte[] {
                (byte)0xff, (byte)0x01
          // Calculate total length of the data to be sent
          short totalLen = (short)(keyDeriviation.length + keyInfo.length +
                                   cryptogram.length + challenge.length);
          apdu.setOutgoing();
          apdu.setOutgoingLength(totalLen);
          apdu.sendBytesLong(keyDeriviation, (short)0, (short)keyDeriviation.length);
          apdu.sendBytesLong(keyInfo, (short)0, (short)keyInfo.length);
          apdu.sendBytesLong(challenge, (short)0, (short)challenge.length);
          apdu.sendBytesLong(cryptogram, (short)0, (short)cryptogram.length);
          return true;
       private byte[] xorOperation(byte[] op1, byte[] op2) {
          byte[] res = new byte[8];
          if((op1.length != 8) || (op2.length != 8)) return null;
          for(byte i = 0; i < res.length; i++) {
             res[i] = (byte)(op1[i] ^ op2);
    return res;
    Regards, Eugene.

  • JCOP Tools Problem Error code: 6985 (Conditions of use not satisfied)

    I have a problem with the JCOP tools. I am developing a very simple applet which does nothing at all. It is a "hello world" type applet so that I can get something working. It compiles ok, however as soon as I try to run it under the emulator I get an error.
    Status: Conditions of use not satisfied jcshell: Error code: 6985 (Conditions of use not satisfied) jcshell: Wrong response APDU: 6985
    This always happens when the jcshell issues the install command.
    The install command is:
    install -i 1234567890 -t -l -d -m -p -s -b -e -q C9#(1234567890) 1234567890 1234567890
    I must be doing something very basic incorrectly. I have tried searching the forums and internet and I haven't found anything. Any help would be appreciated.
    The code is this:
    package pt.microfil.test;
    import javacard.framework.*;
    import javacard.framework.ISO7816;
    import javacard.framework.ISOException;
    import javacard.framework.APDU;
    public class testcard 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
         // this is the text string which will send back from the ICC to the IFD
         final static byte[] text = {(byte) 'e', (byte) 't', (byte) 's', (byte) ' ',
         (byte) 'g', (byte) 'e', (byte) 'h', (byte) 't', (byte) 's', (byte) ' ',
         (byte) 'd', (byte) 'e', (byte) 's', (byte) ' ',
         (byte) 'G', (byte) 'l', (byte) 'u', (byte) 'm', (byte) 'p'};
         public static void install(byte[] bArray, short bOffset, byte bLength) {
              // GP-compliant JavaCard applet registration
              //new testcard().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
              new testcard().register();
         public static void install() {
              new testcard().register();
         public void process(APDU apdu) {
              byte[] cmd_apdu = apdu.getBuffer(); // the cmd_apdu variable is used because of performance reasons
              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
              // check if P1=P2=0
              if ((cmd_apdu[ISO7816.OFFSET_P1] != 0) || (cmd_apdu[ISO7816.OFFSET_P2] != 0)) {
              ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
              } // if
              // check if P3=length of the text field
              short le = (short)(cmd_apdu[ISO7816.OFFSET_LC] & 0x00FF); // calculate Le (expected length)
              short len_text = (short)text.length; // the len_text variable is used because of performance reasons
              if (le != len_text) {
              ISOException.throwIt((short)(ISO7816.SW_CORRECT_LENGTH_00 + len_text)); // give the expected length back to the IFD
              } // if
              apdu.setOutgoing(); // set transmission to outgoing data
              apdu.setOutgoingLength((short)len_text); // set the number of bytes to send to the IFD
              apdu.sendBytesLong(text, (short)0, (short)len_text);
              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);
    }

    i also found this error and i change the package name and applet id.it is not changing.now i got same error.
    cm>  install -i 6d796170702e617070  -q C9#() 6d797061636b616765 6d796170702e617070
    jcshell: Error code: 6985 (Conditions of use not satisfied)
    jcshell: Wrong response APDU: 6985
    Unexpected error; aborting execution
    how can i solve the problem??

  • I can not create interface [Eclipse - JCOP Tools Problem]

    Hello Dear All,
    I have a problem about Eclipse and I want to demonstrate it with an example.Let's say there are two applets, called A and B. I want to share a function of A applet with B applet. To do it, I create an interface(File -> New -> Other -> Interface) and then, a problem occured. For all open projects in eclipse, eclipse shows this error message: "Unsupported Java compiler: Class files with version: 50.0 [Major.minor] are not yet supported by JCOP Tools."
    I worked on this situation too much however I could not solve this problem, I need your help.
    (I use last version of Eclipse and JCOP Tools)
    Thanks in Advance,
    Kindly Regards
    Selcuk

    JCOP Tools does not support Java 6 yet. Reason is the CAP file converter. Just set the Java compiler compliancy in Eclipse to 1.5 and you should be fine.

  • JCOP tools without GUI

    Hello,
    i would like to know, what scripts is JCOP tools exactly running while building Java files (generating class files) and converting them to CAP files. I.e. what does "Build autoimatically" exactly do in ECLIPSE IDE with JCOP plug-in? What .jar files are also used?
    I.e. i want to be able to rebuild my Java Card projects for different version os java cards without opening the Eclipse IDE, openning projects and building them in IDE.
    I would appreciate nay information.
    Thanks a lot,
    best regards,
    newbie.

    Hello.
    Thanks a lot lexdabear for your reply.
    The post you've noticed above was very useful for me. I have solved the problem with tric.jar and also would like to add my 50 cents regarding some solutions proposed by Lillesand.
    The error listed below can be simply avoided by explicitly declaring the whole name of the applet, i.e. -a 0xF3:0xF3:0xF3:0xF3:0xF3:0xA1:0xA1:0xA1:0xA1:0xA1 no.qfree.keyexport.KeyDiversification.
    E:\tools\captest2>java -cp e:\eclipse\plugins\com.ibm.bluez.jcop.eclipse_3.1.2\tric.jar com.ibm.jc.apps.tric.jc.Converter
    -dd e:\tools\captest2\
    -cp e:\workspace\KeyExport\bin\;e:\tools\java_card_kit-2_2_2\lib\api.jar
    -ep E:\tools\java_card_kit-2_2_2\api_export_files
    -a 0xF3:0xF3:0xF3:0xF3:0xF3:0xA1:0xA1:0xA1:0xA1:0xA1 KeyDiversification 0xF3:0xF3:0xF3:0xF3:0xF3:0xA2:0xA2:0xA2:0xA2:0xA2 StringStorage
    no.qfree.keyexport 0xF3:0xF3:0xF3:0xF3:0xF3 1 0
    Error: class java.lang.RuntimeException, no such applet class LKeyDiversification; found in package no/qfree/keyexportAlso my there are some facts that i have figured out during the usage of tric.jar through command line:
    1. Eclipse IDE produces slightly different .class files than i do by using
    javac -source 1.3 -target 1.2 -g options during the compilation. May be it uses additional options?
    2. Perhaps, as a result, a bit different CAP files are produced that the ones built automatically using Eclipse IDE GUI. Those CAP files also slightly differ in size (usually smaller tha mines). The only components that differ in size are:
    Method.cap
    Debug.cap.
    The files produced through command line work just fine. I guess, that JCOP tools may additionally optimize the .class files to produce a bit smaller .CAP files.
    3. Regarding the version information JCOP tools tric.jar produces
    CAP files with version M=2, m=1 when using JC211 API, and
    CAP files with version M=2, M=2 when using JC221.
    I also converted the same files uding JCDKv2.2.1. It produces CAP files of version M=2, M=1.
    In my opinion, all the problems that occured in the aforementioned post by Lillesand were caused by wrong usage of the JC2.2.2 export files.
    I totally agree with you, lexdabear regarding choosing only one solution. In case you are using JCOP tools (through GUI or command line) you must use JCOP JC API .jar files and tric.jar converter.
    If you are using JCDK, you must use its api.jar library with export files and converter from JCDK (coverter.bat).
    I hope this info might be useful.
    Best regards,
    Eve
    Edited by: Ieva on Nov 5, 2007 4:11 AM

  • Using JCOP tools under Linux

    Hello.
    I looked through the older web sites of IBM regarding the usage of JCOP tools under Linux.
    I am interested in following questions:
    1. Is there any separate distributon version of JCOP tools for Linux?
    2. Can sample JCOP tools 3.1.2 plugin (for Windows) be used under Linux. What has to be modified? Also what additional tools have to be installed an used for communication with real cards through PC/SC readers.
    3. Is JCOP simulation option available under Linux?
    I'll appreciate any help.
    Best regards,
    newbie

    newbie2007 wrote:Hello.
    I looked through the older web sites of IBM regarding the usage of JCOP tools under Linux.
    I am interested in following questions:
    1. Is there any separate distributon version of JCOP tools for Linux?
    2. Can sample JCOP tools 3.1.2 plugin (for Windows) be used under Linux. What has to be modified? Also what additional tools have to be installed an used for communication with real cards through PC/SC readers.
    3. Is JCOP simulation option available under Linux?
    I'll appreciate any help.
    Best regards,
    newbieEverything should work, except for the target pack and the non-existent Linux Pegoda driver.1. The is no seperate Linux distribution. You just need a Linux distribution for Eclipse.JCOP Tools plugin should work under Linux, except for the target pack and the non-existent Pegoda driver for Linux.1. There is no seperate Linux distribution. You just need the Linux distribution for Eclipse.
    2. Prior to JCOP Tools 3.1.2 the last time something was mentioned about Linux was in the release notes of 3.1.1b . In version 3.2.0 IBM added a linux_support page to the JCOP Tools user guide (see release notes and linux_support page below).
    3. There shouldn't be any problems with the generic simulation. The target pack runs only with Windows though.
    h1. Release Notes
    h2. Version
    JCOP Tools 3.1.1.b (B&auml;rlach)
    h2. What's new?
    h3. 3.1.1.b
    <ul><li>New simulation (fixed static obj/arr bug, fixed instance field token bug).</li>
    <li>Applet privileges can now be specified in the launch configuration dialog.</li>
    <li>The "exportmap" feature is now available.</li>
    <li>The JCOP Performance Test Demo ("JCOP Factor") is now included.</li>
    <li>Minor bug fixes.</li>
    </ul>
    h2. Known problems
    <ul><li>Simulations do not run (Linux, MacOS X)
         The Eclipse update manager does not set the execute permission bits for the simulations. You need to manually <code>chmod 755</code> those files in ECLIPSE/plugins/com.ibm.bluez.jcop.eclipse_3.1.1.x/simuls/
    </li>
    <li>PC/SC Support (Linux)
         JCOP Tools only works with pcsc-lite 1.2.0.
    </li>
    </ul>
    h2. Frequently Asked Questions
    Please refer to the online FAQ at http://www.zurich.ibm.com/jcop/download/eclipse/faq/.
    h2. Bug Reports
    Please send bug reports to [email protected]. Make sure you include the following:
    <ul><li>Problem description</li>
    <li>Steps to reproduce</li>
    <li>Eclipse version and build number (Help > About)</li>
    <li>JCOP Tools version (Help > About; click on BlueZ icon)</li>
    </ul>
    h2. Using JCOP Tools with Linux (>= 3.2.0)
    h3. ___
    Overview
    The current JCOP Tools release now also offer a version for the popular Linux
    operating system. Both the Windows and Linux verson provide more or less the same
    functionality, and JCOP application development can thus fully succeed on Linux systems.
    Nevertheless, installation of the JCOP Tools differ between Windows and Linux
    where the Linux version does not provide a simple installer as in case of Windows.
    Additionally, the Linux version expects a properly setup Muscle PCSC installation
    as soon as you want to use them together with physical, real cards. As Muscle
    PCSC is still not shipped with most Linux distributions, you must download and
    install them separately from the JCOP Tools.
    h3. ___     
    Contents
    h3. ___
    Software Requirements
    Linux distribution
    The JCOP Tools simulation has been developed on a Fedora Core 6 system, but should also work in case of
    many other recent Linux distributions.
    Java Development Kit
    The JCOP Tools have been developed and tested with the Sun JDK 1.4.2_13-b06
    for Linux. Your success with other Development Kits may vary as there are
    partly subtle differences across the different devlopment kits.
    PCSC
    The JCOP Tools use PCSC to talk with real cards on Linux. Most distributions
    do not ship with Linux PCSC by default (Fedora Core 6 does), you must thus download it fromhttp://www.linuxnet.com
    and install it by yourself. If you are used to software installation under Linux,
    and are not afraid of compiling and installing software packages, this should
    not be a hard problem. You have to download both the base PCSC package
    (including PCSC daemon and client libraries) and separately the driver
    for the reader you want to use. The PCSC package contains a test program
    which should tell you whether your installation is set up correctly and
    communicating with a card works. The JCOP Tools have been reported to
    work together with Muscle PCSC version 1.3.1-7.
    JPCSC
    The JCOP Tools are shipped with JPCSC which you can also download athttp://www.linuxnet.com. JPCSC
    is a JNI library which offers Java applications the access to PC/SC functions
    by mapping their requests to an underlying native PC/SC implementation. The JCOP
    Tools - mostly written in Java - thus depend on JPCSC to communicate with real cards
    on Linux. JPCSC depends on a properly installed and setup PC/SC environment.
    Especially, the JAVA_LIBRARY_PATH should list the directories where the
    PC/SC client libraries and the native JPCSC library libjpcsc.so ( downloadable as binary from
    Windows Binary Download Here )
    are installed, the CLASSPATH variable should list th___
    Miscellaneous
    What should work
    As soon as you setup your system correctly, there should only be minor differences
    between using JCOP Tools on Windows or on Linux. Emulating a real JCOP,
    debugging, shell, cap-file conersion should all be possible as in case of Windows.
    What is missing
    No drivers or tools are currently available for using JCOP30's in contactless
    mode. If you need such support, please contact directly NXP
    at for further assistance.
    Copyright 2001,2007 IBM Corp. All rights reserved.
    Edited by: lexdabear on Sep 28, 2007 4:13 PM (I hate the new edit)

  • JCOP debug is crashing jcop.exe

    Bonjour,
    - I have a little problem using debug feature with JCOP 3.0 with Eclipse : When I set a breakpoint in my code (to follow some method's local variables) or watchpoint on a class field, I always get an error from Windows saying that "jcop.exe has encountred a problem and it's going to close". Normally, programs encountring this problem will close but this is not the case of jcop ! But even though jcop and Eclipse don't close, the debugging points I've set would not work :(
    - The only debug feature that is working well is "method breakpoint"
    - here you can find some detailed informations about the messages I get during the problem and also about my working environement :
    * Eclipse Platform Version: 2.1.2 - Build id: 200311030802
    * Microsoft Windows XP [version 5.1.2600] (Frensh , with Service Pack 2)
    * JCOP Tools 3.0 - Version 1.0.3.3
    * JDK : java version "1.4.2_08" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03) Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
    Rem : I tried as said on JCOP web site to use jdk 1.3.x, but I can't get the Eclipse Working well and it fails to create new JCOp project or building a project or rebuilding my workspace, etc.
    * here are the information provided by the Windows error message about jcop.exe :
    Module 1
    jcop.exe
    Image Base: 0x00400000 Image Size: 0x00000000
    Checksum: 0x0005657c Time Stamp: 0x40225743
    * here is another "dump" file generated by windows about this erreor :
    ##BEGIN
    <?xml version="1.0" encoding="UTF-16"?>
    <DATABASE>
    <EXE NAME="jcop.exe" FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="jcop.exe" SIZE="334848" CHECKSUM="0xDE1DA3EA" MODULE_TYPE="WIN32" PE_CHECKSUM="0x5657C" LINKER_VERSION="0x0" LINK_DATE="02/05/2004 14:46:27" UPTO_LINK_DATE="02/05/2004 14:46:27" />
    </EXE>
    <EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="1048576" CHECKSUM="0x60165972" BIN_FILE_VERSION="5.1.2600.2180" BIN_PRODUCT_VERSION="5.1.2600.2180" PRODUCT_VERSION="5.1.2600.2180" FILE_DESCRIPTION="DLL du client API BASE Windows NT" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Syst�me d'exploitation Microsoft� Windows�" FILE_VERSION="5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="� Microsoft Corporation. Tous droits r�serv�s." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x10626E" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.2180" UPTO_BIN_PRODUCT_VERSION="5.1.2600.2180" LINK_DATE="08/04/2004 07:54:15" UPTO_LINK_DATE="08/04/2004 07:54:15" VER_LANGUAGE="Fran�ais (France) [0x40c]" />
    </EXE>
    </DATABASE>
    ##END
    * Message I get in JCOP Shell when I launch the Debug and the problem occurs
    ##BEGIN
    => 80 E8 80 4D 2E 06 13 08 0D 06 05 0C 0E 0C 05 0B ...M............
    0D 07 04 0B 05 07 03 03 07 04 07 04 04 07 05 37 ...............7
    03 0C 04 12 05 0C 09 0B 06 03 06 03 03 08 04 08 ................
    09 03 04 00 ....
    Error code: -6 (Card terminal error)
    Error message: java.net.SocketException: Connection reset
    jcshell: D:/eclipse/plugins/com.ibm.bluez.jcop.eclipse.targetpack_1.0.3.3/lib/scripts/sim-simul-capfile-autoinstall.jcsh[58]: Communication problems.
    Ignoring expected error: Communication problems.
    end
    /set-var -s J 0
    while ${J} < ${PKG_${I}_APP_COUNT}
    install -i ${PKG_${I}_APP_${J}_INST_AID} -q EF#(C8#(0000)C7#(0000)CA#(${PKG_${I}_APP_${J}_SIM_DATA}))C9#(${PKG_${I}_APP_${J}_INST_DATA}) ${PKG_${I}_AID} ${PKG_${I}_APP_${J}_AID}
    => 80 E6 0C 00 4F 10 43 50 53 5F 41 70 70 6C 65 74 ....O.CPS_Applet
    31 2E 37 50 43 4B 10 43 50 53 5F 41 70 70 6C 65 1.7PCK.CPS_Apple
    74 31 2E 38 41 49 44 10 43 50 53 5F 41 70 70 6C t1.8AID.CPS_Appl
    65 74 31 2E 38 41 49 44 01 00 18 EF 14 C8 02 00 et1.8AID........
    00 C7 02 00 00 CA 0A 01 00 01 00 30 02 01 01 02 ...........0....
    02 C9 00 00 00 .....
    Error code: -6 (Card terminal error)
    Error message: java.net.SocketException: Connection reset by peer: socket write error
    jcshell: D:/eclipse/plugins/com.ibm.bluez.jcop.eclipse.targetpack_1.0.3.3/lib/scripts/sim-simul-capfile-autoinstall.jcsh[62]: Communication problems.
    Ignoring expected error: Communication problems.
    /set-var -s J ${J} + 1
    end
    /set-var -s J
    /set-var -s I $ + 1
    end
    /set-var -s I
    if "${SIM_DOWNLOAD}" == "GSM-03.48"
    end
    card-info
    => 80 F2 80 00 02 4F 00 00 .....O..
    Error code: -6 (Card terminal error)
    Error message: java.net.SocketException: Connection reset by peer: socket write error
    jcshell: D:/eclipse/plugins/com.ibm.bluez.jcop.eclipse.targetpack_1.0.3.3/lib/scripts/sim-simul-capfile-autoinstall.jcsh[80]: Communication problems.
    Ignoring expected error: Communication problems.
    ##END
    * I want just to add that I get always the same error when using Eclipse 2.1.3 version
    Best Regards

    best_003.2009 wrote:
    Iam using Eclipse 3.3.0.I installed JCOP tool in my eclipse.I can create Javacard applets now and i can upload and install to card also.but i couldnt debug my applet.can anybody help me.I also tried all the solutions which i searched in the forums." I couldn't debug" is not a comprehensive bug description one can reproduce your issue. Please state step by step what you're doing and what you expect.

  • JCOP Tools 3.1.1b: Debugger does not break, what am I doing wrong?

    Hey everybody
    I'm desperately trying to debug applets using the JCOP Tools 3.1.1b but when I start the applet in debug mode, the debugger does not break on the breakpoints I set. You might know the little ticks that appear on top of each breakpoint bullet in the editor. The strange thing is that these ticks do not even appear.
    I tried various versions of eclipse (3.1.0, 3.1.1, 3.1.2) and WinXP as wells as Linux. Does anybody else have the same problem or even a solution?
    Thanks
    Jonas

    hello,
    here are few steps you should check:
    - when you start the debug session JCOPShell will load the applet into the simulator. You have to first make sure the applet is loaded with debug info. JCOPShell should do that by default, but check on the trace that "upload" command is called with the -d option:
    upload -d "G:\glut-wks\JC\bin\helloworld\helloworld.cap" - then JCOPShell will install the applet with the "install" command. At that stage only the install function (and of course the constructor of the Applet) will be called. So breakpoints located in other part of the code won't break. Check the trace because if install is not called no applet code will be running.
    - after installation, applet must be first selected to get any of its code running. Use "/select |appletname". If you have a breakpoint at the beginning of the "process" method, it should break. if the Applet is not selected all future APDU will go to the cardmanager, and applet code won't be running.
    hope this help :)
    E.

  • Jcop tool

    I just bought the JCOP tools and a javacard reader/writer and i am so much confused as per its functions one of the problems i am having
    is that
    (1) In Suns Javacard parkage , AIDS are in the form 0xa0:0x0:0x0:0x0:0x62:0x3:0x1:0x8:0x1 while in the JCOP
    environment i noticed was in the form 01020304050601 which i assumed is in the decimal format how do i convert.
    (2) i tried writing a program which compiled well , when i wanted to test it with the JCShell it came out with this
    error "Not yet Connected to terminal" What could be the cause of this.
    (3) I have a Gemplus GPR400 Reader/writer attached to my laptop, though the computer has located and loaded drivers for it
    i still don't know how to like access the reader or download applets onto it , I don't know if the JCOP tool can download onto it

    >
    3. JCOP requires a PC/SC reader attached if you want
    to load onto one of the JCOP cards. You can also use
    the simulator for debugging. It appears that your
    reader might not be found, which could be related to
    question 2.yeah i guess so cos when i went to services i tried starting "Smart Card Resource Manager" and "Smart Card Helper" they would not start , they always give this error "The Dependency Service or group failed to start" what can be causing this probs i am using win Xp

  • Simulation using Eclipse plugin for JCOP tools

    Dear All,
    In search for a simulation environment for java card applet development I tried to use Eclipse plugin for JCOP tools.
    The samples which comes with the JCOP tools works fine but when try to debug my applet I receive the error: Wrong Data 6A 80.
    Generic JCOP v2.4.1 is selected for Java Card Simulation.
    Following is the JCOP Shell screen:
    cm- /term "Remote|localhost:8050"
    --Opening terminal
    /card -a a000000003000000 -c com.ibm.jc.CardManagerresetCard with timeout: 0 (ms)
    --Waiting for card...
    ATR=3B F8 13 00 00 81 31 FE 45 4A 43 4F 50 76 32 34 ;.....1.EJCOPv24
    31 B7 1.
    IOCTL().
    ATR: T=1, FI=1/DI=3 (93clk/etu), N=0, IFSC=254, BWI=4/CWI=5, Hist="JCOPv241"
    => 00 A4 04 00 08 A0 00 00 00 03 00 00 00 00 ..............
    (908058 nsec)
    <= 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 92 18 00 00 73 4A 06 07 2A ...n.G.....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 B1 04 15 2B 41 3F 62 AB 00 .P......+A?b..
    (2668 usec)
    <= 00 00 F9 02 71 E3 BB AD BD CD FF 02 00 00 3D 02 ....q.........=.
    9C 31 C7 89 AD 44 8E 13 17 15 2E 5A 90 00 .1...D.....Z..
    Status: No Error
    cm> ext-auth plain
    => 84 82 00 00 10 CE 6C DC D2 8C BE 5E 33 EC 58 D0 ......l....^3.X.
    57 3A 52 D2 24 W:R.$
    (2288 usec)
    <= 90 00 ..
    Status: No Error
    cm> delete -r a00000006203010c04
    => 80 E4 00 80 0B 4F 09 A0 00 00 00 62 03 01 0C 04 .....O.....b....
    00 .
    (1084 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 "D:\JCOP\eclipse\projects\DigitalTachograph\bin\digitaltachograph\javacard\digitaltachograph.cap"
    => 80 E6 02 00 16 09 A0 00 00 00 62 03 01 0C 04 08 ..........b.....
    A0 00 00 00 03 00 00 00 00 00 00 00 ............
    (2100 usec)
    <= 00 90 00 ...
    Status: No Error
    => 80 E8 00 00 FA C4 82 84 42 01 00 25 DE CA FF ED ........B..%....
    02 02 04 00 01 09 A0 00 00 00 62 03 01 0C 04 11 ..........b.....
    64 69 67 69 74 61 6C 74 61 63 68 6F 67 72 61 70 digitaltachograp
    68 02 00 21 00 25 00 21 00 0E 00 29 03 3E 00 CD h..!.%.!...).>..
    23 D2 01 BB 04 44 00 00 09 E3 4B E5 00 11 00 05 #....D....K.....
    01 A2 04 01 00 04 00 29 04 00 01 07 A0 00 00 00 .......)........
    62 00 01 02 01 07 A0 00 00 00 62 01 01 02 01 07 b.........b.....
    A0 00 00 00 62 01 02 02 01 07 A0 00 00 00 62 02 ....b.........b.
    01 03 00 0E 01 0A A0 00 00 00 62 03 01 0C 04 01 ..........b.....
    01 DF 06 00 CD 00 00 00 80 00 00 FF 00 01 00 00 ................
    00 01 81 03 13 00 12 07 03 00 00 02 01 03 06 0B ................
    8C 81 00 00 00 80 00 0B 00 0B 01 01 00 00 0B F9 ................
    00 80 00 11 00 0F 01 01 00 10 0E A9 0D D4 0D F7 ................
    0E 07 0E 18 0E 26 0E 35 0E 44 0E 50 0E 72 0E 81 .....&.5.D.P.r..
    0E 90 0E 9B 0E F5 11 05 11 1A 11 50 00 80 00 05 ...........P....
    00 04 01 04 00 01 13 AF 13 B5 13 BA 14 0C 13 00 ................
    (6775 usec)
    <= 6A 80 j.
    Status: Wrong data
    jcshell: Error code: 6a80 (Wrong data)
    jcshell: Wrong response APDU: 6A80
    Unexpected error; aborting execution
    I will be very happy if you can help me. I am desperately in need of a working debugging environment.
    Thanks in advance!
    Kind regards,
    Mehmet

         * Processes incoming READ_BINARY APDUs. Returns data of the currently
         * selected file.
         * @param apdu   where the offset is carried in header bytes p1 and p2.
         * @param le  expected length by terminal
         * @return length of the response APDU
        private short processReadBinary(APDU apdu, boolean protectedApdu,  short leUnprotected) {
            if (!hasFileSelected()) {
                ISOException.throwIt(SW_CONDITIONS_NOT_SATISFIED);
            byte[] buffer = apdu.getBuffer();
            // retrieve p1p2 from apdu buffer
            byte p1 = buffer[OFFSET_P1];
            byte p2 = buffer[OFFSET_P2];
            short offset = Util.makeShort(p1, p2);     // offset encoded in P1/P2, 15 lowest bit
            // offset encoded in P1/P2, 15 lowest bit
            // check if le != 0 <-- no response expected
            if (leUnprotected == 0) {
                ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
            if (selectedFile == null) {
                ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);
            if ((selectedFile.getAccessConditions() & READ_REQUIRES_SM) == READ_REQUIRES_SM) {
                if(!protectedApdu)
                   ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
            short fileSize = (short) selectedFile.getFileLength();
            // check offset
            if (offset >= fileSize) {
                ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2);
            // check expected length
            if ((short) (offset + leUnprotected) > fileSize) {
                ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
                //ISOException.throwIt(SW_TAMAM);
            short bufferOffset = 0;
            crypto.setEncryptionStatus(isSelectedFileEncrypted());
            if (protectedApdu) {
                bufferOffset = crypto.getApduBufferOffsetDT(leUnprotected);
                if(isSelectedFileEncrypted())
                   bufferOffset = crypto.getApduBufferOffset(leUnprotected);
                apdu.setOutgoing();
            Util.arrayCopyNonAtomic(selectedFile.getData(), offset, buffer, bufferOffset, leUnprotected);
            return leUnprotected;
         * Processes and UPDATE_BINARY apdu. Writes data in the currently selected
         * file.
         * @param apdu
         *            carries the offset where to write date in header bytes p1 and
         *            p2.
        private void processUpdateBinary(APDU apdu, boolean protectedApdu) {
            if (!hasFileSelected() || isLocked()) {
                ISOException.throwIt(ISO7816.SW_COMMAND_NOT_ALLOWED);
            if ((selectedFile.getAccessConditions() & DigitalTachograph.UPDATE_ALW) != DigitalTachograph.UPDATE_ALW) {
                if ((selectedFile.getAccessConditions() & DigitalTachograph.UPDATE_REQUIRES_SM) != DigitalTachograph.UPDATE_REQUIRES_SM) {
                    ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
                    return;
                }else if(!protectedApdu){
                        ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
            byte[] buffer = apdu.getBuffer();
            byte p1 = buffer[OFFSET_P1];
            byte p2 = buffer[OFFSET_P2];
            short offset = Util.makeShort(p1, p2);
            short readCount = (short) (buffer[ISO7816.OFFSET_LC] & 0xff);
            //if (!protectedApdu){
                readCount = apdu.setIncomingAndReceive();
            while (readCount > 0) {
                selectedFile.writeData(offset, buffer, OFFSET_CDATA, readCount);
                offset += readCount;
                readCount = apdu.receiveBytes(ISO7816.OFFSET_CDATA);
        private short processInternalAuthenticate(APDU apdu , boolean protectedApdu) throws CryptoException {
            byte[] buffer = apdu.getBuffer();
            short lc = (short) (buffer[OFFSET_LC] & 0xFF);
            if (lc != (short) (KID_LENGTH * 2)) {
                ISOException.throwIt(SW_WRONG_LENGTH);
            if (apdu.setIncomingAndReceive() != lc) {
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
            // Check if VU.CHR maches the one of the selected certificate on the card
            if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + KID_LENGTH), keyStore.selected_KID, (short) 0, KID_LENGTH) != 0) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            if (Util.arrayCopyNonAtomic(buffer, OFFSET_CDATA, Rnd1, (short) 0, (short) 8) != (short) 8) { // Receive Rnd1
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
            // Hash(PRnd2||K1||Rnd1||VU.CHR)
            random.generateData(PRnd2, (short) 0, (short) 90);
            random.generateData(K1, (short) 0, (short) 16);
            crypto.shaDigest.update(PRnd2, (short) 0, (short) 90); // PRnd2
            crypto.shaDigest.update(K1, (short) 0, (short) 16); // PRnd2||K1
            crypto.shaDigest.doFinal(buffer, OFFSET_CDATA, lc, digest, (short) 0); //Rnd1||VU.CHR
            BigNumber mod = new BigNumber((short) 128);
            mod.init(keyStore.Card_PubMod, (short) 0, (short) keyStore.Card_PubMod.length, BigNumber.FORMAT_HEX);
            mod.subtract(signed, (short) 0, (short) 128, BigNumber.FORMAT_HEX);
            if (mod.compareTo(signed, (short) 0, (short) 128, BigNumber.FORMAT_HEX) == -1) {
                mod.toBytes(signed, (short) 0, (short) 128, BigNumber.FORMAT_HEX);
            // To be added: if the selected private key is considered corrupted, the processing state returned is '6400' or '6581'.
            signed[0] = (byte) 0x6A;
            Util.arrayCopyNonAtomic(PRnd2, (short) 0, signed, (short) 1, (short) 90);
            Util.arrayCopyNonAtomic(K1, (short) 0, signed, (short) 91, (short) 16);
            Util.arrayCopyNonAtomic(digest, (short) 0, signed, (short) 107, (short) 20);
            signed[127] = (byte) 0xBC;
            if (!keyStore.cardPrivateKey.isInitialized()) {
                CryptoException.throwIt(CryptoException.ILLEGAL_VALUE);
            try {
                crypto.rsaSigner.init(keyStore.cardPrivateKey, Signature.MODE_SIGN);
                crypto.rsaSigner.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            if (!keyStore.selectedPublicKey.isInitialized()) {
                CryptoException.throwIt(CryptoException.ILLEGAL_VALUE);
            try {
                crypto.rsaCipher.init(keyStore.selectedPublicKey, Cipher.MODE_ENCRYPT);
                crypto.rsaCipher.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(signed, (short) 0, buffer, (short) 0, (short) 128);
            return (short) signed.length;
        private void processExternalAuthenticate(APDU apdu) {
            short equipmentType = 0;
            if (keyStore.Selected_Cert != null) {
                equipmentType = (short) keyStore.Selected_Cert.CHA[6]; // check equipment type
            if (equipmentType != (short) 1 && equipmentType != (short) 2 && equipmentType != (short) 3 && equipmentType != (short) 4 && equipmentType != (short) 6) {
                ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED); // Instead of 6F00 throw a more meaningfull SW in case CHA is not valid.
            if (Util.arrayCompare(keyStore.Selected_Cert.CHA, (short) 0, TACHOGRAPH_AID, (short) 0, (short) 6) != 0) {
                ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED);
            byte[] buffer = apdu.getBuffer();
            byte p1 = (byte) (buffer[OFFSET_P1] & 0xff);
            byte p2 = (byte) (buffer[OFFSET_P2] & 0xff);
            if (p1 != 0 || p2 != 0) {
                ISOException.throwIt(SW_WRONG_P1P2);
            short lc = (short) (buffer[OFFSET_LC] & 0xFF);
            if (lc != (short) (128)) {
                ISOException.throwIt(SW_WRONG_LENGTH);
            if (apdu.setIncomingAndReceive() != lc) {
                ISOException.throwIt(ISO7816.SW_WRONG_DATA);
            Util.arrayCopyNonAtomic(buffer, OFFSET_CDATA, signed, (short) 0, (short) 128); // receive the cryptogram from the VU
            // decrypt the encrypted message with the card private key
            try {
                crypto.rsaCipher.init(keyStore.cardPrivateKey, Cipher.MODE_DECRYPT);
                crypto.rsaCipher.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            // verify the signature with the VU public key
            try {
                crypto.rsaCipher.init(keyStore.selectedPublicKey, Signature.MODE_VERIFY); // Cipher.MODE_ENCRYPT
                crypto.rsaCipher.doFinal(signed, (short) 0, (short) 128, signed, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
            if (signed[0] != (byte) 0x6A || signed[127] != (byte) 0xBC) {
                ISOException.throwIt(Util.makeShort(signed[0], signed[127]));
            try {
                verifyCardCertificates();
                Util.arrayCopyNonAtomic(signed, (short) 1, preDigest, (short) 0, (short) 106); // accumulate preDigest
                Util.arrayCopyNonAtomic(Rnd3, (short) 0, preDigest, (short) 106, (short) 8); // accumulate preDigest
                Util.arrayCopyNonAtomic(keyStore.Card_Cert.CHR, (short) 0, preDigest, (short) 114, (short) 8); // accumulate preDigest
                Util.arrayCopyNonAtomic(signed, (short) 91, K2, (short) 0, (short) 16); // receive K2 value
                crypto.shaDigest.update(signed, (short) 1, (short) 106); // PRnd4||K2
                crypto.shaDigest.update(Rnd3, (short) 0, (short) 8); // Rnd3
                crypto.shaDigest.doFinal(keyStore.Card_Cert.CHR, (short) 0, (short) 8, digest, (short) 0); //||Card.CHR
            } catch (Exception e) {
                ISOException.throwIt(SW_TAMAM);
            if (Util.arrayCompare(signed, (short) 107, digest, (short) 0, (short) 20) != 0) {
                ISOException.throwIt(SW_TAMAM);
            volatileState[0] |= MUTUAL_AUTHENTICATED;
            try {
                DTUtil.xor(K1, (short) 0, K2, (short) 0, KaKb, (short) 0, (short) 16);
                Util.arrayCopyNonAtomic(Rnd3, (short) 4, SSC, (short) 0, (short) 4); // tail of Rnd3
                Util.arrayCopyNonAtomic(Rnd1, (short) 4, SSC, (short) 4, (short) 4); // tail of Rnd1
            } catch (Exception e) {
                ISOException.throwIt(SW_TAMAM);
            try {
                keyStore.setKey_Ka(KaKb, (short) 0);
                keyStore.setKey_Kb(KaKb, (short) 8);
                keyStore.setSecureMessagingKeys(KaKb, (short) 0, KaKb, (short) 0);
            } catch (Exception e) {
                ISOException.throwIt(SW_TAMAM_DEGIL);
            return;
        private short returnPreDigest(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(preDigest, (short) 0, buffer, (short) 0, (short) 122);
            return (short)preDigest.length;
        private short returnDigest(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(digest, (short) 0, buffer, (short) 0, (short) 20);
            return (short)digest.length;
        private short returnOriginalText(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            apdu.setOutgoing();
            Util.arrayCopyNonAtomic(signed, (short) 0, buffer, (short) 0, (short) 128);
            return (short)signed.length;
        private void processVerify(APDU apdu) { // Verify_CHV(Pin_Ws)
            byte[] buffer = apdu.getBuffer();
            // retrieve the PIN data for validation.
            byte byteRead = (byte) (apdu.setIncomingAndReceive());
            // the PIN data is read into the APDU buffer
            // at the offset ISO7816.OFFSET_CDATA the PIN data length = byteRead
            if (pin.check(buffer, ISO7816.OFFSET_CDATA, byteRead) == false) {
                ISOException.throwIt(SW_VERIFICATION_FAILED);
            return;
        private void processPSO(APDU apdu) { // verify certificate
            byte[] buffer = apdu.getBuffer();
            byte p1 = (byte) (buffer[OFFSET_P1] & 0xff);
            byte p2 = (byte) (buffer[OFFSET_P2] & 0xff);
            short lc = (short) (buffer[ISO7816.OFFSET_LC] & 0xFF);
            if (p1 == (byte) 0x00 && p2 == P2_VERIFYCERT) {
                if (lc != TACHO_CERT_LENGTH) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                if (apdu.setIncomingAndReceive() != lc) {
                    ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
                try { // copy the certificate to be verified from APDU buffer to cert object
                    Util.arrayCopyNonAtomic(buffer, OFFSET_CDATA, cert, (short) 0, lc);
                } catch (Exception e) {
                    ISOException.throwIt(SW_TAMAM);
                if (Util.arrayCompare(keyStore.selected_KID, (short) 0, keyStore.ERCA_KID, (short) 0, KID_LENGTH) == 0) {
                    keyStore.VUCA_Cert.verifyCert(cert, keyStore.selectedPublicKey, keyStore.selected_KID);
                } else if (Util.arrayCompare(keyStore.selected_KID, (short) 0, keyStore.VUCA_Cert.CHR, (short) 0, KID_LENGTH) == 0) {
                    keyStore.VU_Cert.verifyCert(cert, keyStore.selectedPublicKey, keyStore.selected_KID);
                } else {
                    ISOException.throwIt(SW_CERT_VERIFICATION_FAILED); // Selected keyId, with MSE, is neither ERCA_KID nor VUCA_KID
            } else {
                ISOException.throwIt(SW_CERT_VERIFICATION_FAILED);
            return;
        private short processGetChallenge(APDU apdu, boolean protectedApdu) {
            byte[] buffer = apdu.getBuffer();
            byte p1 = (byte) (buffer[OFFSET_P1] & 0xff);
            byte p2 = (byte) (buffer[OFFSET_P2] & 0xff);
            if (p1 != 0 || p2 != 0) {
                ISOException.throwIt(SW_WRONG_P1P2);
            random.generateData(Rnd3, (short) 0, (short) 8);
            short Le = apdu.setOutgoing();
            if (Le != (short) 8) {
                ISOException.throwIt(SW_WRONG_LENGTH);
            Util.arrayCopyNonAtomic(Rnd3, (short) 0, buffer, (short) 0, (short) 8);
            return Le;
        private void processMSE(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            if (buffer[OFFSET_P1] == (byte) 0xC1 && buffer[OFFSET_P2] == P2_DST) {
                short lc = (short) (buffer[OFFSET_LC] & 0xFF);
                if (lc != (short) (KID_LENGTH + 2)) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                if (apdu.setIncomingAndReceive() != lc) {
                    ISOException.throwIt(ISO7816.SW_WRONG_DATA);
                if (buffer[OFFSET_CDATA] != (byte) 0x83) {//check the tag of the data
                    ISOException.throwIt(SW_SECURE_MESSAGING_DATA_OBJECTS_MISSING);
                } else if (buffer[OFFSET_CDATA + 1] != (byte) 0x08) {
                    ISOException.throwIt(SW_INCORRECT_DATA_OBJECT); // check if the key is already selected one
                } else if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.selected_KID, (short) 0, KID_LENGTH) != 0) {
                    if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.ERCA_KID, (short) 0, KID_LENGTH) == 0) {// KID is EUR_KID
                        keyStore.selected_KID = keyStore.ERCA_KID;
                        keyStore.selectedPublicKey = keyStore.eurPublicKey;
                        keyStore.Selected_Cert = null; // ERCA public key is selected
                        return;
                    } else if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.VUCA_Cert.CHR, (short) 0, KID_LENGTH) == 0) {// KID is MSCA_KID
                        keyStore.Selected_Cert = keyStore.VUCA_Cert;
                    } else if (Util.arrayCompare(buffer, (short) (OFFSET_CDATA + 2), keyStore.VU_Cert.CHR, (short) 0, KID_LENGTH) == 0) { // KID is VU_KID
                        keyStore.Selected_Cert = keyStore.VU_Cert;
                    } else {
                        ISOException.throwIt(SW_REFERENCE_DATA_NOT_FOUND);
                    }// KID not found
                    keyStore.selectedPublicKey = keyStore.Selected_Cert.publicKey;
                    keyStore.selected_KID = keyStore.Selected_Cert.CHR;
                } else { // if the KID is already set, just return
                    return;
            } else {
                ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
        private void processSelectFile(APDU apdu) {
            byte[] buffer = apdu.getBuffer();
            short lc = (short) (buffer[OFFSET_LC] & 0x00FF);
            // retrieve p1p2 from apdu buffer
            byte p1 = buffer[OFFSET_P1];
            byte p2 = buffer[OFFSET_P2];
            short p1p2 = Util.makeShort(p1, p2);
            apdu.setIncomingAndReceive();
            if (p1 == 4) {
                if (lc == (short) TACHO_AID_LENGTH) {
                    if (Util.arrayCompare(buffer, (short) OFFSET_CDATA, TACHOGRAPH_AID, (short) 0, (short) TACHO_AID_LENGTH) == 0) {
                        selectedFile = fileSystem.getDT();
                        fileSystem.selectDT();
                        volatileState[0] |= FILE_SELECTED;
                        return;
                    } else {
                        ISOException.throwIt(ISO7816.SW_WRONG_DATA);
                } else if (lc != 2) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                short fid = Util.getShort(buffer, OFFSET_CDATA);
                if (fileSystem.getFile(fid) != null) {
                    selectedFile = fileSystem.getDT();
                    fileSystem.selectDT();
                    volatileState[0] |= FILE_SELECTED;
                    return;
            } else if (p1 == 2) {
                if (lc != 2) {
                    ISOException.throwIt(SW_WRONG_LENGTH);
                short fid = Util.getShort(buffer, OFFSET_CDATA);
                if (fileSystem.getFile(fid) != null) {
                    selectedFile = fileSystem.getFile(fid);
                    volatileState[0] |= FILE_SELECTED;
                    return;
            } else {
                ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
            setNoFileSelected();
            ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);
        public static void setNoFileSelected() {
            if (hasFileSelected()) {
                volatileState[0] ^= FILE_SELECTED;
        public static boolean hasFileSelected() {
            return (volatileState[0] & FILE_SELECTED) == FILE_SELECTED;
        public static boolean hasMutuallyAuthenticated() {
            return (volatileState[0] & MUTUAL_AUTHENTICATED) == MUTUAL_AUTHENTICATED;
        static boolean isLocked() {
            return (persistentState & LOCKED) == LOCKED;
        public boolean isSelectedFileEncrypted() {
            return ((selectedFile.getAccessConditions() & DigitalTachograph.ENCRYPTED) == DigitalTachograph.ENCRYPTED);
    }

  • JCOP tools on 64-bit platform

    Hello.
    Is there any way to find jct.dll, jcpcsc.dll (those are in the jcop plug-in os/ directory) analogues for 64-bit platform?
    As i know, jcop tools provides only dll's and so libraries for 32-bit platforms to communicate with the card? Are there any 64-bit compatible?
    I want to use Offcard API from JCOP tools on 64-bit platform (it uses mentioned above dlls or shared objects on Linux).
    Best regards,
    eveline-z

    eveline-z wrote:
    Thanks for your reply.
    So, Eclipse IDE with JCOP plug-in work fine on 64-bit platform without any emulation?Yes
    I mean, you had no problems with connecting to a real card through the JCShell or even using JCOP Offcard API (because those are using native dll's for 32-bit platform which reside in com.ibm.bluez.jcop.eclipse_3.1.2\os\win32\x86\ directory)?I tested only on the simulator
    The "com.ibm.bluez.jcop.eclipse_3.1.2\os\win32\x86\" directory is in the folder plugins in your eclipse path.
    example : c:\eclipse\plugins\com.ibm.bluez.jcop.eclipse_3.1.2\os\win32\x86\
    >
    >
    Thanks.
    Best regards,
    eveline-zMaDmEd

  • JCOP Tools don't detect Omnikey Cardman 3121 reader in activation

    Hello,
    I am trying to activate the JCOP Tools in my MacOS X, but my reader isn't detected by Eclipse / JCOP Tools.
    I have installed pcsc lite 1.4.4, and used pcsctest to check if the reader is working, and it seems to be ok:
    xxx:~ tuxed$ pcsctest
    MUSCLE PC/SC Lite Test Program
    Testing SCardEstablishContext    : Command successful.
    Testing SCardGetStatusChange
    Please insert a working reader   : Command successful.
    Testing SCardListReaders         : Command successful.
    Reader 01: OMNIKEY CardMan 3x21 0 0
    Enter the reader number          : 01
    Waiting for card insertion        
                                     : Command successful.
    Testing SCardConnect             : Command successful.
    Testing SCardStatus              : Command successful.
    Current Reader Name              : OMNIKEY CardMan 3x21 0 0
    Current Reader State             : 34
    Current Reader Protocol          : 0
    Current Reader ATR Size          : b
    Current Reader ATR Value         : 3B 67 00 00 29 20 00 6F 78 90 00
    Testing SCardDisconnect          : Command successful.
    Testing SCardReleaseContext      : Command successful.
    PC/SC Test Completed Successfully !Can anyone give me any clue to solve the problem?
    Thanks in advance :)

    I don't know about MacOS, but you can check the info about Linux:
    http://forum.java.sun.com/thread.jspa?forumID=23&threadID=5221167
    PC/SC Support (Linux)
    JCOP Tools only works with pcsc-lite 1.2.0.

  • JApplet debugging problem

    Hi there all:
    I'm having a problem with debugging a JApplet. I created a new workspace, project and applet and didn't make any changes to anything. When I try to debug the applet, I get these messages:
    System Error: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup )
    System Error: java.lang.Object java.lang.Class.newInstance0()
    System Error: java.lang.Object java.lang.Class.newInstance()
    System Error: java.applet.Applet sun.applet.AppletPanel.createApplet(sun.applet.AppletClassLoader)
    System Error: void sun.applet.AppletPanel.runLoader()
    System Error: void sun.applet.AppletPa
    System Error: nel.run()
    System Error: void java.lang.Thread.run()
    If I change the object from a JApplet class to an Applet class, I can debug just fine.
    Anyone know what's going on here?
    Thanks
    Jeff

    Me again. Was doing some searching on the net about this one since I've gotten no response.
    Found this at Inprise (Borland) about a debugging problem with JBuilder3 (I assume that the base of jdev is still JBuilder).
    http://community.borland.com/article/0,1410,19739,00.html
    To quote from their document--------
    Question:
    I can't seem to debug Applets with JBuilder3 Standard. If I attempt to debug my Applet
    I recieve the following error:
    java.security.AccessControlException: access denied (java.lang.RuntimePermission
    modifyThreadGroup )
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:195)
    at java.security.AccessController.checkPermission(AccessController.java:403)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    Why?
    Answer:
    In a nutshell this is an installation problem with JBuilder3 Standard edition.
    The install for JBuilder3 Standard did not provide the file 'DebugApplet.policy'.
    To resolve this problem download the file from the following URL:
    http://www.borland.com/devsupport/jbuilder/downloads/DebugApplet.policy
    After you have downloaded the file, copy the file to your JBuilder3\bin directory.
    This will fix the problem.
    You can also cut and paste the following:
    (NOTE: create the file DebugApplet.policy in your JBuilder3\bin directory)
    //DebugApplet.policy
    // These policy permissions are needed for the AppletViewer used by sun.tools.debug.
    grant {
    permission java.lang.RuntimePermission "accessClassInPackage.*";
    permission java.lang.RuntimePermission "modifyThread";
    permission java.lang.RuntimePermission "modifyThreadGroup";
    permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
    permission java.util.PropertyPermission "appletviewer.version", "read";
    permission java.io.FilePermission "<>", "read";
    permission java.security.AllPermission;
    Could this be a problem in JDev3 too?
    Jeff
    null

  • Unknown Error with JCop Tools 3.1.2

    Hello All ,
    I am using Eclipse program to create a javacard applet...
    But there is a unknown Problem appears to me ..I don't know how to solve it.
    First of All ,
    My OS is Windows 7 x64 bit
    My java version is : 1.6
    My Eclipse version is : 3.2
    My Smart Card Reader is : Omnikey ,CardMan 5321
    So First of All , i added the plugin "JCOP tools 3.1.2" to the Eclipse program , and i activated the tools successfully.
    and i created a new javacard project by using Basic Javacard template
    Now when i want to Run ,
    SO i when i set the Run options to Card Reader , and set the card reader to "OmniKey"
    like this image:
    [Image 1|http://img85.imageshack.us/img85/1158/runx.jpg]
    -By the way , i don't understand where "Philps Pegoda Reader" came from?? -
    Then when i press Run , the Eclipse program will be closed and this error appears:
    [Error Image|http://img135.imageshack.us/img135/2926/errorevs.jpg]
    I am not sure what is the problem ... so please some one help me here...
    Thank you for your time
    Edited by: ahmed30 on May 25, 2010 8:44 AM

    Hi,
    The pegoda reader is the default reader that has hard coded support (like JCOP engineering sample cards). I would say this is because NXP was founded by Phillips.
    I cannot help you with the second issue. I have only used JCOP 3.1.2 for a short time (quite a while ago now) and reverted to 3.1.1.b as 3.1.2 did not add any new features and from memory did not work properly on my WIndows XP machine (32-bit). I can confirm that 3.1.1 works on XP 64-bit under a 32-bit JVM.
    Is the issue when running against a card or the simulator or both?
    You could try running the jcop.exe executable in the plugins\com.ibm.bluez.jcop.eclipse_<version>\simuls\nJCOP\win32\x86 directory from a command prompt to see if it is an issue with Eclipse/Java or the JCOP simulator.
    Cheers,
    Shane

Maybe you are looking for

  • How do I get my MacBook Pro to recognize my Toshiba external hard drive?

    How do I get my MacBook Pro to recognize my Toshiba external hard drive? I'm working on transferring my music from our home computer to my new laptop and I already got all my music onto the hard drive but now, when I plug it into my MacBook Pro, it d

  • Recording from an external mixer in GB (line in)

    Dear everyone, Now I have succesfully managed to record into GB from my external mixer. But the problem is that it stops recording when it has recorded about 999 seconds, or something like that. Is it possible to anything about that? Any kind of help

  • ONLY-BAL NCES

    EXPERTS:-      We have the only total  Customer Outstainding Blances  Amounts,, Vendor Outstanding balnces How to show, the reports, where wil go if the path plz give that or othe wise T-Codes   plz provid that one.

  • Color space from lightroom to flickr

    Can anyone help me with this question....having developed raw images in lightroom, I then may publish some of them on my flickr account.  When these images are exported directly from Lightroom to Flickr, are they automatically exported in sRGB?....es

  • Storing CD's on a hard drive

    Hi all I am thinking of copying all of my CD's to a hard drive so that I have lossless copies if the CD colleection itself was lost or stolen. I would like to ask what the best lossless format, that is not application specific, would be? I am thinkin