Javacard quick start
May 20, 2023
Smartcard
Javacard
Prerequisites
Install jdk11, jdk-11.0.19_macos-aarch64_bin.dmg, GlobalPlatformPro not work with jdk8
Set JAVA_HOME in ~/.zshrc (choose yours)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
Compile and install applet
Get the souce code of test applet and javacard sdk,
# clone demo applet
git@github.com:devrandom/javacard-helloworld.git
# clone javacard sdk
git@github.com:martinpaljak/oracle_javacard_sdks.git
In javacard-helloworld folder, create file gradle.properties, and add its content,
com.fidesmo.gradle.javacard.home=/path/to/oracle_javacard_sdks/jc304_kit/
Build the applet,
./gradlew convertJavacard -i
Operations with Card
Get the release or compiled version of GlobalPlatformPro,
java -jar gp.jar -info
java -jar gp.jar -list
# if the card is using a different key other than 404142434445464748494a4b4c4d4e4f
java -jar gp.jar -list -key-enc AC2AD8C8E2E874A4C6B514D7ECD5FBE5 -key-mac 86E6282CE0463C510FD4CB14D2A158EA -key-dek 7C290D97A5F4891F6C16ED7D2BB0A6E1
# change the key
java -jar gp.jar --lock 404142434445464748494A4B4C4D4E4F -key-enc AC2AD8C8E2E874A4C6B514D7ECD5FBE5 -key-mac 86E6282CE0463C510FD4CB14D2A158EA -key-dek 7C290D97A5F4891F6C16ED7D2BB0A6E1
list response:
D97A5F4891F6C16ED7D2BB0A6E1
ISD: A000000151000000 (OP_READY)
Parent: A000000151000000
From: A0000001515350
Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement, TrustedPath, AuthorizedManagement, TokenVerification, GlobalDelete, GlobalLock, GlobalReg
istry, FinalApplication, ReceiptGeneration
PKG: A0000001515350 (LOADED)
Parent: A000000151000000
Version: 255.255
Applet: A000000151535041
PKG: A00000016443446F634C697465 (LOADED)
Parent: A000000151000000
Version: 1.0
Applet: A00000016443446F634C69746501
PKG: A0000000620204 (LOADED)
Parent: A000000151000000
Version: 1.0
PKG: A0000000620202 (LOADED)
Parent: A000000151000000
Version: 1.3