java.lang.Object
javax.smartcardio.ResponseAPDU
- All Implemented Interfaces:
Serializable
public final class ResponseAPDU extends Object implements Serializable
A response APDU as defined in ISO/IEC 7816-4. It consists of a conditional
body and a two byte trailer.
This class does not attempt to verify that the APDU encodes a semantically
valid response.
Instances of this class are immutable. Where data is passed in or out via byte arrays, defensive cloning is performed.
- Since:
- 1.6
- See Also:
CommandAPDU
,CardChannel.transmit
, Serialized Form
-
Constructor Summary
Constructors Constructor Description ResponseAPDU(byte[] apdu)
Constructs a ResponseAPDU from a byte array containing the complete APDU contents (conditional body and trailed). -
Method Summary
Modifier and Type Method Description boolean
equals(Object obj)
Compares the specified object with this response APDU for equality.byte[]
getBytes()
Returns a copy of the bytes in this APDU.byte[]
getData()
Returns a copy of the data bytes in the response body.int
getNr()
Returns the number of data bytes in the response body (Nr) or 0 if this APDU has no body.int
getSW()
Returns the value of the status bytes SW1 and SW2 as a single status word SW.int
getSW1()
Returns the value of the status byte SW1 as a value between 0 and 255.int
getSW2()
Returns the value of the status byte SW2 as a value between 0 and 255.int
hashCode()
Returns the hash code value for this response APDU.String
toString()
Returns a string representation of this response APDU.
-
Constructor Details
-
ResponseAPDU
public ResponseAPDU(byte[] apdu)Constructs a ResponseAPDU from a byte array containing the complete APDU contents (conditional body and trailed).Note that the byte array is cloned to protect against subsequent modification.
- Parameters:
apdu
- the complete response APDU- Throws:
NullPointerException
- if apdu is nullIllegalArgumentException
- if apdu.length is less than 2
-
-
Method Details
-
getNr
public int getNr()Returns the number of data bytes in the response body (Nr) or 0 if this APDU has no body. This call is equivalent togetData().length
.- Returns:
- the number of data bytes in the response body or 0 if this APDU has no body.
-
getData
public byte[] getData()Returns a copy of the data bytes in the response body. If this APDU as no body, this method returns a byte array with a length of zero.- Returns:
- a copy of the data bytes in the response body or the empty byte array if this APDU has no body.
-
getSW1
public int getSW1()Returns the value of the status byte SW1 as a value between 0 and 255.- Returns:
- the value of the status byte SW1 as a value between 0 and 255.
-
getSW2
public int getSW2()Returns the value of the status byte SW2 as a value between 0 and 255.- Returns:
- the value of the status byte SW2 as a value between 0 and 255.
-
getSW
public int getSW()Returns the value of the status bytes SW1 and SW2 as a single status word SW. It is defined as(getSW1() << 8) | getSW2()
- Returns:
- the value of the status word SW.
-
getBytes
public byte[] getBytes()Returns a copy of the bytes in this APDU.- Returns:
- a copy of the bytes in this APDU.
-
toString
Returns a string representation of this response APDU. -
equals
Compares the specified object with this response APDU for equality. Returns true if the given object is also a ResponseAPDU and its bytes are identical to the bytes in this ResponseAPDU.- Overrides:
equals
in classObject
- Parameters:
obj
- the object to be compared for equality with this response APDU- Returns:
- true if the specified object is equal to this response APDU
- See Also:
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()Returns the hash code value for this response APDU.- Overrides:
hashCode
in classObject
- Returns:
- the hash code value for this response APDU.
- See Also:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-