jCardSim
Development platform for Java Card Applications
Ivan Kinash, Mikhail Dudarev
Berlin, 2015
Agenda
• Brief history of jCardSim
• Functionality
• Advantages
• Users
Brief history of jCardSim
• First public release in December
2011
• jcardsim.org launched in June
2012
• Presented at JavaOne 2012
(Moscow)
• Oracle Duke’s Choice Award 2013
Winner
Functionality
• Full Support for Java Card 3.0.4 (Classic) API
• Emulation of Java Card Terminal, ability to use
javax.smartcardio (T0/T1 protocols)
• Ability to run applets remotely
• Connectivity with PC/SC virtual reader
• APDU scripting (scripts are compatible with
apdutool from Java Card Development Kit)
Advantages
• Support for most cryptographic algorithms
defined in Java Card Specification
– Message Digests (SHA-1, SHA-224..512)
– Ciphers (DES,AES,RSA)
– Signatures (RSA, ECDSA, DSA, AES_MAC,
DES_MAC, HMAC*)
– KeyAgreements (ECDH*,ECDHC*)
Advantages
• Rich Simulation API
– Load/install applets w/o conversion in to cap
– Ability to run multiple card terminals
simultaneously
– Manage card states (Insert/Remove, Reset)
• Cross-platform
Advantages
• Rapid Java Card application prototyping
• Ease of writing Unit-tests (5 lines of code)
• Integration with NetBeans
• Allows developer to debug interaction
between Java Card applications and JCRE
Simulator API Demo
// 1. Create simulator
CardSimulator simulator = new CardSimulator();
// 2. Install applet
AID appletAID = AIDUtil.create(”a00000006203010c0101");
simulator.installApplet(appletAID, HelloWorldApplet.class);
// 3. Select applet
simulator.selectApplet(appletAID);
// 4. Send APDU
CommandAPDU commandAPDU = new CommandAPDU(0x80, 0x01, 0x00, 0x00);
ResponseAPDU response = simulator.transmitCommand(commandAPDU);
// 5. Check response status word
assertEquals(0x9000, response.getSW()
Furtherworks
• Persistence of VM State
• Profiles
– Hardware (RAM/EEPROM, ..)
– Java Card API Set
– Cryptographic algorithms Set
Users
• JavaCard applications development
- Thales
- Automobile industry (BMW/Audi)
- Yubico
• As software SE implementation
- Simplytapp (https://www.simplytapp.com)
• Universities
THANKS!

jCardSim - development platform for Java Card Applications

  • 1.
    jCardSim Development platform forJava Card Applications Ivan Kinash, Mikhail Dudarev Berlin, 2015
  • 2.
    Agenda • Brief historyof jCardSim • Functionality • Advantages • Users
  • 3.
    Brief history ofjCardSim • First public release in December 2011 • jcardsim.org launched in June 2012 • Presented at JavaOne 2012 (Moscow) • Oracle Duke’s Choice Award 2013 Winner
  • 4.
    Functionality • Full Supportfor Java Card 3.0.4 (Classic) API • Emulation of Java Card Terminal, ability to use javax.smartcardio (T0/T1 protocols) • Ability to run applets remotely • Connectivity with PC/SC virtual reader • APDU scripting (scripts are compatible with apdutool from Java Card Development Kit)
  • 5.
    Advantages • Support formost cryptographic algorithms defined in Java Card Specification – Message Digests (SHA-1, SHA-224..512) – Ciphers (DES,AES,RSA) – Signatures (RSA, ECDSA, DSA, AES_MAC, DES_MAC, HMAC*) – KeyAgreements (ECDH*,ECDHC*)
  • 6.
    Advantages • Rich SimulationAPI – Load/install applets w/o conversion in to cap – Ability to run multiple card terminals simultaneously – Manage card states (Insert/Remove, Reset) • Cross-platform
  • 7.
    Advantages • Rapid JavaCard application prototyping • Ease of writing Unit-tests (5 lines of code) • Integration with NetBeans • Allows developer to debug interaction between Java Card applications and JCRE
  • 8.
    Simulator API Demo //1. Create simulator CardSimulator simulator = new CardSimulator(); // 2. Install applet AID appletAID = AIDUtil.create(”a00000006203010c0101"); simulator.installApplet(appletAID, HelloWorldApplet.class); // 3. Select applet simulator.selectApplet(appletAID); // 4. Send APDU CommandAPDU commandAPDU = new CommandAPDU(0x80, 0x01, 0x00, 0x00); ResponseAPDU response = simulator.transmitCommand(commandAPDU); // 5. Check response status word assertEquals(0x9000, response.getSW()
  • 9.
    Furtherworks • Persistence ofVM State • Profiles – Hardware (RAM/EEPROM, ..) – Java Card API Set – Cryptographic algorithms Set
  • 10.
    Users • JavaCard applicationsdevelopment - Thales - Automobile industry (BMW/Audi) - Yubico • As software SE implementation - Simplytapp (https://www.simplytapp.com) • Universities
  • 11.

Editor's Notes

  • #8 Позволяет разработчику отлаживать взаимодействие между JavaCard приложениями и JCRE, в отличии от всех имеющихся на рынке решений как JCDK(cref) так и нативные вендор-специфик реализации
  • #10 Позволяет разработчику отлаживать взаимодействие между JavaCard приложениями и JCRE, в отличии от всех имеющихся на рынке решений как JCDK(cref) так и нативные вендор-специфик реализации
  • #11 Позволяет разработчику отлаживать взаимодействие между JavaCard приложениями и JCRE, в отличии от всех имеющихся на рынке решений как JCDK(cref) так и нативные вендор-специфик реализации