The Header Component contains general information about this CAP file and the package it defines. It is described by the following variable-length structure:
The items in the header_component structure are as follows:
tag
The tag item has the value COMPONENT_Header (1).
size
The size item indicates the number of bytes in the header_component structure, excluding the tag and size items. The value of the size item must be greater than zero.
magic
The magic item supplies the magic number identifying the Java Card CAP file format; it has the value 0xDECAFFED.
minor_version, major_version
The minor_version and major_version items are the minor and major version numbers of this CAP file. Together, a major and a minor version number determine the version of the CAP file format. If a CAP file has the major version number of M and minor version number of m, the version of the CAP file's format is M.m.
A change in the major version number indicates a major incompatibility change, one that requires a fundamentally different Java Card virtual machine. A Java Card virtual machine is not required to support CAP files with different major version numbers. A Java Card virtual machine is required to support CAP files having a given major version number and all valid minor version numbers in the range 0 through some particular minor_version where a valid minor version number is a minor version number that has been defined in a version of the Java Card virtual machine specification.
In this specification, the major version of the CAP file format has the value 2 and the minor version has the value 2. Only Sun Microsystems, Inc. may define the meaning and values of new CAP file format versions.
flags
The flags item is a mask of modifiers that apply to this package. The flags modifiers are shown in the following table.
Flags
Value
ACC_INT
0x01
ACC_EXPORT
0x02
ACC_APPLET
0x04
The ACC_INT flag has the value of one if the Java int type is used in this package. The int type is used if one or more of the following is present:
Otherwise the ACC_INT flag has the value of 0.
The ACC_EXPORT flag has the value of one if an Export Component ( Section 6.12, Export Comp**one**nt) is included in this CAP file. Otherwise it has the value of 0.
The ACC_APPLET flag has the value of one if an Applet Component ( Section 6.5, Applet Comp**one**nt) is included in this CAP file. Otherwise it has the value of 0.
All other bits in the flags item not defined in TABLE 6-4 are reserved for future use. Their values must be zero.
package
The package item describes the package defined in this CAP file. It is represented as a package_info structure:
The items in the package_info structure are as follows:
minor_version, major_version
The minor_version and major_version items are the minor and major version numbers of this package. These values uniquely identify the particular implementation of this package and indicate the binary compatibility between packages. See Section 4.5, Package Versions for a description of assigning and using package version numbers.
AID_length
The AID_length item represents the number of bytes in the AID item. Valid values are between 5 and 16, inclusive.
AID[]
The AID item represents the Java Card platform name of the package. See ISO 7816-5 for the definition of an AID ( Section 4.2, **AID**-based Naming).
package_name
The package_name item describes the name of the package defined in this CAP file. It is represented as a package_name_info[] structure:
The items in the package_name_info[] structure are as follows:
name_length
The name_length item is the number of bytes used in the name item to represent the name of this package in UTF-8 format. The value of this item may be zero if and only if the package does not define any remote interfaces or remote classes.
name[]
The name[] item is a variable length representation of the fully qualified name of this package in UTF-8 format. The fully qualified name is represented in internal form as described in Java Virtual Machine Specification (Section 4.2).