Introduction
Java Card technology enables secure elements, such as smart cards and other tamper-resistant security chips to host applications called applets, which employ Java technology.
Java Card technology offers a secure and interoperable execution platform that can store and update multiple applications on a single resource constrained device, while retaining the highest certification levels and compatibility with standards. Java Card developers can build, test, and deploy applications and services rapidly and securely. This accelerated process reduces development costs, increases product differentiation, and enhances value to the customers.
The Java Card Development Kit is a suite of tools for designing implementations of Java Card technology and developing applets based on the Java Card Specifications. It is available as two independent downloads:
- The Java Card Development Kit Tools are used to convert and verify Java Card applications.
- The Java Card Development Kit Simulator offers a testing and debugging reference for Java Card applications. It includes a Java Card simulation environment and Eclipse plug-in.
Together, these two downloads provide a complete, stand-alone development environment in which applications written for the Java Card platform can be developed and tested.
These release notes describe the Java Card Development Kit Simulator, Version 25.1, which is based on version 3.2 of the Java Card Platform Specifications.
What's New
The complete set of Java Card Development Kit Simulator and Eclipse Plugin features is described in the Java Card Development Kit Simulator User Guide v25.1 in the Java Card Documentation web site.
New Features
- Windows PC/SC driver – The Java Card Development Kit Windows PC/SC driver exposes the standard PC/SC interface, enabling client applications to communicate with the Java Card Development Kit Simulator. It includes a command-line tool to install, uninstall, and configure the PCSC driver, replacing and extending Windows Device Manager actions for this device.
- Eclipse Plugin – Eclipse plugin setup has been simplified with a configuration now limited to specifying the paths to the Java Card Development Kit Simulator and Tools, as described in the user guide. Additionally, the customization of the features associated with a simulator entry is now consolidated into a single window, making it easier to manage.
- Simulator - OpenSSL – The Java Card Development Kit Simulator is delivered with the OpenSSL shared library 3.5 updated to the version 3.5.0 for 32-bit machine architecture.
- Simulator - Java Card API – Add the support for SHA-3 algorithm. A
MessageDigestobject instantiated withMessageDigest.ALG_SHA3_224,MessageDigest.ALG_SHA3_256,MessageDigest.ALG_SHA3_384orMessageDigest.ALG_SHA3_512constants enables to process digests as standardized by NIST in FIPS PUB 202. - Simulator - Java Card API – Add the support for HMAC-SHA-384 and HMAC-SHA-512
signature algorithms in addition to HMAC-SHA-1 and HMAC-SHA-256.
- A Signature object can be instantiated with
Signature.ALG_HMAC_SHA_384orSignature.ALG_HMAC_SHA_512constants, or a combination of constants (SIG_CIPHER_HMAC,ALG_SHA_384, PAD_NULL) or (SIG_CIPHER_HMAC,ALG_SHA_512, PAD_NULL) - A
DerivationFunctionobject can be instantiated withALG_HKDF_EXPAND_LABEL_TLS13orALG_KDF_HKDFconstants in combination withSignature.ALG_HMAC_SHA_384andSignature.ALG_HMAC_SHA_512now available as additional signature algorithms.
- A Signature object can be instantiated with
Bug Fixes
- Simulator - JCAPI – Fix
Cipher.doFinal()to throwCryptoException.ILLEGAL_USEfor RSA algorithm in MODE_DECRYPT when the input message length is not supported or the message value is greater than or equal to the modulus. - Simulator - GlobalPlaform – fix
SecureChannel.encryptData()to process data if the input array is a global array or also an array belonging to the caller context. - Eclipse Plugin – Fix the build of an Extended CAP file when a new project is created.
- Eclipse Plugin – Fix to no longer add a leading and trailing backslash to CAP file paths when running the verifier.
- Eclipse Plugin – Fix the Console Load command to handle parameter paths that contain spaces.
System Requirements
This product is targeted for use on a PC running on the operating systems:
- Microsoft Windows for versions 10 or 11
- Linux for Oracle Linux 9 and Ubuntu 24.04 LTS
The following software must be installed for the Java Card Development Kit Simulator to work:
-
Java Development Kit (JDK): This release has been verified and tested with Oracle JDK 17 (64 bit version) and OpenJDK 17 (64 bit version). Download the JDK software from:
http://www.oracle.com/technetwork/java/javase/downloadsInstall it according to the instructions on the website.
- PCSC-Lite: PCSC-Lite for Linux is optional and is required only to communicate with the Java Card Development Kit Simulator on Linux when using the PC/SC interface. This release has been verified and tested with PCSC-Lite 2.3.3, which can be installed following the instructions on the website https://pcsclite.apdu.fr/
-
Eclipse IDE: Eclipse IDE is optional and is required only for using Eclipse plug-in. The Java Card Eclipse Plug-in requires Eclipse 2024-06 (4.32) and JDK 17. Download the Windows Eclipse IDE from the following URL, and install it according to instructions on the website:
-
Visual Studio Code IDE: Visual Studio Code IDE and the Oracle Java is optional and is required only for integrating a Java Card project within this IDE. The version against which the Java Card Development Kit Simulator has been validated is v1.103.2. Download the Visual Studio Code IDE from the following URL, and install it according to instructions on the website:
-
Java Extension for Visual Studio Code: Java Extension for Visual Studio Code is optional and is required only for integrating a Java Card project within this IDE. The version against which the Java Card Development Kit Simulator has been validated is v24.1.0. Install Java Extension for Visual Studio Code from the following URL, and install it according to instructions on the website:
https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java
Installation
The Java Card Specifications, Development Kit Simulator, and Development Kit Tools must be downloaded and installed individually.
-
See the Downloading the Specification Documents topic of the Java Card Platform Specification Release Notes, Version 3.2 for more details on how to download the Java Card Specification bundle.
-
See the Installation topic of the Java Card Development Kit User Guide for more details on how to install the Java Card Development Kit Simulator and Java Card Development Kit Tools.
Contents of the Development Kit Simulator
This release of the Java Card Development Kit Simulator contains Java Card simulation environment and Eclipse plug-in.
The following table describes the files and directories that are installed in the
root installation directory (JC_HOME_SIMULATOR).
| Directory/File | Description |
|---|---|
client |
Contains client components: an application management service API
(AMService.jar file and javadoc documentation),
a communication smartcardio API (socketprovider.jar
file) and a debugger proxy (jc-debug-proxy.jar
file) to manage, communicate, and debug Java Card
applications.
|
drivers |
For Linux, it contains the IFD Handler
(libjcsdkifdh.so) for PCSCLite. For Windows, it
contains the driver and its controller
(jcsdkPCSC.cat, jcdkPCSC.sys,
jcdkPCSCBus.inf,
jcdkPCSCCtrl.exe, jcdkPCSCReader.inf).
It enables an application to communicate with the Java Card
Development Kit Simulator based on PC/SC.
|
runtime |
Contains the Java Card Development Kit Simulator binary executable, as well as the OpenSSL shared library 3.5 (32-bit). |
samples |
Contains sample applets and the corresponding client applications. |
tools |
Contains a tool to configure the Java Card Development Kit
Simulator (Configurator.jar) with a secure channel
protocol key set and a Global PIN.
|
Known Issues
Windows PC/SC driver
Single Reader Only
You can only add one smart card reader.
Simulated Reader State Not Updated When Simulator Stops
Problem
When the simulator is stopped, the PC/SC stack fails to update the simulated reader state to SCARD_ABSENT. As a result, applications relying on card removal detection may not respond as expected.
Impact
For applications using winscard.h:
SCardStatus()may still reportSCARD_PRESENTeven though the Simulator is no longer runningSCardGetStatusChange()can remain blocked despite the Simulator having been stoppedSCardConnect()can connect and return successfully even though the Simulator is no longer running
For applications using javax.smartcardio:
CardTerminal.waitForCardAbsent()may remain blocked despite the Simulator having been stoppedCardTerminal.connect()can connect and return successfully even though the Simulator is no longer running
Workaround
After stopping the Simulator, issue a connection attempt to force a state refresh:
- Using
winscard.h:callSCardConnect()and then callSCardDisConnect()if connect was successful - Using
javax.smartcardio:callCardTerminal.connect(“*”)and then callCard.disconnect(true)if connect was successful
This probe will detect that the Simulator is stopped and will unblock logic waiting
for SCARD_ABSENT.
Recommendation
Always use SCardDisconnect(), when using
winscard.h, or Card.disconnect(true), when using
javax.smartcardio, before the Simulator is stopped and include
timeouts or cancellation where possible to avoid indefinite blocking.
Documentation
The Java Card Documentation web site provides online product documentation for the Java Card Platform.
| Document | Description |
|---|---|
| Java Card Platform Specifications. | The following specification documents are available for the Java Card Platform,
Version 3.2:
|
| Java Card Options List | This document describes the list of options available to implement a Java Card platform, based on the Java Card Specifications. |
| Java Card Development Kit Simulator - User Guide | This document describes how to use the Java Card Development Kit Simulator and Eclipse plugin to develop, test and debug applications for Java Card Platform. It is available in HTML and PDF formats. |
| Java Card Development Kit Tools - User Guide | This document describes how to use the Java Card Development Kit Tools to convert and verify applications for Java Card Platform. It is available in HTML and PDF formats. |
Product Information
The Java Card Technology website provides useful information about the Java Card product.
Visit the Java Card Technology website to access the most up-to-date information on the following:
- Product news and reviews
- Release notes and product documentation
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at https://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc
Access to Oracle Support
Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit https://www.oracle.com/pls/ topic/lookup?ctx=acc&id=info or visit https://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsif you are hearing impaired.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Access to Oracle Support
Oracle customer access to and use of Oracle support services will be pursuant to the terms and conditions specified in their Oracle order for the applicable services.
Java Card Development Kit Simulator Release Notes, Version 25.1
F92101-08