Skip to content

Currated list of open-source Java Card applets and related applications for cryptographic smartcards

License

Notifications You must be signed in to change notification settings

tyll/javacard-curated-list

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

Currated list of JavaCard applications

The goal is to provide currated catalog of all open-source JavaCard applets and applications relevant for JavaCard development. The initial list was compiled by complete search for all GitHub and SourceForge repositories with 'javacard.framework' keyword.

You are encouraged to contribute - please create a pull request.

Format and notation

Project name [status : activity]
Short description, often taken from a project readme.md

  • status: subjective state of project: mature (well developed), aspiring (promising, but not yet mature), playground (initial stages, just playing/learning), needs inspection (not analysed yet)
  • activity: active (at last one commit during the last year), last commit (date of last commit for less active / inactive projects)

Applets (standalone applications)

Electronic passports and citizen ID

  • JMRTD: Machine Readable Travel Documents [mature : last commit 2017]
    Free implementation of the MRTD (Machine Readable Travel Documents) standards as set by ICAO used in the ePassport. Consists of an API for card terminal software and a Java Card applet.
  • EstEID compatible JavaCard applets [mature : last commit 2016]
    Various JavaCard applets compatible to EstEID chip protocol: FakeEstEID, MyEstEID
  • Electronic Driving License [mature project : last commit 2015]
    A reference implementation of the ISO18013 standards. Based on the passport applet code developed by the JMRTD team. The project implements the host API for reading out ISO compliant electronic driving licenses and a Java Card applet that implements the standard on a smart card.

(needs further inspection)

  • JMRTD applet without EAC support [needs inspection : last commit 2014]
    Fork of JMRTD electronic passport applet without EAC support. The target device for this project is G+D SmartCafe Expert 144k Dual.
  • SIC eID card [just started : unknown]
    A privacy-friendly alternative for the Belgian eID card. The project aims to improve security of Belgian ID holders by limiting the current extensive exposure of their profiles. To do so, we build an alternative ID card which limits service providers to strickly necessary ID holder profile information.
  • FedICT Quick-Key Toolset [needs inspection : last commit 2011]
    EidCard project

Authentication and access control

  • YubiKey NEO App: OATH [mature : active]
    This project implement the HOTP/TOTP card functionality used on the YubiKey NEO device that is sold by Yubico. Its primary use is to use the YubiKey NEO to generate OATH HOTP/TOTP one-time-passwords. GPLv3+
  • ISOApplet PKI [mature : active]
    A Java Card PKI Applet aiming to be ISO 7816 compliant. The Applet is capable of saving a PKCS#15 file structure and performing PKI related operations using the private key, such as signing or decrypting. Private keys can be generated directly on the smartcard or imported from the host computer. The import of private keys is disabled in the default security configuration.
  • SSH support applet [mature : inactive]
    Old, but widely copied applet perforimg RSA decrypt on card and used by SSH client
  • CoolKey Applet [mature, inactive : last commit 2010]
    CoolKey Applet with the idea of making it a fresh JavaCard 2.2.2 applet meant to be revival of CardEdge Muscle card applet.
  • MuscleApplet [mature, outdated : last commit 2005]
    Significant, but outdated applet used for OpenSC. Superseeded by PKCS#15 and PIV standards.

(needs further inspection)

  • PKCS#15 applet [needs inspection : last commit 2015]
    Implementation of card according to RSA PKCS#15 specification. (seems like extensive implementation, but fails to convert under ant-javacard so far)
  • PKI applet [needs inspection : last commit 2016]
    (extensive PKI applet, requires JavaCard 3.0.5)
  • Generic Identity Device Specification Applet [needs inspection : active]
    Generic Identity Device Specification (GIDS) smart card is the only PKI smart card whose driver is integrated on each Windows since Windows 7 SP1 and which can be used read and write. No Windows driver installation is required. Based on ISOApplet PKI.
  • PIV CryptonitApplet [needs inspection : active]
    Personal Identity Verification (PIV) applet
  • Ledger U2F Applet [needs inspection : last commit 2016]
    This applet is a Java Card implementation of the FIDO Alliance U2F standard. It uses no proprietary vendor API and is freely available on Ledger Unplugged and for a small fee on other Fidesmo devices through Fidesmo store.
  • U2FToken [needs inspection : last commit 2016]
    An U2F Token implementation based on Ledger U2F Applet which cannot pass the NFC self-conformance test in the phase: "U2F_REGISTER, Short APDU, Change BlockSize", as it doesn't handle the situation which Le(BlockSize) is not 256 bytes.)
  • Yubikey Neo One Time Pad [needs inspection : last commit 2015]
    This project has been submitted to the YubiKing 2015 Hackathon. Yubisec is an implementation of a One Time Pad for secure communication between two Android phones using keys stored and generated on YubiKey Neo tokens.
  • Biometric Authentication [needs inspection : last commit 2016]
    Fuzzy extractor to authenticate with biometric data
  • OneCard [needs inspection : last commit 2015]
    radiius.com Radiius applet, applet seems to be just starting to implement required functionality as per specification
  • OTP client and server applets [needs inspection : last commit 2012]
    This is proof-of-concept implementation of One Time password JavaCard STK applet and authentication server. Load JavaCard applet to SIM card and use STK menu.
  • Trusted Identity Module [needs inspection : last commit 2015]
    A local smartphone module acting as an OpenID Connect Server proxy and delivers trusted tokens to installed native applications. The TIM improves the user experience with single sign on, security and privacy enhancement. The Trusted Identity Module project is a set of four projects: an Android service (tim_service), a JAVA Card Service (TimCardlet), a modified OpenID Connect Server (phpOpTim) and a basic Android TIM-Client app enabling to test the TIM services (HelloTim). The OIDC-TIM server is based on an open source implementation of OpenID Connect in PHP by Nomura Research Institute, Ltd. Seems to be extensive and well documented.

Payments and loyalty

  • OpenEMV [mature : last commit 2016]
    The OpenEMV is a Java Card implementation of the EMV standard. This applet is a very basic EMV applet supporting only SDA and plaintext offline PIN.It does not offer personalisation support - everything is hard-coded. seems like mature project

(needs further inspection)

  • EMV-TOOLS [needs inspection : active]
    Collection of source code for many EMV-related projects: SimpleEMVApplet, java-card-openEMV, card-spy, emvdemoBook, emv-bertlv...
  • Simple Wallet [needs inspection : last commit 2015]
    This is a simple wallet simply maintains a running account balance allowing you to credit, debit, or review the current balance of the wallet. This is simply for pure demonstration on various wearable technologies where a javacard secure element is available.
  • E-Purse [needs inspection : active]
    just started, unifinished (04/2017)
  • AppSecure [needs inspection : last commit 2010]
    AppSecure uses Gemalto's eGate smart card framework to enforce pay as you go services for Win32 applications. This entry made it to the pre-final round of Gemalto's eGate Open Contest in 2004
  • PBOC3Applet [needs inspection : last commit 2014]
    payment applet
  • PayPass applet [needs inspection : last commit 2014]
    Javacard Applet for functioning paypass credential. The javacard code included will answer to any reader that requests MasterCard PayPass contactless cards.
  • PayPass, VisaMSD, MMPP applets [needs inspection : last commit 2014]
    This repository contains multiple card applet/card agent examples for using on simplytapp, GPL to v1.2.1. probably significant project, needs closer look
  • JavaCard Wallet [needs inspection : last commit 2016]
    Client/Server application of an electronic wallet (Pin, Storage, control, payment..)
  • EMVCAP [needs inspection : last commit 2017]
    This tool emulates an EMV-CAP device, to illustrate the article "Banque en ligne : a la decouverte d'EMV-CAP" published in MISC, issue #56.
  • Mobile banking applet via STK [needs inspection : last commit 2016]
    Mobile banking solution using SIM Toolkit
  • Loyalty Card Applet [needs inspection : last commit 2013]
    Loyalty Card System based on a Java Card featuring a smart card and a terminal. This is a system that allows customers to get credits by shopping in the same store repeatedly. Customers can spend credits to buy products in the store.

Key and password managers

(needs further inspection)

  • CryptSetup JavaCard Key Manager [needs inspection : last commit 2016]
    A JavaCard key manager for Cryptsetup. School project, but well documented and extensive
  • KeepassNFC [needs inspection : last commit 2016]
    KeepassNFC is a applet in javacard platform that it can protect the secret key of KeePass database.
  • Smartcard crypto applet [needs inspection : last commit 2016]
    This applet performs secure decryption of secrets via NFC. It was made for KeePassNFC, but could be used for other things.
  • SIM Password Manager [needs inspection : last commit 2013]
    Android password manager app that implements password encryption inside a secure element (SE). Can only run on a device that supports the Open Mobile API (aka SmartCardService). Requires associated Java Card applet to be loaded in the SE (SIM card or embedded SE) in advance.
  • SIM password store [needs inspection : last commit 2014]
    SIM toolkit application allowing storage and retrieval of the logins and passwords by SMS in a secure way. It demonstates how to develop a SIM toolkit application that can securely store and manage information on the SIM and communcate with an external world via SMS.
  • TrueCrypt password storage applet [needs inspection : last commit 2015]
    Using TrueCrypt with a JavaCard. The app stores the user container passwords on a SmartCard and automatically loads the passwords from it to the choosen Containers. The user just remember a four digit PIN to access the SmartCard. Additionally I've implented an password-share methode. The user is able to share passwords with previous stored PublicKeys (RSA 2048 Bit). The private key is generated during the of the card and don't leave this.
  • Password manager [needs inspection : last commit 2016]
    Password manager for javacards. Tested on J3A081 card.
  • JCPasswordManager [needs inspection : last commit 2016]
    JavaCard Password Manager is a java applet used to create and securely store a strong password used with the steganography app created by arunenigma (https://github.com/arunenigma/Steganography-Java-GUI). School project, but well documented.

Digital signing, OpenPGP and mail security

  • Yubico OpenPGP applet [mature : active]
    This project implement the OpenPGP card functionality used on the YubiKey NEO device. This project is based on the Java Card OpenPGP Card project made by Joeri de Ruiter. The OpenPGP Card applet is typically used through GnuPG.

(needs further inspection)

  • SigAnima [needs inspection : last commit 2014]
    SigAnima is an JavaCard ECDSA signing applet. This applet is based on the javacardsign applet from Wojciech Mostowski . The applet supports the following standardized EC domain parameters: secp224r1, BrainpoolP224r1, secp256r1, BrainpoolP256r1, BrainpoolP320r1. (Seems like interesting applet)
  • FluffyPGP applet [needs inspection : last commit 2016]
    The FluffyPGP Applet implements the OpenGPG Card v 2.0.1 specification without using secure channels or Global Platform for portability. GPL3
  • JCOpenPGP [needs inspection : last commit 2016]
    Aim of this project is to create JavaCard applet implementing Functional Specification of the OpenPGP application on ISO Smart Card Operating Systems.
  • Virtual KeyCard applet [needs inspection : last commit 2015]
    This software system allows you to decrypt and sign your e-mails with your smartphone instead of using a contactless smartcard. The smartphone communicates with your PC via NFC (as a contactless smartcard would). bachelor's thesis. Warning: This is just proof-of-concept code and should NOT be used in production environments.

e-Health

(needs further inspection)

  • Electronic health card [needs inspection : last commit 2016]
    eHealth card implementation
  • HealthCard: JavaCard + JML specs [needs inspection : last commit 2014]
    Prototype of a Java Card application for smart cards and its client application. It was developed with the support of JML (Java Modeling Language) used to formally specify the requirements for developing the HealthCard application in Java Card.
  • EGKfeuer [needs inspection : last commit 2016]
    A project to read the German health insurance card (Elektronische Gesundheitskarte (EGK)), transform the read data to FHIR@copy; ressources, and send them to a choosable FHIR Endpoint

NDEF tags

  • JavaCard NDEF Applet [mature : last commit 2015]
    This project contains a JavaCard applet acting as an NFC NDEF Tag. It is intended as a convenience applet, allowing storage of an NDEF record on a smartcard to direct the user to a relevant host-device application, such as a smartphone app related to the card or a web page for which the card serves as an authorization token. Data can be preloaded at install time using standards-compliant methods so that this generic applet can be used in different use cases without modification.

(needs further inspection)

  • JavaCard NDEF application [needs inspection : last commit 2014]
    JavaCard applet for speaking NDEF. Implementation of the NDEF Nfc-Forum specification for JavaCard 2.2.1. The aim is to support sending of urls to smartphones, and provoiding only compile time writeability.
  • Pico NDEF Applet [needs inspection : last commit 2017]

Bitcoin wallets

(needs further inspection)

  • SecureBitcoinWalletJavaCardApplet [needs inspection : last commit 2015]
    This project is the JavaCard applet for the Secure Bitcoin Wallet App.
  • Ledger Bitcoin Hardware Wallet [needs inspection : last commit 2016]
    This applet is an implementation of the Ledger Wallet Hardware Wallet specification emulating an NFC Forum Type 4 tag to display the second factor, with specific extensions.
  • SatoChip Bitcoin applet [needs inspection : last commit 2015]
    SatoChip stands for Secure Anonymous Trustless and Open Chip. It is a javacard applet that can be used as a secure hardware wallet running for example on a Yubikey Neo. The SatoChip has full BIP32 supports but due to technical limitations on current javacards, hardened keys (i.e. child keys using indices 2^31 through 2^32-1) are derived much faster than normal keys.
  • Bitcoin wallet [needs inspection : last commit 2016]
    BitcoinWallet is a Bitcoin Hardware Wallet implementation. It is based on the project Ledger Wallet and can be run on JavaCard platform with JCRE version 3.0.x above.

Emulation of some proprietary cards

(needs further inspection)

  • DESFire applet [needs inspection : last commit 2013]
    reimplementation of DESFire card - master's thesis proof of concept
  • JavaCard DESFire emulation [needs inspection : last commit 2011]
    Emulation of DESFire card
  • MobileEDEPV3 [needs inspection : last commit 2016]
    JC emulation of some Chinese card?
  • TAG 4 emulation [needs inspection : last commit 2013]
    This is an implementation of a TAG 4 for emulation

Unsorted applications

(needs further inspection)

  • SmartMeterIQ [needs inspection : last commit 2013]
    The main concern with Smart Meters is the granularity of the data which enables physical and behavioral analysis of the consumer in terms of the brand and make of devices installed and their house hold activities (like when do they wake up, when they are not at home). We propose using Java Card platform as it is a natural fit and is designed to be tamper-proof and secure. In addition, we explore using advanced cryptography techniques such as Zero Knowledge Proof of Knowledge (using Pedersen Commitments) to enable the Utility Supplier to trust the data it is getting from the central device.
  • STKApplet [needs inspection : last commit 2017]
    SIM Toolkit Applet
  • javacard-petrol-rationing [needs inspection : last commit 2014]
    Applet for security of Petrol rationing, including design documents, Radboud University, Hardware Security course, JavaCard project
  • LiteID-SimApp [just started : last commit 2017]
    A Sim Application client for LiteID, just started, unfinished
  • LicenseCardApp [needs inspection : last commit 2017]
    applet handling license usage counters and relevant stuff (no documentation)
  • Prototype firmware for the Trusted Execution Module (TEM) [needs inspection : last commit 2009]
    Prototype firmware for the Trusted Execution Module (TEM). The firmware is a JavaCard applet, and it can turn any capable JavaCard into a TEM.
  • Secure-Storage-and-Erasure [needs inspection : last commit 2014]
    This is an open source prototype of Secure Storage and Erasure (SSE) System, including both the JavaCard and host programs.
  • Mobile-ID USAT applet [needs inspection : last commit 2017]
    The Remarc Mobile-ID USAT applet this is a JavaCard applet with USIM Application Toolkit menu support. Basic functions of the Remarc Mobile-ID SAT applet: Authentication function; Signing function; Changing PIN1/PIN2; Changing PUK; Unblock PIN1/PIN2; View information - in a USAT menu is present a menu item with information of PIN usage
  • E-Voting applet [needs inspection : last commit 2016]
    EVIV is a highly sound End-to-end Verifiable Internet Voting system, which offers full voter’s mobility and preserves the voter’s privacy from the vote casting PC even if the voter votes from a public PC, such as a PC at a cybercafe ́ or at a public library.
  • UPSC framework [needs inspection : last commit 2017]
    Identity and the security of data transmission is very critical for the success of these e-services. SIM cards might take an important role as a security service provider. They have been used for so many years to preserve the security keys(Ki) and algorithms (A3A8) for authenticating and encrypting the data. Within this project, the international consortium will try to implement a software framework on both the mobile terminal and SIM card that expose the required security functions to popular e-services like Mobile commerce, Financial transactions, Data Encryption, Secure Cloud Storage and Mobile Identity.

Library code (code which is expected to be used as part of other code)

(needs further inspection)

  • Primitives for JavaCard [needs inspection : last commit 2016]
    JBigInteger, JCMath, SHA3, UProve...
  • OpenTLSSec [needs inspection : last commit 2013]
    Open source java card library for TLS secured communication under GPL v3. (Seems like significant project)
  • SRP-6a password-authenticated secure channel [needs inspection : last commit 2015]
    Java Card applet for SRP-6a password-authenticated secure channel to secure elements/smartcards. This Java Card applet is an implementation of the Secure Remote Password (SRP-6a) password-authenticated secure channel protocol by Wu [1]. In combination with an implementation of an off-card application, such as an Android application using our SRP-6A Android Library, you can establish a secure communication channel that is mutually authenticated with a PIN or password.
  • ykneo-curves [needs inspection : last commit 2014]
    This is an applet demonstrating several curves for use in YubiKey NEO.
  • Java Card Synchronization Framework [needs inspection : last commit 2014]
    The main goal of this framework is to synchronize Java Card 2 applets through the exchange of ciphered APDUs. The current state of the framework is lacking in many ways and requires more works to be fully functional. However it can serve as a proof of concept for the synchronization of applet data in a secure fashion in a pure Java Card 2 setting (i.e.: without tweaking the Java Card VM).
  • Secure Element Evaluation Kit for the Android platform [needs inspection : last commit 2015]
    SmartCard API for Android. The SmartCard API adds the necessary modules and API’s to the Android platform. It offers flexible access to secure elements, allowing a secure application solution to make use of any secure form factor, such as a USIM card, a secure µSD card, an embedded secure element.
  • OPACITY auth protocol for JC [needs inspection : last commit 2015]
    This project is designed to authenticate users to the Web service using contactless smart cards. As an authentication protocol was chosen protocol OPACITY. This protocol has been specifically designed for contactless payments and it is officially registered now as an authentication protocol ISO/IEC 24727-6.
  • HMAC and CMAC computation [needs inspection : last commit 2014]
    This Java Card applet support APDUs to test HMAC (SHA-1, SHA-256) and CMAC (AES-128). It uses Java Card 2.2.2.
  • Self-Blindable credentials [needs inspection : last commit 2014]
    Java Card implementation of Self-Blindable credentials
  • TelephonyManager Carrier Privilege granting [needs inspection : last commit 2015]
    Since Android 5.1, applications are able to communicate with UICC using the class TelephonyManager. However, the concerned functions require a special privilege, that is the carrier privilege. This JavaCard applet grants this privilege to the app whose signature is included inside the applet (the variable SHA256_SIGN)
  • AES, OAEP, SHA2-384 and SHA2-512 JC reimplementation, [needs inspection : last commit 2016]
    The Suite of software reimplementations of selected cryptographic algorithms potentially missing on your smartcard with JavaCard platform. Optimized for speed and small memory footprint.
  • Hashchain applet [needs inspection : last commit 2016]
    Implementation of some hash chain
  • ElGamal-based Threshold Scheme for Electronic Elections [needs inspection : last commit 2013]
    TTP SmartCard-Based ElGamal Cryptosystem Using Threshold Scheme for Electronic Elections. EU Project CRISES group has studied the feasibility of developing ElGamal cryptosystem and Shamir’s secret sharing scheme into JavaCards, whose API gives no support for it. (probably significant applet).
  • Audit TTP SmartCard-Based ElGamal Cryptosystem [needs inspection : last commit 2016]
    TTP SmartCard-Based ElGamal Cryptosystem Using Threshold Scheme for Electronic Elections. EU Project.
  • Protocol for Lightweight Authentication of Identity (PLAID) [needs inspection : last commit 2015]
    Protocol for Lightweight Authentication of Identity PLAID, Australian Government
  • Sec2 cloud security project [needs inspection : last commit 2016]
    message-level security must at least be applied to protect those data during and after the storing process. Novel solution for secure data storage in the cloud. It presents a security concept allowing each client to encrypt outgoing data on one’s mobile device and share it among a defined user group while using a seamless service provision. J. Somorovsky, research proof of the concept

Developer tools

Applet build, upload and management

  • Ant-JavaCard [mature : last commit 2017]
    Easy to use Ant task for building JavaCard CAP files in a declarative way.
  • GlobalPlatform tools (GPShell) [mature : last commit 2014]
    The GlobalPlatform card specification provides a standard for the management of the contents on a smart card. Mainly this comprises the installation and the removal of applications.
  • Sun/Oracle JavaCard SDK binaries [mature : last commit 2016]
    Oracle JavaCard SDK-s for using as a Git submodule for ant-javacard projects.

(needs further inspection)

  • Smart-Card-Tool-pyResMan [needs inspection : last commit 2015]
    pyResMan is a free open source smartcard tool for JavaCard and other smart card. It can be used to send APDU(s), execute APDU script(s); It can be used to debug ISO14443 protocol commands and Mifare commands with R502 SPY reader; It can also be used to manage resource of GP card. It is based on pyScard and GlobalPlatform open source projects. last commit 2017
  • JavaCard debugging toolkit [needs inspection : last commit 2015]
    JCDebug is a JavaCard debugging toolkit. A simple command line tools that instruments JavaCard applets to offer debugging and inspection services directly on the target plateform.
    potentially significant project, needs closer look last commit 2016
  • Card2Jar [needs inspection : last commit 2014]
    A converter for converting Java Card CAP files to JAR files. Currently this is just a handy wrapper around the JCDK3.0.4_ClassicEdition SDK distribution's normalizer utility. It is subject to all the same caveats as the normalizer.bat interface (must have export EXP file and must be a Java Card 2.2.2 or lower applet).

Card capabilities testing (algorithms support, performance)

  • JCAlgTest [mature : last commit 2017]
    Automated testing tool for algorithms from JavaCard API supported by particular smart card. Performance testing of almost all available methods. The results for more than 60+ cards available at https://jcalgtest.org.
  • ECTester [aspiring : last commit 2016]
    Tester of Eliptic curves support and behavior (TYPE_EC_FP and TYPE_EC_F2M) on smartcards with JavaCard platform.

(needs further inspection)

  • Performance Benchmark Applet for Javacard/smartcard [needs inspection : last commit 2016]
    Performance testing for various algorithms, similar as JCAlgTest (needs investigation about difference to JCAlgTest)
  • HandlerTest [needs inspection : last commit 2016]
    L. Rousseau PCSCLite reader test : This program send commands to a card through the reader.

Formal verification and code transformation tools

  • VeriFast [mature : last commit 2017]
    VeriFast is a research prototype of a tool for modular formal verification of correctness properties of single-threaded and multithreaded C and Java programs annotated with preconditions and postconditions written in separation logic. Examples on JavaCard applets: EPurse, EidCard. Very active project.
  • Joana IFC analysis framework [mature : last commit 2017]
    Joana is a static analysis tool that can be used for information flow control (IFC) of Java bytecode. IFC allows to verify the INTEGRITY (no attacker can temper with sensitive information) or CONFIDENTIALITY (no attacker can infer secret information from public outputs) of a Java program. System dependence graphs (SDG) form the basic technology for our analyses. Examples also on JavaCard applets. Very active project.
  • CesTa project [aspiring : last commit 2013]
    Security hardening (duplicate variables, constant branches, transaction detection...) for JavaCard applets based on ANTLR automatic code transformations

(needs further inspection)

JavaCard simulators and emulators

  • JCardSim: [mature : last commit 2017]
    Capable JavaCard simulator implemented atop of BouncyCastle. Very good for unit testing, quick prototyping and educational purposes. Allows for multiple simulated cards in parallel.

(needs further inspection)

  • vJCRE [needs inspection : last commit 2016]
    vJCRE is a virtual Java Card Runtime Environment
  • Secure Element Emulator [needs inspection : last commit 2015]
    This project aims at emulating a secure element environment for debugging and rapid-prototyping of secure element applets. It is a fork of the open-source Java Card simulator jCardSim (original source code available here). Within our research we added extensions to emulate an application life-cycle that matches the life-cycle of applications on real smartcard chips.
  • Java Card Simulator via Node.js [needs inspection : last commit 2016]
    This project provides an implementation of a Java Card Runtime Enviornment (JCRE) produced using Node.js which is capable of creating virtual smart card devices and sending APDU commands to the smart card devices for execution via a RESTful API. The project also provides a web-based interface for interacting with the JCRE.
  • PythonCard: [needs inspection : last commit 2012]
    JavaCard API simulated in Python environment. The goal is to provide a classic 3.0.1 version, while maintaining compatiblity with earlier version like 2.1.2.
  • JCardMock [needs inspection : last commit 2012]
    Mock implementation of the Java Card API 3.0.4 in order to test Java Card applet code without a card or simulator. It runs the Java Card API 3.0.4 in a normal Java Virtual Machine. The purpose is to allow for unit tests for Java Card applets with normal test frameworks like JUnit or TestNG in a normal Java Virtual Machine (unfinished)
  • CAPRunner https://bitbucket.org/benallard/caprunner/, [needs inspection : last commit 2015]
    CAPRunner is a javacard bytecode emulator that is able to execute CAP files. It also comes with an handy runcap.py that bind them together and allow you to send some APDUs to a CAP file (without the need for a smartcard). developement on BitBucket
  • FreeJCVM [needs inspection : last commit 2015]
    Free javacard vm implementation for AVR MCU.
  • openjcvm [needs inspection : last commit 2015]
    A open source java card virtual machine implementation. And also some part of the VM code can be used as part of kinds of tools such as javacard bytecode disassembler.

Learning (various school projects, simple hello world applets....)

  • AppletPlayground [mature : last commit 2017]
    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.

(needs further inspection)

  • JavaCard Demo [needs inspection : last commit 2015]
    Examples of various JavaCard functionalities (as separate applets)
  • MultiCard [needs inspection : last commit 2016]
    An school of applied science smartcard project. This project contains offCard and onCard components with various aspects of javacard development.
  • Hotel Buddy [needs inspection : last commit 2015]
    Various JavaCard projects created for a lecture-series. Some PKI.
  • Simple calculator on JavaCard [needs inspection : last commit 2013]
  • Simple AES encrypt/decrypt [needs inspection : last commit 2017]
  • Maze solver on JavaCard [needs inspection : last commit 2015]
    A small experiment on memory about java card using jcopv2.2.1
  • TraninCard applet [needs inspection : last commit 2014]
    SmartCard - Traincard, No Pain No Gain Project at HTWk Leipzig.
  • Client applet for CDAX Crypto [needs inspection : last commit 2014]
    The applet with implementation of basic cryptographic functions offered by JavaCard API
  • CryptedBankCard [needs inspection : last commit 2015]
    The school project with goal to develop a secure banking card.
  • Smartcard-Offline-Lock [needs inspection : last commit 2015]
    Electronic door locks are commonly used at hotels, exhibitions or public facilities. An offline-operational solution for an electronic lock is required. This is a study project, so please don't expect to much comfort (single DES key used).
  • Learning applets repository [needs inspection : last commit 2015]
    This repository will provide you with javacard applet for absolutely beginners\ javacard development tools\ javacard open source applets.

Unsorted

(needs further inspection)

  • Corba [needs inspection : last commit 2015]
    old project, CryptoFlex uploader?
  • unifei-smart-cards [needs inspection : last commit 2014]
    Material developed in UNIFEI-MG research about Smart Cards

Methodology

  • DONE (2017-04-15) Search all GitHub repositories with "javacard.framework.Applet" string
  • DONE (2017-04-15) Analyze applets included in AppletPlayground
  • DONE (2017-04-15) Search all SourceForge repositories with "javacard" string
  • DONE (2017-04-16) Sort applets into categories according to basic topic
  • Inspect other repositories of relevant developers
  • Analyze status and maturity of included projects (subsection 'needs further inspection')

About

Currated list of open-source Java Card applets and related applications for cryptographic smartcards

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages