GlobalPlatform Pro (GPPro) Guide
{# Answer-first lead — frontend-gold-standard §1.1. Expects `lead` (plain text, already resolved by apps.content.leads). Rendered directly under the h1 so the self-contained answer is the first prose a reader, a SERP snippet, or an AI extractor meets. No curated-data gate: the view always supplies either curated content_summary or a computed fallback. #}Using GlobalPlatform Pro for applet installation, key management, and card content management on JavaCard smart cards. It covers GlobalPlatform Pro (GPPro) Guide, Installation, Connecting to a Card, Default Test Keys, and Listing Card Content. The guide is part of the เครื่องมือสำหรับนักพัฒนา series and about 4 minutes of reading.
GlobalPlatform Pro (GPPro) Guide
GlobalPlatform Pro (gp.jar, commonly called GPPro) is the de facto open-source
command-line tool for managing GlobalPlatform-compliant
smart cards. Written in Java, it handles Security Domain authentication, applet
installation, key management, and card content audit — tasks that would otherwise
require writing low-level APDU sequences by hand.
GPPro is available at github.com/martinpaljak/GlobalPlatformPro under the LGPL license.
Installation
# Download latest release jar
curl -LO https://github.com/martinpaljak/GlobalPlatformPro/releases/latest/download/gp.jar
# Verify Java 11+
java -version
# List connected readers and cards
java -jar gp.jar --list
Connecting to a Card
GPPro connects via PC/SC. By default it targets the first available reader:
java -jar gp.jar --list # show readers and card ATR
java -jar gp.jar --reader "ACS" # select reader by substring match
java -jar gp.jar --list --debug # APDU trace
Before any card management operation, GPPro must authenticate to the card's Issuer Security Domain (ISD) using the Card Manager keys.
Default Test Keys
Most development cards ship with well-known test keys:
| Key Set | Key Value (hex) |
|---|---|
| Default GP test | 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F (3× 16 bytes) |
| NXP JCOP default | 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F |
| Gemalto default | Varies — check device datasheet |
Never use default keys on production cards. GPPro will warn if default keys are in use.
Listing Card Content
java -jar gp.jar --list
# Output:
# ISD: A000000003000000 (OP_READY)
# PKG: D276000085010100 v1.0 (LOADED)
# APP: D27600008501010001 (SELECTABLE)
The output shows all Security Domains, loaded packages, and installed applets with their AIDs and lifecycle states.
Installing an Applet
java -jar gp.jar --install MyApplet.cap
# GPPro performs:
# 1. INSTALL [for load] — allocate EEPROM for package
# 2. LOAD — split .cap into LOAD blocks, transmit each
# 3. INSTALL [for install] — instantiate the applet
With explicit AID control:
java -jar gp.jar \
--install MyApplet.cap \
--package D276000001 \
--applet D27600000101 \
--create D27600000101 \
--params 01020304 # install parameters (hex)
Applet Lifecycle Management
| Command | Action | GPPro Flag |
|---|---|---|
| Make selectable | Transition to SELECTABLE | Default after install |
| Lock applet | Prevent selection | --lock <AID> |
| Unlock applet | Re-enable selection | --unlock <AID> |
| Delete applet | Remove instance | --delete <AID> |
| Delete package | Remove loaded package | --delete --package <PKG_AID> |
Delete order matters: delete the applet instance before deleting the package. A package with active instances cannot be deleted.
Key Management with SCP03
For production deployments using SCP03 (AES-based Secure Channel Protocol), GPPro supports key rotation:
# Change Card Manager keys to new AES-128 keys
java -jar gp.jar \
--key-enc 404142434445464748494A4B4C4D4E4F \
--key-mac 404142434445464748494A4B4C4D4E4F \
--key-kek 404142434445464748494A4B4C4D4E4F \
--put-key \
--new-key-enc AABBCCDDEEFF00112233445566778899 \
--new-key-mac AABBCCDDEEFF00112233445566778899 \
--new-key-kek AABBCCDDEEFF00112233445566778899
After key rotation, all subsequent commands must use the new keys. Losing the production keys permanently locks the card — maintain a key escrow in an HSM.
Supplementary Security Domains (SSD)
An SSD provides an isolated key hierarchy for a specific service provider, independent of the Card Manager:
# Create an SSD
java -jar gp.jar --create-sd --sdaid A00000000101 --privileges SecurityDomain
# Install applet under the SSD
java -jar gp.jar --install MyApplet.cap --sd A00000000101
The SSD model is central to GlobalPlatform multi-tenancy — different service providers load their own applets into their own SSDs without access to each other's content.
See the Smart Card Debugging Guide for APDU-level troubleshooting, and the JCOP Development Guide for NXP-specific tooling that integrates with GPPro workflows.
(frontend-gold-standard §1.7): the answer text is in
the initial HTML and stays reachable with JavaScript disabled, so crawlers and
AI extractors read answer-shaped chunks without depending on Alpine. #}
Frequently Asked Questions
How do you list the applets installed on a card with GPPro?
Running `java -jar gp.jar --list` prints the connected readers, the card ATR, and the card content inventory: the Issuer Security Domain with its lifecycle state, every loaded package with its AID and version, and every installed applet instance. Adding `--debug` produces a full APDU trace of the exchange.
Which keys does GPPro use to authenticate to a card?
Every management operation authenticates to the Issuer Security Domain using the Card Manager keys. Development cards commonly ship with the well-known GlobalPlatform test key set, and NXP JCOP development cards use the same default value; Gemalto defaults vary by device and are listed in the datasheet. GPPro warns when a card is still using default keys.
Can GPPro target a specific reader?
Yes. GPPro connects through PC/SC and uses the first available reader by default; passing `--reader` with a substring of the reader name selects a particular device, which is necessary whenever more than one reader is attached to the host.
Who are the smart card guides written for?
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.
Frequently Asked Questions
How do you list the applets installed on a card with GPPro?
Running `java -jar gp.jar --list` prints the connected readers, the card ATR, and the card content inventory: the Issuer Security Domain with its lifecycle state, every loaded package with its AID and version, and every installed applet instance. Adding `--debug` produces a full APDU trace of the exchange.
Which keys does GPPro use to authenticate to a card?
Every management operation authenticates to the Issuer Security Domain using the Card Manager keys. Development cards commonly ship with the well-known GlobalPlatform test key set, and NXP JCOP development cards use the same default value; Gemalto defaults vary by device and are listed in the datasheet. GPPro warns when a card is still using default keys.
Can GPPro target a specific reader?
Yes. GPPro connects through PC/SC and uses the first available reader by default; passing `--reader` with a substring of the reader name selects a particular device, which is necessary whenever more than one reader is attached to the host.
Who are the smart card guides written for?
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.