3. 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
4. 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)
5. 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*)
6. 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
7. 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
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 of VM State
• Profiles
– Hardware (RAM/EEPROM, ..)
– Java Card API Set
– Cryptographic algorithms Set
10. Users
• JavaCard applications development
- Thales
- Automobile industry (BMW/Audi)
- Yubico
• As software SE implementation
- Simplytapp (https://www.simplytapp.com)
• Universities
Позволяет разработчику отлаживать взаимодействие между JavaCard приложениями и JCRE, в отличии от всех имеющихся на рынке решений как JCDK(cref) так и нативные вендор-специфик реализации
Позволяет разработчику отлаживать взаимодействие между JavaCard приложениями и JCRE, в отличии от всех имеющихся на рынке решений как JCDK(cref) так и нативные вендор-специфик реализации
Позволяет разработчику отлаживать взаимодействие между JavaCard приложениями и JCRE, в отличии от всех имеющихся на рынке решений как JCDK(cref) так и нативные вендор-специфик реализации