These release notes describe the specifications for the Java Card 3 Platform, Version 3.0.4, Classic Edition. The Java Card 3 platform consists of versions 3.0, 3.0.1 and 3.0.4 of the specifications and versions 3.0.1, 3.0.2, 3.0.3 and 3.0.4 of the development kit.
The Java Card platform is available in two editions, Classic and Connected. This Version 3.0.4 release of the specifications is for the Classic Edition; the Connected Edition specifications are not included in this release.
This release of the Classic Edition specifications is based on an evolution of Version 3.0.1 of the Classic Edition specifications, and targets more resource-constrained devices that support applet-based applications. This release introduces the applet programmer productivity features and better alignment with other industry standards. Also included are bug fixes and clarifications against the Java Card Classic Edition specifications, Version 3.0.1, and new security algorithms.
The documents are accessible on any computer system with an unzip
utility, Adobe Acrobat Reader (version 4.0 or later), and a CSS-compliant web browser.
HTML can be viewed with any CSS-compliant browser software, such as:
PDF files can be viewed in your web browser with an appropriate plugin or in AdobeĀ® Acrobat Reader. Most recent browsers include the PDF reader plugin. If your browser does not, you can download the plugin from the browser vendor's web site or the Adobe web site at http://get.adobe.com/reader/.
Download and unzip the specifications bundle. The bundle unzips into the subdirectory jc3_classic_spec\javacard_specifications-3_0_4-RR
, within which you will find the subdirectory classic
Within the classic
subdirectory you will find the specifications:
api_classic
- contains the Java Card API specification for the Classic Edition in JavadocTM tool HTML format. These can be viewed in most browsers but do not render well in Mozilla Firefox 3.0.10.jcre_classic
- contains the Java Card runtime environment specification for the Classic Edition in PDF format (JCREspecCLASSIC-3_0_4-RR.pdf
) and in HTML.jcvm_classic
- contains the Java Card virtual machine specification for the Classic Edition in PDF format (JCVMspecCLASSIC-3_0_4-RR.pdf
) and in HTML.The following sections describe the changes to the Classic Edition specifications for the Java Card platform since the Version 3.01 release.
Application Programming Interface, Version 3.0.4, Classic Edition
This section describes the changes to the Application Programming Interface Specification, Java Card Platform, Version 3.0.4, Classic Edition since the Version 3.0.1 release.
The export files associated with the API packages of the Java Card Platform, Classic Edition, are included in the reference implementation bundle. The export files are subject to change until the final release. The new package version numbers are:
Updates to the API specification, Version 3.0.4, since Version 3.0.1 include:
javacardx.annotations.StringDef
and javacardx.annotations.StringPool
.
The annotations
package is not intended to be loaded on the card. Annotations defined in the package may be used to declare String constants to be preloaded as pre-initialized byte arrays in the applet. The annotation processor tool included in the Java Card 3.0.4 SDK may be used to preprocess the annotations during source file compilations.StringUtil
. This class supports some basic Java SE String
class like utility methods using byte array representations of Strings.reSelectingApplet()
.This method may be used by the applet to determine if it is being deselected and immediately after being selected again on the same logical channel.makeGloabalArray( byte type, short length )
. This method creates a global array with data in CLEAR_ON_RESET
transient space. The array is suitable for use in passing data from one applet to another applet via the Shareable interface mechanism.getAvailableMemory(short[] buffer, short offset, byte memoryType)
. This method returns the available memory of the specified type. It is able to return a value up to 2048 Megabytes.buildKey( byte algorithmicKeyType, byte keyMemoryType, boolean keyEncryption )
. This method allows the applet programmer to specify the key type required by specifying the underlying raw key algorithmic type and memory storage requirements separately. It allows more flexibility in mixing and matching the types of key type choices.LENGTH_EC_FP_521
LENGTH_SHA_224
getInstance(byte messageDigestAlgorithm,byte cipherAlgorithm,byte paddingAlgorithm,boolean externalAccess)
. This method allows the applet programmer to specify the signature algorithm required by specifying the underlying message digest algorithm, the underlying cipher algorithm and the underlying padding algorithm. It allows more flexibility in mixing and matching the types of signature algorithms choices.signPreComputedHash(byte[] hashBuf,short hashOff,short hashLength,byte[] sigBuff, short sigOffset)
. This method suports high performance signing operations. The hash of the message may be computed offcard before employing this method on card to securely sign the pre-computed hash.setInitialDigest(byte[] initialDigestBuf,short initialDigestOffset,short initialDigestLength,byte[] digestedMsgLenBuf, short digestedMsgLenOffset, short digestedMsgLenLength)
. This method suports high performance signing operations. The hash of the partial message may be computed offcard before employing this method on card to securely initialize the Signature operation with that hash value.ALG_DES_MAC4_ISO9797_1_M1_ALG3 and ALG_DES_MAC8_ISO9797_1_M1_ALG3
.getInstance( byte cipherAlgorithm, byte paddingAlgorithm, boolean externalAccess )
. This method allows the applet programmer to specify the cipher algorithm required by specifying the underlying cipher algorithm and the underlying padding algorithm. It allows more flexibility in mixing and matching the types of cipher algorithms choices.Runtime Environment Specification, Version 3.0.4, Classic Edition
This section describes the changes to the Runtime Environment Specification, Java Card Platform, Version 3.0.4, Classic Edition since the Version 3.0.1 release. Change bars indicate changes since the Version 3.0.1 release.
Updates to the Runtime Environment specification, Version 3.0.4, since Version 3.0.1 include:
Virtual Machine Specification, Version 3.0.4, Classic Edition
The changes to the Virtual Machine Specification, Java Card Platform, Version 3.0.4, Classic Edition since the Version 3.0.1 release include:
This section describes the bugs that have been fixed in this release of the Java Card specifications, Classic Edition, Version 3.0.4.
BUG ID | DESCRIPTION |
---|---|
12270739 |
[SC] ? Which SW code JCRE send back in normal return while applet initiated transaction in progress |
12270923 | [SC] How must getAppletShareableInsterfaceObject(AID,) behave when a passed AID reference is null |
12276097 | Missing the description of saying RMI features is an optional one in JCRE3.0.1 spec |
12276737 | AES algorithms in spec allow non-standard block size |
12277324 | [SC]? Mismatched keylength btw RSAPrivateKey.setModulus()/HMACKey.setKey() and KeyBuilder.buildKey() |
12279370 | [SC] Behavior when no candidate applet to be selected for received indirect applet selection cmd? |
12281185 | response status when classic transaction is aborted by CJCRE from install method should be clarified |
12283186 | [SC] ? Return value of javacard.framework.APDU.getInBlockSize() in the cases T=CL and SWP |
12289331 | [RFE] Add some description for ALG_DES_MAC4_ISO9797_1_M2 |
12290930 | [RFE] Incompatible case in rejecting of removing applet instance between JCRE222 spec and GP22 spec |
12296013 | Incorrect version for JCSystem.getVersion() |
12297221 | LENGTH_* and ALG_SHA_224 Constants in MessageDigest |
12299386 | Algorithm identifiers in signature |
12304113 | Add new crypto algorithm - ALG_DES_MAC8_ISO9797_1_M1_ALG3 |
12304746 | APDU.getInBlockSize() APDU.getOutBlockSize() in the cases T=CL |
12305324 | [RFE] Description on sample program part for APDU.receiveBytes in JCAPI is not clear |
12308329 | [SC] ? On which condition JCSystem.isAppletActive() shall return true |
12308403 | [SC] ? Ownership of array objects created in the <clinit> method |
12310287 | SHDLC RSET signal should not reset card |
12310288 | Allow Install() if another applet from the same package is active |
12228509 | [RFE] Provide ECDSA Signature feature without hashing |
The public Java Card technology web site is http://www.oracle.com/java/technologies/java-card-tech.html.
This site has the most up-to-date information on the following:
We greatly appreciate your feedback on these specifications.