GlobalPlatform Pro (GPPro) Guide

Using GlobalPlatform Pro for applet installation, key management, and card content management on JavaCard smart cards.

| 4 min read

GlobalPlatform Pro (GPPro) Guide

GlobalPlatformGlobalPlatformSoftwareCard application management standard.Click to view → 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 AIDAIDProtocolUnique identifier for card applications.Click to view → 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 (AESAESCryptographyNIST symmetric block cipher for smart card encryption.Click to view →-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 APDUAPDUProtocolCommunication unit between card and reader.Click to view →-level troubleshooting, and the JCOP Development Guide for NXP-specific tooling that integrates with GPPro workflows.

Sıkça Sorulan Sorular

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.