FYI: IBM has quit the JCOP Tools!

Hi,
I just checked the JCOP-Tools news site for new versions and found the following notice:
The JCOP project comes to a close in our lab.The whole team working on JCOP in Zurich says goodbye and thanks all the users of our tools and on-card software.
Please note that no orders for JCOP cards and activation codes can be placed on this website after January 31, 2006.
See it yourself: http://www.zurich.ibm.com/jcop/news/news.html
My suggestion for all developer who are using the JCOP-tools:
Make yourself a backup of the JCOP plugin so you will be able to install it even if the online installation repository isn't available anymore.
At least download the current plugin-file:
http://www.zurich.ibm.com/jcop/download/eclipse/plugins/com.ibm.bluez.jcop.eclipse_3.1.1.b.jar
Additionally you can download the site and feature file, too:
http://www.zurich.ibm.com/jcop/download/eclipse/site.xml
http://www.zurich.ibm.com/jcop/download/eclipse/features/com.ibm.bluez.jcop.eclipse_3.1.1.b.jar
This allows you do perform an offline installation of the JCOP tools in case you have to clean up your eclipse.
For installation you can extract this jar into a new subdirectory (named "com.ibm.bluez.jcop.eclipse_3.1.1.b") of the eclipse "plugin" directory.
BTW: They are explicitly referring to this forum for "questions and answers for using JCOP".
Perhaps that means some of the formerly JCOP members will participate in this forum? - We will see...
Jan

Can anybody provide details of how JCOP tools can now
be aquired?Obvious answer: contact IBM. There is a link on the old Zurich pages. I know that they still work on JCOP, but I presume they have changed the conditions on acquiring the JCOP tools, since they have matured and have left Zurich. IBM is used to doing this; see Aphaworks. If their products get to a certain stage, they become (part of) a commercial product. I don't think they still provide sample cards etc. Read their page to be sure.

Similar Messages

  • Instructions for Downloading and Activating the JCOP Tools

    In response to my question:
    I refer to JCOP Tools available on Eclipse.
    If the plug-in free for download?
    If it is not, kindly provide a proper hyperlink from which those interested can place their order.Listed below is the reply from IBM. Can anyone who has successfully obtained the activation code this way confirm whether you need to foot the postage?
    Cheers!!!!
    There is no charge for the JCOP Tools. The tools are provided as-is with no warranty or support. Instructions for downloading and activating the tools follow.
    Please note that because our Java Card operating system is now available for more than one silicon vendor, IBM will no longer act as a distributor for sample cards. If you require a sample card, you must now approach the silicon vendors directly . Our current silicon partners are Philips Semiconductor, Samsung and Sharp. In addition you may be able to obtain JCOP sample cards from suppliers on this list http://www.zurich.ibm.com/jcop/order/cards.html
    JCOP Tools are subject to US Government Export Controls, and therefore each install has to be activated individually to ensure compliance. Please follow the instructions below for each copy of the tools that need to be activated.
    Prerequisites:
       1. If you do not already have a Java Runtime Environment (JRE) installed, download and install a JRE or JDK. You can do so from this website (http://java.sun.com/j2se/1.4.2/download.html). Please note that we recommend the use of JRE version 1.4.2.
       2. If you do not already have the open source software development environment Eclipse installed, download and install Eclipse (http://www.eclipse.org/), You can do so from this website(http://www.eclipse.org/downloads/index.php). JCOP Tools require Eclipse 3.1
    To download the tools and start install:
       1. Download the current Update Site image from here (http://www.zurich.ibm.com/jcop/download/eclipse/image/tools.zip)
       2. Unzip the downloaded file to a location of your choice
       3. Start the Eclipse IDE
       4. From the menu bar click on Help > Software Updates > Find and Install
       5. In the Install/Update Dialog select Search for new features to install
       6. Click Next
       7. Click on New Archived Site . . . and browse to the location chosen in step 2
       8. Select the file tools.zip
       9. Click Open then OK then Finish
      10. Eclipse Update Manager will start to install the plug-in, continue with the install as needed.
    For an activation code please send me ([email protected]) the following information:
       1. Your full postal address  - the serial number will be sent via International Courier for US Export control reasons.
       2. Your contact telephone number
       3. The serial number of your JCOP tools install
       4. Your planned usage/reason for needing the JCOP tools
       5. If a student, a copy (fax or digital photo) of your student ID
    For the serial number (item 3 above):
       1. Ensure you have downloaded and installed the JCOP Tools
       2. Start the Eclipse IDE
       3. From the menu bar click on File > New > Project
       4. In the New Project Dialog expand the Java Card folder
       5. Select Java Card Project
       6. Click Next
       7. You should now see the JCOP Licensing Wizard
       8. Click Next
       9. Select Verify an Activation Code
      10. Click Next
      11. The Serial Number should appear on the next page, above the Activation Code entry fields.
      12. Once you have that number click on Cancel then Abort (Note: the Java Card project choice will be disabled until the next time you restart Eclipse)

    For those who are interested to use the JCOP simulator for a start, I have checked that the plug-in and feature files (in tools.zip) for Eclipse are still available at IBM site, please download and install yourself.
    I still keep a copy of user guide for JCOP tools (version 3.1.1a) and the contents are still relevant to Version 3.1.1b simulator in tools.zip.
    If you are interested to have a copy of such document, kindly drop me an email to [email protected]

  • 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ä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)

  • 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);
    }

  • Getting started with JCOP Tools

    I have a working Eclipse + JCOP Tools installation, activated. I now also have a Cardman reader (drivers loaded) and some blank JCOP30 cards. I read through the Eclipse embedded JCOP help page, but couldn't find the answers to some simple questions:
    1. How can I see a list of connected readers to ensure my reader hardware is recognized? I read earlier on the forums about a "Launch Configuration page". How do I access this page?
    2. The JCOP Shell seems to be working... my cards are blank and /terminal does show "Slot empty" or "Card present" so I presume the interface is running fine. My cards are totally blank. Can I still read any useful info from them such as vendor strings, version#, etc?
    3. Do the JCOP Tools 3.1.2 come with a sample project? Since I've never used this environment, I would love to see an example of working code that can be simulated or loaded onto a physical card. It would help me "learn by example"
    If there is sample code, where can I find it? I tried to use Eclipse's import from archive but didn't find anything resembling samples within jcop tools. Any example you know of would be great.

    Here is the ATR and cplc output for my card. So far I know with certainty it's JCOP30-something and it supports T=CL.
    But I'm not even sure which Java Card and Global Platform it supports! The "JCOP version map" from the 2003 specs document says JC 2.1.1 and GP 2.0.1, but http://www-306.ibm.com/software/wireless/wecos/jcop30.html says these cards are JC 2.2.1 and GP 2.1.1. Yikes! Which do I have?
    cm>  /atr
    resetCard with timeout: 0 (ms)
    --Waiting for card...
    ATR=3B 86 80 01 4A 43 4F 50 33 30 12                   ;...JCOP30.
    ATR: T=0, T=1, Hist="JCOP30"
    cm>  get-cplc
    => 80 CA 9F 7F 00                                     .....
    (11274 usec)
    <= 9F 7F 2A 40 70 95 16 40 51 30 84 30 1A 61 12 00    ..*@[email protected]..
        69 00 90 95 59 40 70 61 19 00 00 00 00 06 31 13    [email protected].
        30 36 39 30 30 00 00 00 00 00 00 00 00 90 00       06900..........
    Status: No Error
      IC Fabricator                      : 4070
      IC Type                            : 9516
      Operating System ID                : 4051
      Operating System release date      : 3084 (25.3.2003)
      Operating System release level     : 301A
      IC Fabrication Date                : 6112 (22.4.2006)
      IC Serial Number                   : 00690090
      IC Batch Identifier                : 9559
      IC Module Fabricator               : 4070
      IC Module Packaging Date           : 6119 (29.4.2006)
      ICC Manufacturer                   : 0000
      IC Embedding Date                  : 0000
      IC Pre-Personalizer                : 0631
      IC Pre-Perso. Equipment Date       : 1330 (26.11.2001)
      IC Pre-Perso. Equipment ID         : 36393030
      IC Personalizer                    : 0000
      IC Personalization Date            : 0000
      IC Perso. Equipment ID             : 00000000

  • Where can I buy Java Card and get the JCOP?

    I have searched this forums to find out where I can buy Java Card and get the JCOP, but most links are disconnected and information is incorrect.
    Recently, if someone purchase small amount of the Java Card and get the JCOP, please share your information with me.
    I contacted the Gemalto, but they only sell big amount of Java Card to customers and I also contacted the usasmartcard.com several times via e-mail, phone and fax but they did not answer for my call. it seems they closed their business.
    I really want the information where I can buy small amount of Java Cards and get the JCOP.
    I will appreciate your reply.
    Thanks

    I searched through google and found the following shops:
    http://www.motechno.com/ibm-java-card-jcop.0.html?gclid=CK_IrtOfkY8CFRF_TAodazMRFg
    http://www.smartcardgroup.com/shop.php
    http://www.smartcardsource.com/
    Regarding the JCOP Tools you should contact NXP. Searching this forum will also help you.

  • JCOP tools??

    hi,
    i�m trying to develop with the JCOP tools but i would like to have more information about APIs (java) and the diferences between packages included in the CD (JCOP 30,10,21id,21sim...).I�ve used the documentation in the CD,JCOP xx technical briefs, but i still have some questions about it.
    My application is a simulation relying on cryptographic services,public key, digital signature and security certificates.Wich JCOP can i use in my implementation?
    Where can i find the visa openplatform api to use it?
    thank a lot,
    waiting for your response,Javier.

    I find it hard to believe you read the JCOPOverview.pdf that came with the kit and you don't know which cards to use. J-10 only has DES, j-20/30 contain DES and RSA. How can you not see that ?
    Go to GlobalPlatform.org and download the older version, 2.0.1. You can also download the 2.1 version to see the visa op APIs but they are deprecated.

  • Where can I find the JCOP tutorial?

    The " Load" APDU command of my card is a little different from that of the JCOP.
    So if I use JCOP to load applets to my card, there will be error.
    So I wonder if I can modify the default parameters of APDU command in JCOP.
    Or is there a JCOP tutorial ?
    I can't find help in Eclipse help content. It always tells me :
    The topic that you have requested is not available. The link may be wrong, or you may not have the corresponding product feature installed. This online help only includes documentation for features that are installed.

    The LOAD command instruction is 0xE8 and not 0xE0/0xE1.
    Lc is one byte, so how can you exceed FF?
    Optionally the LOAD response can include a receipt (delegated management). If your card mandates a response length of 1 byte (Le=01) it means that no receipt is expected --> receipt length 00. JCOPs LOAD command has Le=0x00 set by default --> response length undefined. This is in accordance with Java Card API, which follows the ISO 7816-4 APDU structure.
    Let's look at the help of the JCOP tools upload command:usage: upload [-p|--progress][-c|--components][-r|--random][-l|--package package-name][-s|--sd SD-AID][-m|--params parameters][-b|--block_length length][-a|--auto][-d|--load-debug] CAP-file
    -c|--components
                Load CAP-file component wise.
    -r|--random
                Load with random APDU length.
    -b|--block_length length
                Max. block (APDU) length sent to the card during package upload.
        length  Max. block (APDU) length.So you can set the block length --> Lc as you wish.
    Message was edited by:
    lexdabear

  • Where can I download JCOP tools and activate it

    as I have learned that :As of July 1st 2007, all support activities for the JCOP operating system on NXP/Philips silicon will be serviced by NXP Semiconductors.
    Please email requests for the JCOP Tools to: [email protected]
    It means that I have to request the JCOP Tools from the above mail and have no any other means?
    can you tell me other way to get the JCOP Tools, thank you very much!

    A guy from NXP explained to me that they need to follow export control regulations strictly as it is basically an U.S. product. The second thing is that most JCOP products are Common Criteria certified and this requires that also the simulation included in JCOP is handled under NDA. To remove JCOP Tools from all this constraints would mean that all crypto functionality is minimized to the same level as in Sun's Java Card development kit (tools + simulation).
    Maybe IBM had a smarter way of deailing with this or had a special deal with the U.S. customs, don't know.

  • JCOP Tools site.xml

    Good day!
    i have already the file com.ibm.bluez.jcop.eclipse_3.1.1.b necessary for the installation of the eclipse plugin of the jcop tools.
    but this file is missing the Site.xml file necessary for the instalation, it gives me the error "not a valid update site" when it try to do an offline install
    Could anyone with a valid Site.xml file for this install tell me how to build it? or where to download it? or send it via email to me at [email protected]!
    i would be most appreciative for the help!
    Alex.

    Whu don't you choose 'archived site'?

  • JCOP tools under linux - no readers detected for activation

    [eclipse 3.1.2, pcsc-lite 1.4, redhat el3]
    I just downloaded the JCOP tools as described in the following post:
    http://forum.java.sun.com/thread.jspa?forumID=23&threadID=722788
    I found that it would not install under linux, because win32 has been specified in the site and feature manifest files. When I removed these entries, it installed OK.
    Now, when I attempt to activate using my "engineering sample" card, the activation wizard notifies me that no PC/SC readers were detected. I'm puzzled by this, since pcsc-lite (1.4) is working well on my system, and I can see the reader & card being detected in pcscd's log. I have also been careful to ensure that eclipse knows about the shared library paths and I've even included jpcsc.jar as an extra library.
    If anyone else has JCOP tools working under linux, I'd appreciate any insights that might help. My issue may be simply that I have downloaded a custom windows distribution (tools.zip) - hence the manifest hack - perhaps there is a linux one?

    Could be the pcsc-lite 1.4 version the problem?
    http://forum.java.sun.com/thread.jspa?forumID=23&threadID=688560PC/SC Support (Linux)
    JCOP Tools only works with pcsc-lite 1.2.0.

  • Can't get JCOP tools

    Hi everyone,
    I need to develop a Java Card application for NXP JCOP 21 - 36Kb cards. I don't have cards so far but want to look at JCOP API to ensure it is what I need and can work with.
    However, it seems that I simply can't get JCOP from anywhere! I tried to download it from IBM and here's what I got it tools.zip:
    As of July 1st 2007, all support activities for the JCOP operating system on NXP/Philips silicon will be serviced by  NXP Semiconductors.
    Please email requests for the JCOP Tools to: [email protected]
    As you may have guessed I wrote them to NXP. They don't reply for 4 days already. What am I supposed to do? Any ideas would be appreciated.
    Thanks in advance.

    Hi DomElion
    Ive been researching extensively on java smartcard project for a while since I got involved in one such project very recently. Im a total newbie hence need some guidance regarding the same. Came across this posting and thought maybe I could get some help (which I desparately need now :(( )
    Ive got SETECS 256k java smart card and a card reader. I installed java card 2.2, gpshell and java 6 (for smartcard IO). But sinct smart card IO can be used only to communicate with the card (and applets already on card) I still need java card kit and GPShell to install/load applets on the card. Hence Im now trying to understand the helloWorld applet loading given as example in the GPShell installation. But Im unable to understand few things in their script (which Im sure might be very basic and foolish of me to not understand that too :( ). But Ive successfully tried simulator, but I really need to write something and read it back from the "real" card !!
    Request to please please help me understand how to write and read back using GPShell. For example this is the script provided as sample by GPShell
    mode_211
    enable_trace
    establish_context
    card_connect
    select -AID a000000003000000
    open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f // Open secure channel
    delete -AID a00000006203010c0101
    delete -AID a00000006203010c01
    install -file HelloWorld.cap -nvDataLimit 2000 -instParam 00 -priv 2
    getdata
    # close_sc // Close secure channel
    # putkey // Put key
    // options:
    // -keyind Key index
    // -keyver Key version
    // -key Key value in hex
    card_disconnect
    release_context
    As seen above the line in bold is installing the helloworld on the card. But where is the AID assigned to it? What are the AIDs which are getting deleted? And what is the "select -AID a000000003000000" meaning?
    Also now that I have the helloWorld on the card how can I read that applet back to return to me "hello world" using smartcard io or even java card 2.2?
    Please please please please help !
    Thanks so much
    WAITING to hear back
    Best Regards

  • 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

  • Howto generata a openplatform.exp within JCOP Tools?

    Hi Guys,
    I am trying to compile and load the coolkey applet (http://directory.fedoraproject.org/wiki/BuildCoolKeyApplet) into a Cyberflex 64k card.
    The cap files need to be transformed with a byte code verifier before the card can load them.
    The byte code verfifier needs all .exp files from all incuded libraries. Thus I need the openplatform.exp file.
    I tried the one from http://www.globalplatform.org/specifications/archived/card-tech-201.zip but i am ending up with an error on install_for_install.
    I think maybee the JCOP tools have a slightly different version and I would like to have an openplatform.ext out of my build environment which is used for the applet.
    Can anybody tell me how I can generate such an exp file from the global platorm stuff included in the JCOP tools?
    Regards,
    Fabian

    Hi,
    I am using the one from http://www.trusted-logic.com/down.php
    If I call without arguments it looks like this:
    java -jar captransf.jar  -s -noint  coolkey.cap
    Cannot find export file for imported package a0:0:0:0:62:0:1
    Please provide the correct export file on the command lineTo get the muscle applet working (which does not use openplatform) I've used this line with success:
    java -jar captransf.jar -s -noint "api21\javacard\framework\javacard\framework.exp" "api21\javacard\security\javacard\security.exp"  "api21\java\lang\javacard\lang.exp"  "api21\javacardx\crypto\javacard\crypto.exp" musclecard.exp  musclecard.cap???

  • 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.

Maybe you are looking for

  • Best external connection

    i have a massive plasma and would love to have my new macbook use it as an additional screen vis the mini dvi port but whats bes dvi to vga or dvi to dvi?? i have been told vga is best but surely digital is better for flat screens? if i go dvi to dvi

  • Problem with Extended Desktop

    I have a 20" iMac Core Duo. I recently hooked up a 17" CRT as a dual monitor. It works great EXCEPT that when I go full screen in the second monitor with videos in iTunes, it blacks out my main monitor. I want to go full screen in the second monitor

  • Add Adobe Bridge Web Gallery to iweb

    I had made a Adobe Bridge Web Gallery. It woks perfectly fine when I preview the index.html file in the gallery folder. After I drop the gallery folder in my site folder, and making a photo link to the index.html file. The Web-Browser shows up Blank.

  • FOP - Displaying values

    What are the items that can be referenced / used by the xslt. One of the forum message says that a XML file is not created and that FOP picks up the data directly from the htmldb engine (metadata?) The headers are displayed using <xsl:for-each select

  • How to develop and call Asynchronous web service

    Hi All, I need to have a java web service that will be called asynchronously. That should execute, once triggered and caller shouldnt need to wait till its completion. How to develop and call asynchronoue web service ? Thanks Saikrishna