GP of jcop eclipse plugin is really GP

Hallo, I was asking myself if the global platform implementation of the JCOP eclipse plugin (3.0) fully conform to the GP specific(or more simply I don't understand anything about GP).
Because I have an Oberthur ID-One Cosmo 64RSA GP2.1.1 compliant smart card, but I can't upload anything by JCOP shell, it stops at loading "import.cap" with 6985(Conditions of use not satisfied)
Any help comes like gold, thanks.
Gas.

The GP in JCOP Tools really is GP! If the LOAD process stops at IMPORT it usually means that the CAP files references something that is not on the card.
As far as I know, the Cosmo 64RSA is a JavaCard 2.2.0 compliant card. JCOP Tools generate JavaCard 2.2.1 CAP files, so the card stops loading at IMPORT, because it sees that javacard.framework 2.2.1 is referenced.
You can create 2.2.0 CAP files with JCOP tools if you get the 2.2.0 Sun kit and put those JAR and EXP files on the build path instead of the ones JCOP ships with.

Similar Messages

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

  • Flex 3.2 & 3.3 Framework Issue w/ Eclipse Plugin

    Hey Guys,
    I'm having an issue with using the 3.2 and 3.3 frameworks with the eclipse plugin (not an issue with the stand alone flex builder) (eclipse v3.3.2).  Pretty much everything works but the code hinting and auto importing doesn't work on some items.  For example anything in the "flash" package structure (ie: Event) will not import, and even worse within actionscript files, if the imports are manually typed out, the next time it does auto import something it'll actually run clean up on the file and delete the manually typed imports.  Also when typing out in mxml certain components, for example an mx:Button, the code hinting will not recognize certain attribues such as "click".  At compile time all is well and works fine as long as everything is manually typed in there.  Of course to really be an efficient coder manually typing and retyping certain imports over and over is not the answer.
    Thanks in advance!
    ~Jamie

    I've been using the FB Eclipse plugin (with Eclipse 3.4 and SDK 3.2.0) quite a bit and haven't had this problem at all, so I'm just taking a stab in the dark here to try to help.  It sounds to me like there might be an incorrect setting in your Flex Build Path properties or something related.  Make sure your project has the correct Flex SDK selected in the Library path, and make sure all the .swc files are showing up underneath it.  In particular, look for playerglobal.swc (that's the file that contains e.g. flash.events.Event).
    If that doesn't help, you really need to provide a little more information in your question, like:
    What have you already tried doing to fix the problem?  (For example, have you completely uninstalled and then reinstalled the Flex Builder Plugin since switching SDKs?  I didn't need to do this the last time I upgraded the SDK, but I'd say it's worth a try, since the installation process is pretty painless.)
    Have you changed any of the Flex settings in Eclipse?
    If you're working with a project you created previously, have you tried creating a brand new Flex project in Eclipse to see if the problem persists in a new project?

  • JDeveloper & Eclipse Plugins

    Hello,
    I thought Oracle wrote the specification regarding plugins? If that is true, will Eclipse follow these same guidelines and thus a plugin will be able to work in either JDev or Eclipse? There are so many more Eclipse plugin available it seems much more logical to pick Eclipse over JDev.

    The reason Eclipse has so many extensions is because
    it is missing so much functionality that is built-in
    in JDeveloper.Wow, what an argument Shay..., I'm guessing that is why Collaxa (or should I say Oracle BPEL) made their plug-ins in Eclipse and not JDeveloper.
    In my opinion Oracle should drop JDeveloper and start working on opening up their frameworks, like ADF, by building plug-ins like Collaxa did. Focus on what you do best, that being database and application server. I really believe ADF is a great framework, but think you would have a difficult time "selling" it to a prospect who isn't already using some or all of Oracle's stack.
    Also have a look at: http://theserverside.com/news/thread.tss?thread_id=27543

  • Merge 2 eclipse plugins into 1

    Hi All Techies,
    I got a problem in merging 2 eclipse plugins into 1.
    Its difficult as i need to invoke both these plugins with their own plugin.xmls and not to write a common plugin.xml.
    Explaination with example :
    i have a eclipse plugin "a".
    Another eclipse plugin "b"
    I want to make a common eclipse plugin "CommonPlugin" whose plugin.xml when invoked will inturn invoke plugin.xml of "a" and lugin.xml of "b".
    Please tell if query not clear ....
    Ashish

    what do you mean by "merge"? the whole point of plugins is, they are atomic units of functiionality. if they're related enough that you'd like to treat them as one, or one as part of the other, maybe you could look into the fragments mechanism, or you could write one plugin that exposes extension points for you to add other plugins related to yours. I'm not entirely clear on what your situation is, though, so I'm not really sure what's your best bet.
    btw, you were quite lucky that I happened to log on this morning, hardly anyone on these forums knows anything about writing eclipse plugins. you're probably better off with the newsgroups on eclipse.org for questions like this. also, if you're even a bit serious about writing plugins, you could really do with buying this book and possibly this one too, if RCP is your bag, or even if it's not, there's a fair amount about extension points and deployment in it

  • SWT and Eclipse Plugin

    im having trouble creating a plugin. i have created my code in JFC but unfortunately it wouldn't work in Eclipse plugin. it must be written in SWT..
    after searching tons of website on SWT and Eclipse Plugin, i came across the plugin wizard of Eclipse..
    i have created a sample SWT code and i was wondering how can i get it to work with an Eclipse plugin? i was editing the files under the src folder but to no avail, im still stuck..
    please help me.. thanx a lot.

    the wizards for generating eclipse plugins are quite useful if you use the right one. there's sample projects for more UI artifacts (editors, views etc). they'll do a lot of the legwork of setting up and configuring, say, a view, and give you a blank Composite to put your own work on
    you can also use the AWT_SWT bridge if you really want to use AWT or Swing components on your plugins, but it's a pain in the @rse to be honest
    also, you'd be far better off going to eclipse.org newsgroups for this sort of question. hardly anyone here uses SWT or writes plugins, that I know of

  • [ANN] FlexPMD 1.0 - FlexCPD 1.0 - FlexMetrics - FlexPMD Eclipse plugin has been released

    Finally, we got there...
    FlexPMD 1.0 has been released a couple of minutes ago.
    Here is the release note
    The big highlight of that release is:
    - Eclipse plugin
    - FlexMetrics
    - FlexCPD improved
    I hope you will like, and thanks to Xavi Beumala for developping the Eclipse plugin.
    Xavier

    Fantastic. Makes working on the errors and warnings so much easier!
    One minor issue - it would be nice to be able to select multiple projects and run CPD on them all at once:
    https://bugs.adobe.com/jira/browse/FLEXPMD-118
    I assume that CPD only runs on the currently selected fodler so to really check for duplicate code you'd have to run it across all projects at once - am I correct?
    Thanks for the great work.

  • JCOP + Eclipse + pegoda reader

    Hi all,
    i have written one java card applet with the help of eclipse plugin of JCOP,but i don't have philips pegoda reader to test my applet.
    is there any other way of testing applet without use of reader?
    or any other reader is available?
    Divyesh.

    You should use the JCOP (or some other) JavaCard simulator. You may also use any PCSC compliant reader.
    Regards,
    Aleksandar

  • Error while looking up bean from Eclipse plugin

    Hi all,
       I am developing an Eclipse plugin which calls session bean deployed in some j2ee engine. But I am facing a problem while I try to look up the bean. It gives me an error saying <i>"com.sap.engine.services.jndi.persistent.UnsatisfiedReferenceImpl"</i>.
    I tried print out the UnsatisfiedReferenceImpl stacktrace and it says
    <i>java.lang.ClassNotFoundException: com.sap.engine.services.ejb.session.stateless_sp5.SerializedHomeProxy</i>.
    Does anyone have any idea?
    Regards,
    Satyajit.
    Message was edited by:
            Satyajit Chakraborty

    I have solved the problem. The problem was with an extra classpath entry.
    Regards,
    Satyajit.

  • Oracle Eclipse Plugin 1.3.0.200909171310 - Unable to start a 10.3.1.0 Serv

    Title says it all.... Lost 3 days finding what was the problem.
    The version of Oracle Eclipse Plugin 1.3.0.200909171310
    is completelly unable to a version 10.3.1.0 Server.
    The server starts correctly on the command line.
    In Eclipse the server instance and runtime are created correctly, but when you
    try to start it from eclipse bang!
    Unable to validate WebLogic domain.Please make sure the running WebLogic instance is an Administration Server
    java.lang.Exception:
    at oracle.eclipse.tools.weblogic.server.internal.WlsJ2EEDeploymentHelper.validateRemote(WlsJ2EEDeploymentHelper.java:1670)
    at oracle.eclipse.tools.weblogic.server.internal.WeblogicServerBehaviour.validateRemote(WeblogicServerBehaviour.java:2647)
    at oracle.eclipse.tools.weblogic.server.internal.ServerWatcher.runOnce(ServerWatcher.java:574)
    at oracle.eclipse.tools.weblogic.server.internal.ServerWatcher.run(ServerWatcher.java:482)
    at java.lang.Thread.run(Thread.java:619)

    Well, the server is not running, i just try to start it.
    The message pops instantly, like in 0.5 seconds, it looks like nothing is even performed.
    - what does the <name> element look like in domain/config.xml ? Does it match the server definition?
    <name>dintiruni</name>
    <server>
    <name>intiruni0</name>
    <ssl>
    <name>intiruni0</name>
    <enabled>true</enabled>
    <listen-port>443</listen-port>
    </ssl>
    <listen-port>80</listen-port>
    <listen-address/>
    </server>
    <admin-server-name>intiruni0</admin-server-name>
    yep : C:\owls11gR1\domains\dintiruni\servers\intiruni0
    - what is your version of JDK running Eclipse?
    Sun JDK 1.6.0_17, downloaded manually.
    Same JDK i use during install to run WebLogic 10.3.2.0, I had to do that, since 10.3.2.0 JDK 1.6.0_14
    is not a recongnized JDK when you use -vm parameter in eclipse.ini (10.3.1.0 was working)
    - Try create a new domain, make sure set it as development mode.
    I think i reinstalled WebLogic more than 3 times, recreated the domain with all possible options.
    Reinstalled Eclipse (J2EE with Reporting 3.5.1) with only Oracle Plugin. Recreated my workspace
    3-4 times.
    Additional info:
    I have this message as parent item of the stacktrace in the eclipse Log tree: Another server is detected.
    I had a server version 10.3.1.0, wich i just renamed the installation directory to C:\owls11gR1_10.3.1.0 and installed the 10.3.2.0 in the same directory C:\owls11gR1
    I uninstalled everything, went in regedit, deleted all weblogic keys references.
    Always the same problem. Im starting to loose patience... i have rarelly seen something like that.
    Edit:
    I also tryed with a Server version 10.3.2.0. (I abandonned 10.3.1.0 since i cannot even create the instance in eclipse)
    Edited by: Rouche on Jan 7, 2010 11:42 AM

  • Is there a Bug in Oracle Eclipse Plugin for OSB11gR1PS2

    i have been using the Eclipse plugin for Oracle Service bus, and while desiginng the WSDL in ther design view i faced the following problem
    If you create a skeleton and then add operations, they are not mapped to WSDL:binding
    also if one changes the type of operation, ( from default input output in skeleton) the corrosponding changes are not reflected in WSDl....
    did any1 else face the same problem while designing WSDL??
    Edited by: tarang on Jun 7, 2011 4:23 PM

    Cross post in OEPE forum as well -
    Enterprise Pack for Eclipse
    Regards,
    Anuj

  • Crystal Reports for Eclipse plugin and CR XI server

    I have a software requirement in which I need to support both internal (CR Eclipse plugin using the report viewer, not sure what the real name of this is) along with external (CR XI server) reporting.  In other words, I should be able to display a report (.rpt) that exists on my local app server along with one that exists on the CR XI server.  My question is this:
    So I have both sets of jar libraries (eclipse plugin and XI server) and I see that some of the them are overlapping (some of the jars have the same name).  For the ones that overlap, should I choose the ecilipse plugin or XI server ones...?
    One example I found is that the eclipse plugin rasapp.jar contains the POJOResultSetHelper class whereas the rasapp.jar from the XI server does not.  In this case, I presume I should use the eclipse version, right?
    Thanks for your help!
    Louis

    Hello Louis,
    -If you are using latest version of CR Eclipse plugin using the report viewer,then I would recommend going for JAR files of this eclipse plugin than that of CR XI Server.
    -The only reason being Eclipse plugin will give you most updated JAR files.
    -Before using JAR files from Eclipse plugin, I would suggest you to update your present JAR files to latest available JAR files.
    This can be done through Eclipse using update option.
    And once you update them, you can use those JARs.
    Thanks,
    Chinmay

  • Error when starting weblogic from forthnet eclipse plugin?

    Hi,
    I'm getting an error when trying to start my weblogic server from the forthnet eclipse plugin. (However, it works to start the server from a command prompt on the machine it is running on, and also, it works to stop the server from eclipse)
    Server and eclipse is running on Windows.
    The error reported is:
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Warning> <EmbeddedLDAP> <BEA-171520> <Could not obtain an exclusive lock for directory: .\decisionsite81\ldap\ldapfiles. Waiting for 10 seconds and then retrying in case existing WebLogic Server is still shutting down.>
    <2004-sep-01 kl 16:13 CEST> <Error> <EmbeddedLDAP> <BEA-171519> <Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.>
    <2004-sep-01 kl 16:13 CEST> <Critical> <WebLogicServer> <BEA-000364> <Server failed during initialization. Exception:weblogic.server.ServiceFailureException: Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.
    weblogic.server.ServiceFailureException: Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.
         at weblogic.ldap.EmbeddedLDAP.ensureExclusiveAccess(EmbeddedLDAP.java:959)
         at weblogic.ldap.EmbeddedLDAP.initialize(EmbeddedLDAP.java:221)
         at weblogic.t3.srvr.T3Srvr.initializeHere(T3Srvr.java:814)
         at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:664)
         at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:342)
         at weblogic.Server.main(Server.java:32)
    >
    <2004-sep-01 kl 16:13 CEST> <Emergency> <WebLogicServer> <BEA-000342> <Unable to initialize the server: weblogic.server.ServiceFailureException: Could not obtain an exclusive lock to the embedded LDAP data files directory: .\decisionsite81\ldap\ldapfiles because another WebLogic Server is already using this directory. Ensure that the first WebLogic Server is completely shutdown and restart the server.>
    I've tried removing the "EmbeddedLDAP.lok" file, but without luck.

    Which version of your eclipse? I am using eclipse 3.0 and I am able to start weblogic 8.1 from eclipse.
    I did the following steps:
    1.create a new domain through weblogic's configuration wizard --> basic weblogic server domain --> Express --> proive the user name and password --> development mode, and sun sdk (or other jdk) --> your new domain name
    2. configure weblogic setting in eclipse: preferences --> weblogic --> 8.1, C:\bea\weblogic81, your newly created domain name --> C:\bea\user_projects\domains (domain directory) --> myserver --> admin (or your user name) --> password --> localhost --> 7001
    after that, you should be able to click on "start weblogic server" button from toolbar.
    Hope my two cents solve your problem.

  • How to start weblogic in debug mode from BEA WebLogic Eclipse plugin

    I have a problem making weblogic work with eclipse3.1. I am using a BEA WebLogic plugin to handle weblogic (start/stop) from eclipse. However I want to debug my application and I am unable to figure out a way to start my weblogic in debug mode like we do in WSAD. I tried using some other plugins also but no luck. Please suggest me a plugin to handle this or any other way of debugging my application from eclipse. I am using weblogic 8.1.

    Hi,
    Dev Environment
    weblogic eclipse plugin 2.0 beta
    weblogic server 8.1
    eclipse 3.1.1
    Created a server that i would like to deploy my EJB so that i can put break points on my EJB in eclipse.
    How do i do it?
    I managed to deploy an ear (containing the ejb) directly to the weblogic installed folder and it deployed the ejb. But the breakpoint set in eclipse is not triggered. Of course in this case as weblogic server is running the .ear file deployed manually in the file system.
    Any help is appreciated.
    Mel

  • "Error running javac.exe compiler" when using ant to compile Eclipse plugin

    Hi
    I encounter an error "Error running C:\jdk1.5.0_06\bin\javac.exe compiler" when building my project using ant1.7.
    My project has 10 eclipse plugins, and each plugin is compiled by invoking following ant target
    <!-- ===================================================================
    Compile specified plugin
         target parameters:
              param.plugin.dir: the plugin directory
              param.plugin.targetJarFile: the name of jar file for the given plugin
              param.plugin.src.dir: the folder name of source codes. Note: it is relative path name
              param.fork: indicate if another process is forked to run javac
    =================================================================== -->
    <target name="compilePlugin">
         <!-- Prepare compile environment -->
         <!-- Delete obsolete build folder -->
         <delete dir="${param.plugin.dir}/${build.dir}" quiet="true"/>
         <!-- Delete obsolete jar file -->
         <delete file="${param.plugin.dir}/${param.plugin.targetJarFile}" quiet="true"/>
         <mkdir dir="${param.plugin.dir}/${build.dir}"/>
         <!-- Compile source codes -->
         <javac      srcdir="${param.plugin.dir}/${param.plugin.src.dir}"
                   destdir="${param.plugin.dir}/${build.dir}"
                   failonerror="${javacFailOnError}"
                   verbose="${javacVerbose}"
                   debug="${javacDebugInfo}"
                   deprecation="${javacDeprecation}"
              optimize="${javacOptimize}"
                   source="${javacSource}"
                   target="${javacTarget}"     
                   fork="${param.fork}" memoryInitialSize="256m" memoryMaximumSize="512m">
              <classpath refid="compile.classpath" />
         </javac>
         <!-- Create plugin jar file -->
         <copy todir="${param.plugin.dir}/${build.dir}" failonerror="true">
              <fileset dir="${param.plugin.dir}/${param.plugin.src.dir}" excludes="**/*.java, **/package.htm*" />
         </copy>
         <jar jarfile="${param.plugin.dir}/${param.plugin.targetJarFile}" basedir="${param.plugin.dir}/${build.dir}"/>
         <delete dir="${param.plugin.dir}/${build.dir}" quiet="true"/>
    </target>
    Since each of first 9 plugins contains less than 500 java source files, we always set "param.fork" to false when invoking this ant target.
    For the 10th plugin, it has about 1000 source files. If we set "param.fork" to false, we will get the error "Error running javac.exe compiler". So we have to set "param.fork" to true when compiling it. This week, this plugin contains about 1250 files and we get the same error again when compiling it. I tried to increase the "memoryMaximumSize" to "768", but still couldn't get through it.
    BTW, There are about 150 jar files in our classpath for compiling plugins. Do many jar files cause this problem?
    Any help is highly appreciated.
    Many thanks
    Oceanman

    I encountered a very similar error and I was able to resolve it by removing the following parameters from the javac task:
    fork="${param.fork}"
    memoryInitialSize="256m"
    memoryMaximumSize="512m"My values were not the same as yours, before I removed them, the values were set to:
    fork="true"
    memoryInitialSize="256m"
    memoryMaximumSize="256m" Not sure why this fixed my problem but it did. I was using Ant 1.7 and Java 1.6_07 hope this helps.

Maybe you are looking for

  • Please help! Officejet Pro L7380 refusing to print

    Hi, My officejet pro had a strange power outage (nothing else, computer etc affected) and since then has been flashing and displaying the message "The following printheads has a problem: magenta/cyan" and refuses to print. I have used the HP diagnost

  • Exported blue ray files currupt

    Premiere Pro CS5.5 Mac For a 98min project: I exported an m2v BluRay settings file from a 1080p ProRes Timeline and then tried a h.264 export and the files that come out are currupt and wont open? Why is the file bloating all of the sudden? Is this a

  • Is there a shortcut for moving playhead precisely in a clip

    Is there a shortcut to move the play head precisely in a clip? For instance 1 second forward from beginning of clip -- or 1 second back from end of clip? I want to insert key frames for fades and zooms. thanks.

  • I have Windows surface RT 8.1 how do i get dream weaver on it

    @

  • Implementing BADI

    Hi, How to implement BADI? I want to Implement Badi for t.code FBL3N . In This i need to update BSEG table. please give me solution Edited by: Santhosh on Jan 22, 2008 4:50 PM