|
Release Notes
Java CardTM Specifications
Version 2.2.1
October, 2003
|
|
[Skip TOC]
Table of Contents
- Introduction
- Supported Platforms
- Installation Instructions
- Release Contents
- Documentation Roadmap
- Specification Documentation
- Development Kit Documentation
- White Papers
- New Features and Improvements
- Application Programming
Interface, Version 2.2.1, Changes
- Runtime Environment
Specification, Version 2.2.1, Changes
- Virtual Machine
Specification, Version 2.2.1, Change
- Where to Find Product Information and News
- How to Send Feedback and Questions
Introduction
This document contains the Release Notes for the Java CardTMspecifications,
version 2.2.1. The specifications include:
- Application Programming Interface for the Java CardTM
Platform, version 2.2.1
This API defines a set of classes upon which Java Card technology-based
applets may be constructed.
- Runtime Environment Specification for the Java CardTM
Platform, version 2.2.1
This specification describes the runtime environment required for interoperable
Java Card technology-based applet execution.
- Virtual Machine Specification for the Java CardTM Platform,
version 2.2.1
This specification defines the required behavior of a virtual machine for
a Java Card technology-enabled device.
These specifications describe the platform standards of Java Card technology,
version 2.2.1, and provide the foundation for designing implementations of
Java Card technology-enabled devices and tools.
For more information on the specifications, see the Documentation Roadmap.
[Top]
Supported Platforms
Any computer system with an unzip utility, Adobe Acrobat Reader
(version 4.0 or later), and a CSS-compliant web browser.
[Top]
Installation Instructions
Download and unzip the specification bundle. The specifications are unzipped
into a jc_specifications/specs
directory (jc_specifications\specs
on the Microsoft Windows 2000 platform). The specifications are placed in
these subdirectories under specs
:
api
- contains the Java Card API in PDF format (JavaCard221API.pdf
)
and an html
subdirectory that contains the API in HTML format.
jcre
- contains the Runtime Environment specification
in PDF format (JCRESpec.pdf
) and an html
subdirectory
that contains the specification in HTML format.
jcre
- contains the Virtual Machine specification in
PDF format (JcvmSpec.pdf
) and an html
subdirectory
that contains the specification in HTML format.
[Top]
Release Contents
Each specification is available in HTML and in Adobe Acrobat PDF file format.
For a description of each specification and links to the HTML and PDF files,
see Specification Documentation.
[Top]
Documentation Roadmap
Documentation for the Java Card specification, version 2.2.1, can be found
in the Specification download bundle. Documentation for the Development Kit,
version 2.2.1, can be found in the Development Kit download bundle.
HTML can be viewed with any CSS-compliant browser, such as:
- NetscapeTM Communicator, version 5.0 or later
- MozillaTM, version 1.1 or later
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://www.adobe.com/products/acrobat/readstep.html
Documentation files packaged in the product were current when the product
shipped. See the Java Card technology web site for any updates.
Specification Documentation
The following table provides links to the documentation for the Java Card
specifications, version 2.2.1:
Document |
Format |
Description |
|
Application Programming Interface for the Java
CardTMPlatform, version 2.2.1 |
PDF, HTML |
|
Provides the documentation for the Java
Card API. |
Virtual Machine Specification for
the Java CardTM Platform, version 2.2.1 |
PDF, HTML
|
|
Assists developers in creating an implementation,
developing a specification to extend the Java Card technology specifications,
or in creating an extension to the Java Card runtime environment for the
Java Card platform. |
Runtime Environment Specification
for the Java CardTM Platform, version 2.2.1 |
PDF, HTML |
|
Assists Java Card runtime environment
implementors in creating an implementation, developing a specification to
extend the Java Card technology specifications, or in creating an extension
to the runtime environment for the Java Card platform. |
Frequently Asked Questions (FAQ) |
HTML |
|
The publicly available Technology FAQ contains answers
to questions and clarifications regarding the release. The FAQ resides at
the Java Card technology web site: http://java.sun.com/products/javacard/faq.html |
Licensee FAQ |
HTML |
|
The Licensee FAQ is available only for source licensees from the
Java Partner Engineering web site: https://javapartner.sun.com/ |
[Top]
Development Kit Documentation
The following table lists the documentation for the Java Card platform
Development Kit, version 2.2.1:
Document |
Description |
|
Development Kit User's Guide for the
Java CardTM Platform, version 2.2.1 |
Describes the Java Card Reference Implementation,
version 2.2.1 Beta. The User's Guide is available in HTML and PDF formats. |
Application Programming Notes for
the Java CardTM Platform, version 2.2.1 |
Contains tips and guidelines for the
applet developer who is using the Java Card Application Programming Interface,
version 2.2.1, to implement applet management, multiselectable applets, logical
channels and Java Card RMI. It is also for developers who are considering
creating a vendor-specific framework based on version 2.2.1 of Java Card
technology specifications. The Programming Notes manual is available in HTML
and PDF formats. |
API Reference |
Specifies the Java Card APIs, generated with the JavadocTM
tool. The API is available in HTML format.
|
White Papers
The Development Kit documentation references the following white papers.
You can obtain these white papers from the Java Card documentation web
site on http://java.sun.com/products/javacard.
Document |
Description |
|
Off-Card Verifier White Paper |
This white paper describes the off-card verifier for the Java Card
platform. The off-card verifier provides the functionality for verifying
that Java Card applets ("CAP files") and export files conform to
the Java Card specifications and platform interoperability standards.
|
RMI Client Application Programming
Interface |
This white paper describes a sample client-side API
to be used in client applications which access a Java Card RMI server
applet executing on the smart card. This API is presented as an aid
to developers who are writing their own client-side API. |
[Top]
New Features and Improvements
Application Programming
Interface, Version 2.2.1, Changes
This section describes changes in the Application Programming Interface
for the Java Card Platform, version 2.2.1.
Summary of Changes
- Added the AppletEvent interface with the uninstall
method.
- Added the isAppletActive method to the JCSystem class.
- Changes to clarify cases when exceptions must be thrown.
- Changes to clarify parameter encoding for Elliptic Curve.
- Updates to include AES when referencing the initial vector (IV).
- Correction of typographical and spelling errors.
Detailed List of Changes since 2.2
- Package: javacard.framework
- Class: APDU
- Method getCurrentAPDU
- Clarify conditions under which the method throws an exception.
- Method getCurrentAPDUBuffer
- Clarify conditions under which the method throws an exception.
- Method setOutgoingLength
- Clarify the meaning of length parameter=0.
- New Interface: AppletEvent
- This interface contains only 1 method: uninstall. This
applet method is invoked prior to applet deletion.
- Class: JCSystem
- New Method: isAppletActive
This method returns true if the specified applet is active on a
logical channel.
- Class: OwnerPIN
- Method reset
- Clarify behavior when transaction is in progress.
- Method resetAndUnblock
- Clarify behavior when transaction is in progress.
- Package: javacard.framework.service
- Class: BasicService
- Clarify CSF format when outbound length(La) is 256.
- Class: Dispatcher
- Method: process()
Update method description to use correct input phase
parameter constant names.
Add a note clarifying the intended usage of the method.
- Class: CardRemoteObject
- Clarify exception requirement if too many exported objects.
- Class: RMIService
- Clarify SecurityException
requirement if firewall violation on returned object.
- Package: javacard.security
- Class: AES
- Method: getKey
Remove unnecessary verbiage regarding use of the corresponding set method.
- Method: setKey
Remove requirement that a CryptoException.ILLEGAL_VALUE be thrown
if the input key length is invalid. Added ArrayIndexOutOfBoundsException
and NullPointerException.
- Class: DESKey
- Method: getKey
Remove unnecessary verbiage regarding use of the corresponding set method.
- Class: DSAKey
- Methods: getP, getQ, getG
Remove unnecessary verbiage regarding use of the corresponding set methods.
- Class: DSAPrivateKey
- Methods: getX
Remove unnecessary verbiage regarding use of the corresponding set method.
- Class: DSAPublicKey
- Methods: setY
Remove unnecessary verbiage regarding use of the corresponding set method.
- Class: Checksum
- Fields: ALG_ISO3309_CRC16, ALG_ISO3309_CRC32
Add reference to ISO/IEC 13239 specification.
- Class: ECKey
- Method: getField, getA,
getB, getG, getR, getK
Remove unnecessary verbiage regarding use of the corresponding set methods.
- Method: setG
Clarify that the point is encoded as an octet string.
- Clarify conditions under which the set methods throw an exception.
- Class: ECPrivateKey
- Method: getS
Remove unnecessary verbiage regarding use of the corresponding
set method.
- Clarify conditions under which the set methods throw
an exception.
- Class: ECPublicKey
- Method: getModulus, getExponent
Remove unnecessary verbiage regarding use of the corresponding set methods.
- Method: getW
Remove unnecessary verbiage regarding use of the corresponding set method.
- Method: setW
Clarify that the point is encoded as an octet string. - Clarify conditions
under which the set methods throw an exception.
- Class: KeyAgreement
- Method: generateSecret
Method should throw a CryptoException.ILLEGAL_VALUE
if the publicData point is not
on the curve, or otherwise is inconsistent with the PrivateKey.
Method should throw a CryptoException.INVALID_INIT if the KeyAgreement
instance is uninitialized. - Method: init
Method should throw a CryptoException.ILLEGAL_VALUE exception if
privKey is not valid.
- Class: KeyPair
- Method: genKeyPair
Method should throw a CryptoException.ILLEGAL_VALUE if ECKey
parameters are invalid.
- Class: RSAPrivateCrtKey
- Method: getP, getQ, getDP1,
getDQ1, getPQ
Remove unnecessary verbiage regarding use of the corresponding set methods.
- Class: RSAPrivateKey
- Method: getModulus, getExponent
Remove unnecessary verbiage regarding use of the corresponding
set methods.
- Class: Signature
- Field: ALG_AES_MAC_128_NOPAD
Change incorrect reference to 8 byte block size to 16 byte block size.
- Field: ALG_DSA_SHA
Clarify the signature encoding.
- Field: ALG_ECDSA_SHA
Clarify the signature encoding method is ASN.1.
- Field: ALG_RSA_SHA_ISO9796
Clarify that the padding is based on the EMV '96 and EMV 2000
specifications.
Clarify that the verify() method
does not support message recovery semantics.
- Method: sign
Clarify conditions under which a CryptoException.ILLEGAL_USE must
be thrown. - Method: verify
Clarify cases under which false is returned. - Update references
to the initial vector (IV) to also include AES.
- Clarify relationship between the use of an initial vector (IV)
and DES ECB algorithms.
- Updates to algorithms which rely on a digest to note that the
algorithm implementation generates the digest; it is not provided by the
user.
- Package: javacardx.crypto
- Class: Cipher
- Field: ALG_RSA_ISO9796
Clarify that the intended specification is ISO 9796-1.
- Field: ALG_RSA_PKCS1_OAEP
Fix an incorrect reference to IEEE 1363-2000.
- Method: doFinal
Clarify conditions under which a CryptoException.ILLEGAL_USE must
be thrown.
- Method: init(Key, byte, byte[], short, short)
Fix an incomplete sentence.
- Update references to the initial vector (IV) to also include AES.
- Clarify relationship between the use of an initial vector (IV)
and DES ECB algorithms.
Runtime Environment
Specification, Version 2.2.1, Changes
This section describes changes in the Runtime Environment Specification
for the Java Card Platform, version 2.2.1.
Summary of Changes
- Introduced the applet event method uninstall and the associated
Java Card runtime environment requirements.
- Added an alternate SELECT command processing sequence path to support
the Global Platform 2.1.1 definition.
- Clarifications of Installer and Applet Deletion Manager requirements.
- Specification clarifications for Java Card Remote Method Invocation
message data formats.
- Correction of typographical and spelling errors.
Detailed List of Changes since 2.2
- Chapter 3
- Section 3.5
- New section to define the properties of the uninstallmethod
of the AppletEvent interface.
- Chapter 4
- Section 4.5.2
- Change the processing step 5 of the Applet Selection with SELECT
FILE to optionally deselect the applet on multiselection related error.
- Section 4.7
- Clarify the required Java Card runtime environment behavior when
the logical channel bits of the CLA byte are incorrect.
- Chapter 8
- Section 8.3.4.1
- Clarify the Java Card Remote Method Invocation message format
for the void primitive type.
- Section 8.5.2
- Clarify the "out of resources"
error requirement if too many session remote objects.
- Chapter 9
- Section 9.5
- Add the implementation and storage requirements for the KeyPair
and Checksum classes.
- Chapter 11
- Introduction section
- Add the chronological relationship requirements between download
and installation for applet and library packages.
- Section 11.3.4
- Add the Applet Deletion manager requirement and rules to invoke
the uninstall method.
- Section 11.3.4.1
- Clarify the multiselection checking requirements during
applet deletion.
Virtual Machine Specification,
Version 2.2.1, Changes
This section describes changes in the Virtual Machine Specification
for the Java Card Platform, version 2.2.1.
Summary of Changes
- Clarifications of existing terms and item definitions.
- Correction of formatting and spelling errors.
Detailed List of Changes since 2.2
- Chapter 1
- Section 1.2
- Clarify the definition of an applet package and a library
package.
- Chapter 5
- Section 5.7
- Clarify definition of supers[] array for an interface
and class.
- Clarify definition of interfaces[] array for an interface
and class.
- Chapter 6
- Section 6.7.2
- Clarify the definition of the class item when in a CONSTANT_SuperMethodref_info
structure.
- Section 6.8.2.3
- For the public_virtual_method_table[] item, remove the
clause excluding interfaces when a method is declared abstract.
- Chapter 7
- Section 7.5.10
- Replace incorrect reference to the aload_<n> instruction
with astore_<n>.
Where to Find Product Information and News
Visit the product web site at:
http://java.sun.com/products/javacard/
for up-to-date information on:
- Product News and Reviews
- Release Notes and Product Documentation
- Technical Support Contact Information
How to Send Feedback and Questions
To report a new bug or submit a feature request fill out the details
in the easy-to-use form on Sun's web site at:
To get an answer to a question which is neither a bug nor a feature request,
we recommend you first check the Release Notes, then the Frequently Asked
Questions (the Technology FAQ). This is often the fastest way to locate an
answer.
Copyright © 2003
Sun Microsystems, Inc. All rights reserved.