JCOP Cards and Development

Developing with NXP JCOP cards: product lineup, feature comparison, development tools, and migration between JCOP versions.

| 4 min read

JCOP Cards and Development

JCOP (Java Card Open Platform) is NXP Semiconductors' family of smart card chips that implement the JavaCard and GlobalPlatform specifications on NXP's secure microcontroller hardware. JCOP chips are among the most widely deployed smart card platforms, found in banking cards, transit passes, ePassports, and identity documents worldwide.

Use the Card Identifier to identify a JCOP chip from its ATR.

JCOP Platform Generations

Generation JavaCardJavaCardSoftwareJava applet platform for smart cards.Click to view → Version Key Features
JCOP 2.4.x JavaCard 2.2.2 Legacy, no extended APDUAPDUProtocolCommunication unit between card and reader.Click to view →
JCOP 3.x JavaCard 3.0.1 Classic Extended APDU, AESAESCryptographyNIST symmetric block cipher for smart card encryption.Click to view →, ECCECCCryptographyEfficient public-key cryptography using elliptic curves.Click to view →
JCOP 4 (J3R) JavaCard 3.0.5 Classic AES-256, RSARSACryptographyPublic-key algorithm for smart card signatures and key exchange.Click to view →-4096, extended commands
JCOP 4 (J3H) JavaCard 3.0.5 + HW crypto Dedicated AES/ECC coprocessor, PACEPACEApplicationStrong ePassport authentication protocol.Click to view →
JCOP 4 (J4C) JavaCard 3.1 (beta) Connected Edition subset

The J3R180 is the standard development card (180 KB EEPROMEEPROMHardwareNon-volatile card memory for data.Click to view →). The J3H145 adds a dedicated crypto coprocessor for hardware-accelerated ECDH and RSA operations.

JCOP Tools for Eclipse

NXP provides JCOP Tools as an Eclipse plugin for integrated simulation and on-card debugging. Installation:

  1. Open Eclipse Marketplace: Help → Eclipse Marketplace.
  2. Search for "JCOP Tools" and install the NXP JCOP Development Tools plugin.
  3. Restart Eclipse. A new JCOP perspective appears.
  4. Configure JCOP SDK path: Window → Preferences → JCOP Tools → SDK Location.

Key Eclipse views: - JCOP Simulator — software emulation of JCOP 4 environment. - Script Editor — send raw APDUs to simulator or physical card. - JCOP Debug — step-through JavaCard applet execution on simulator. - File System Viewer — browse the card's GP file hierarchy.

Creating a JCOP Project

File → New → JCOP Project
  ├── Select JCOP version: JCOP4 J3R
  ├── Package AID: D276000001
  └── Applet AID:  D27600000101

src/
  └── com/example/MyApplet.java

A minimal applet skeleton:

package com.example;
import javacard.framework.*;

public class MyApplet extends Applet {
    private byte[] buffer;

    private MyApplet(byte[] bArray, short bOffset, byte bLength) {
        buffer = JCSystem.makeTransientByteArray((short) 32, JCSystem.CLEAR_ON_DESELECT);
        register();
    }

    public static void install(byte[] bArray, short bOffset, byte bLength) {
        new MyApplet(bArray, bOffset, bLength);
    }

    public void process(APDU apdu) throws ISOException {
        if (selectingApplet()) return;
        byte[] buf = apdu.getBuffer();
        switch (buf[ISO7816.OFFSET_INS]) {
            case (byte)0x10:
                handleGetData(apdu);
                break;
            default:
                ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
        }
    }

    private void handleGetData(APDU apdu) {
        byte[] buf = apdu.getBuffer();
        buf[0] = (byte) 0xDE;
        buf[1] = (byte) 0xAD;
        apdu.setOutgoingAndSend((short) 0, (short) 2);
    }
}

JCOP Simulator vs Physical Card

Aspect Simulator Physical JCOP 4 Card
Execution speed Fast (JVM-based) Realistic timing
Timing side-channels Not represented Side-channel testable
EEPROM write limits Unlimited 500K–1M cycles
SCP03 Simulated Full hardware keys
Cost per iteration Zero Card wear
Use case Functional dev, unit testing Integration, security, EMVEMVApplicationGlobal chip payment card standard.Click to view → compliance

Always test cryptographic timing and EEPROM wear patterns on physical hardware before finalising a design.

Key JCOP-Specific APIs

JCOP 4 extends the standard JavaCard API with NXP-proprietary packages:

Package Class Purpose
com.nxp.id.jcopx KeyAgreementX Extended ECDH variants
com.nxp.id.jcopx CipherX ChaCha20, ECDH KDF
javacard.security KeyPair (EC_FP) Standard ECC key generation
javacardx.crypto Cipher AES-GCM, AES-CCM (JCOP 4)

Avoid proprietary APIs where JavaCard standard equivalents exist — they reduce portability to non-JCOP hardware.

Development Cycle

1. Write applet in Eclipse (JCOP project)
2. Test on simulator (debug APDU flow)
3. Build .cap file: ant or Gradle with ant-javacard
4. Load to physical card via GlobalPlatformPro:
      java -jar gp.jar --install MyApplet.cap
5. Run pyscard or pytest test suite
6. Profile EEPROM usage and crypto timing
7. Submit for CC / EMVCo evaluation (if required)

For loading and managing applets on JCOP cards, see the GlobalPlatform Pro Guide. For debugging techniques once the applet is running, see the Smart Card Debugging Guide. For setting up the full toolchain, see the Dev Environment Setup Guide.

Pertanyaan yang Sering Diajukan

Our guides cover a range of experience levels. Getting Started guides introduce smart card fundamentals. Security guides address Common Criteria certification and key management. Programming guides target developers working with APDU commands, JavaCard applets, and GlobalPlatform card management.