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:
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.
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 theJava Card Documentation web site.
New Features
MessageDigest object instantiated withMessageDigest.ALG_SHA3_224,MessageDigest.ALG_SHA3_256,MessageDigest.ALG_SHA3_384 orMessageDigest.ALG_SHA3_512 constants enables to process digests as standardized by NIST in FIPS PUB 202.Signature.ALG_HMAC_SHA_384 orSignature.ALG_HMAC_SHA_512 constants, or a combination of constants (SIG_CIPHER_HMAC,ALG_SHA_384, PAD_NULL) or (SIG_CIPHER_HMAC, ALG_SHA_512, PAD_NULL)DerivationFunction object can be instantiated withALG_HKDF_EXPAND_LABEL_TLS13 orALG_KDF_HKDF constants in combination with Signature.ALG_HMAC_SHA_384 andSignature.ALG_HMAC_SHA_512 now available as additional signature algorithms.Bug Fixes
Cipher.doFinal() to throwCryptoException.ILLEGAL_USE for 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.SecureChannel.encryptData() to process data if the input array is a global array or also an array belonging to the caller context.This product is targeted for use on a PC running on the operating systems:
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 withOracle JDK 17 (64 bit version) and OpenJDK 17 (64 bit version). Download the JDK software from:
http://www.oracle.com/technetwork/java/javase/downloads
Install it according to the instructions on the website.
Eclipse IDE: Eclipse IDE is optional and is required only for using Eclipse plug-in. The Java Card Eclipse Plug-in requiresEclipse 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 isv1.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 isv24.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
The Java Card Specifications, Development Kit Simulator, and Development Kit Tools must be downloaded and installed individually.
See theDownloading the Specification Documents topic of theJava Card Platform Specification Release Notes, Version 3.2 for more details on how to download the Java Card Specification bundle.
See theInstallation topic of theJava Card Development Kit User Guide for more details on how to install the Java Card Development Kit Simulator and Java Card Development Kit Tools.
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. |
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 usingwinscard.h:
SCardStatus() may still reportSCARD_PRESENT even 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 runningFor applications usingjavax.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 runningWorkaround
After stopping the Simulator, issue a connection attempt to force a state refresh:
winscard.h: callSCardConnect() and then callSCardDisConnect()if connect was successfuljavax.smartcardio: callCardTerminal.connect(“*”) and then callCard.disconnect(true) if connect was successfulThis probe will detect that the Simulator is stopped and will unblock logic waiting forSCARD_ABSENT.
Recommendation
Always useSCardDisconnect(), when usingwinscard.h, or Card.disconnect(true), when usingjavax.smartcardio, before the Simulator is stopped and include timeouts or cancellation where possible to avoid indefinite blocking.
TheJava 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. |
The Java Card Technology website provides useful information about the Java Card product.
Visit theJava Card Technology website to access the most up-to-date information on the following:
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website athttps://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, visithttps://www.oracle.com/pls/ topic/lookup?ctx=acc&id=info or visithttps://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsif you are hearing impaired.
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website athttp://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