AppletPlayground is an educational repository for getting to know JavaCard development by learning from existing open source software.
It includes various open source applets from the internet, bundled into ready to use package. Everything you need to edit, compile and load the applets to real JavaCard-s or test with an emulator.
Time to experiment!
- MuscleApplet - as was found in martinpaljak/MuscleApplet@d005f36209bdd7020bac0d783b228243126fd2f8 (BSD)
- CoolKeyApplet - r105 from http://svn.fedorahosted.org/svn/coolkey/trunk/applet (BSD/LGPL2.1)
- PKIApplet - r65 from http://svn.code.sf.net/p/javacardsign/code/pkiapplet/src (LGPL2.1)
- OpenPGPApplet - Yubico/ykneo-openpgp@25e3f74 (GPL2)
- FluffyPGPApplet* - FluffyKaon/OpenPGP-Card@545da17f82ff4627758674bbcbb0e602e959d9dd (GPL3)
- YkneoOath - Yubico/ykneo-oath (GPL3)
- PassportApplet - http://sourceforge.net/p/jmrtd/code/HEAD/tree/trunk/passportapplet/ (LGPL3)
- BTChip* - LedgerHQ/btchipJC (AGPL3)
- NDEF - slomo/ndef-javacard (DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE :))
- BeID* - r62 (LGPL)
- OpenEMV - r3 from svn://svn.code.sf.net/p/openemv/code/trunk (LGPL2)
- ISOApplet - philipWendland/IsoApplet (GPL3)
- DriversLicense* r175 from svn://svn.code.sf.net/p/isodl/code/ (LGPL2)
- PLAID - DHS Reference Implementation (License)
- readertest - r3223
- javacard-ndef - promovicz/javacard-ndef@e3b271d (GPL)
- GidsApplet vletoux/GidsApplet@f467573 (GPL3)
- SatoChipApplet Toporin/SatoChipApplet@0f34d40 (AGPL3)
Note: applets marked with * have obvious blocking errors (missing casts from int to short for 2.2.X target) removed from source.
The above applets and the overall package comes "AS-IS". I make no claims about the feasibility, usability, security, correctness whatsoever of the whole package or any of the components. Use at your own risk. Everything here is only for educational purposes.
What you need ?
- Preferrably a Unix-like operating system like a recent Linux or OS X with installed JDK 1.7+ (but works also with Windows)
- A working smart card reader* with a driver - preferably a well-behaving CCID one
- A JavaCard card* (v2.2.2 or better)
- Eclipse - get from eclipse.org
* you can work with source code without a card and reader, but for actual testing having one is preferable.
- ant-javacard - for building CAP files (MIT)
- GlobalPlatformPro - for loading the applets to the card (LGPL3)
- JavaCard SDK 2.2.2 and 3.0.3 (Oracle-owns-you-and-your-grandma license)
How to use
- Import this project from Git (or directly into Eclipse) and execute the "toys" ANT target.
- Or use command line and issue
- Use the included GlobalPlatform utility to load any of the generated applets (
.capfiles) to a card
In the pipeline:
- Automatic code hardening with http://sourceforge.net/projects/cesta/ (BSD)
- Automatic card simulation with vJCRE (MIT/GPL)
- Automatic card simulation with jcardsim
- For improvements file an issue. Better yet - a pull request!