JCOP Cards and Development
Developing with NXP JCOP cards: product lineup, feature comparison, development tools, and migration between JCOP versions.
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:
- Open Eclipse Marketplace: Help → Eclipse Marketplace.
- Search for "JCOP Tools" and install the NXP JCOP Development Tools plugin.
- Restart Eclipse. A new JCOP perspective appears.
- 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.
الأسئلة الشائعة
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.