Class 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

      All Methods Instance Methods Concrete Methods 
      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 Detail

      • 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 null
        IllegalArgumentException - if apdu.length is less than 2
    • Method Detail

      • 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 to getData().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

        public String toString()
        Returns a string representation of this response APDU.
        Overrides:
        toString in class Object
        Returns:
        a String representation of this response APDU.
      • equals

        public boolean equals​(Object obj)
        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 class Object
        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