A command APDU following the structure defined in ISO/IEC 7816-4. It consists of a four byte header and a conditional body of variable length. This class does not attempt to verify that the APDU encodes a semantically valid command.
Note that when the expected length of the response APDU is specified in the {@linkplain #CommandAPDU(int,int,int,int,int) constructors}, the actual length (Ne) must be specified, not its encoded form (Le). Similarly, {@linkplain #getNe} returns the actualvalue Ne. In other words, a value of 0 means "no data in the response APDU" rather than "maximum length."
This class supports both the short and extended forms of length encoding for Ne and Nc. However, note that not all terminals and Smart Cards are capable of accepting APDUs that use the extended form.
For the header bytes CLA, INS, P1, and P2 the Java type int
is used to represent the 8 bit unsigned values. In the constructors, only the 8 lowest bits of the int
value specified by the application are significant. The accessor methods always return the byte as an unsigned value between 0 and 255.
Instances of this class are immutable. Where data is passed in or out via byte arrays, defensive cloning is performed.
@see ResponseAPDU
@see CardChannel#transmit CardChannel.transmit
@since 1.6
@author Andreas Sterbenz
@author JSR 268 Expert Group