モジュール java.smartcardio
パッケージ javax.smartcardio

クラスCommandAPDU

java.lang.Object
javax.smartcardio.CommandAPDU
すべての実装されたインタフェース:
Serializable

public final class CommandAPDU
extends Object
implements Serializable
ISO/IEC 7816-4に規定された構造に従うコマンドAPDUです。 これは、4バイトのヘッダーと、可変長の条件に依存する本体で構成されます。 このクラスは、APDUが意味的に有効なコマンドをエンコードするかどうかは確認しようとしません。

レスポンスAPDUの予想される長さがコンストラクタに指定されているときは、実際の長さ(Ne)は指定する必要がありますが、そのエンコードされた形式(Le)を指定する必要はありません。 同様に、getNe()は実際の値Neを返します。 つまり、値0は「最大長」ではなく「レスポンスAPDU内にデータがない」ことを意味します。

このクラスは、NeおよびNcに対する短形式と拡張形式の両方の長さのエンコードをサポートします。 ただし、すべての端末とスマート・カードが、拡張形式を使用するAPDUの受け入れが可能なわけではありません。

ヘッダー・バイトCLA、INS、P1、およびP2の場合、Javaの型intを使用して8ビット符号なしの値を表します。 コンストラクタでは、アプリケーションで指定されたint値の8つの最下位ビットだけに意味があります。 このアクセス用メソッドは、常に0から255の間の符号なしの値としてバイトを返します。

このクラスのインスタンスは不変です。 データがバイト配列を介して受け渡しされる場所では、保護されたクローニングが行われます。

導入されたバージョン:
1.6
関連項目:
ResponseAPDU, CardChannel.transmit, 直列化された形式
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ 説明
    CommandAPDU​(byte[] apdu)
    APDUの内容全体(ヘッダーと本体)を含むバイト配列からCommandAPDUを構築します。
    CommandAPDU​(byte[] apdu, int apduOffset, int apduLength)
    APDUの内容全体(ヘッダーと本体)を含むバイト配列からCommandAPDUを構築します。
    CommandAPDU​(int cla, int ins, int p1, int p2)
    4つのヘッダー・バイトからCommandAPDUを構築します。
    CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data)
    4つのヘッダー・バイトとコマンド・データからCommandAPDUを構築します。
    CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data, int ne)
    4つのヘッダー・バイト、コマンド・データ、および予想される応答データ長からCommandAPDUを構築します。
    CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength)
    4つのヘッダー・バイトとコマンド・データからCommandAPDUを構築します。
    CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength, int ne)
    4つのヘッダー・バイト、コマンド・データ、および予想される応答データ長からCommandAPDUを構築します。
    CommandAPDU​(int cla, int ins, int p1, int p2, int ne)
    4つのヘッダー・バイトと予想される応答データ長からCommandAPDUを構築します。
    CommandAPDU​(ByteBuffer apdu)
    APDUの内容全体(ヘッダーと本体)を含むByteBufferからCommandAPDUを作成します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    boolean equals​(Object obj)
    指定されたオブジェクトがこのコマンドAPDUと同じかどうかを比較します。
    byte[] getBytes()
    このAPDUのバイトのコピーを返します。
    int getCLA()
    クラス・バイトCLAの値を返します。
    byte[] getData()
    コマンド本体のデータ・バイトのコピーを返します。
    int getINS()
    命令バイトINSの値を返します。
    int getNc()
    コマンド本体(Nc)のデータ・バイト数を返します。このAPDUに本体がない場合は0を返します。
    int getNe()
    レスポンスAPDU (Ne)内の予想される最大データ・バイト数を返します。
    int getP1()
    パラメータ・バイトP1の値を返します。
    int getP2()
    パラメータ・バイトP2の値を返します。
    int hashCode()
    このコマンドAPDUのハッシュ・コード値を返します。
    String toString()
    このコマンドAPDUの文字列表現を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • CommandAPDU

      public CommandAPDU​(byte[] apdu)
      APDUの内容全体(ヘッダーと本体)を含むバイト配列からCommandAPDUを構築します。

      以後の変更から保護するために、apduバイトはコピーされます。

      パラメータ:
      apdu - コマンドAPDU全体
      例外:
      NullPointerException - apduがnullの場合
      IllegalArgumentException - apduに有効なコマンドAPDUが含まれない場合
    • CommandAPDU

      public CommandAPDU​(byte[] apdu, int apduOffset, int apduLength)
      APDUの内容全体(ヘッダーと本体)を含むバイト配列からCommandAPDUを構築します。 APDUは、バイト配列内のインデックスapduOffsetから始まり、長さはapduLengthバイトです。

      以後の変更から保護するために、apduバイトはコピーされます。

      パラメータ:
      apdu - コマンドAPDU全体
      apduOffset - apduデータの開始位置でのバイト配列内のオフセット
      apduLength - APDUの長さ
      例外:
      NullPointerException - apduがnullの場合
      IllegalArgumentException - apduOffsetまたはapduLengthが負の場合、またはapduOffset+apduLengthがapdu.lengthより大きい場合、または指定されたバイトが有効なAPDUではない場合
    • CommandAPDU

      public CommandAPDU​(ByteBuffer apdu)
      APDUの内容全体(ヘッダーと本体)を含むByteBufferからCommandAPDUを作成します。 バッファのpositionはAPDUの開始位置、そのlimitはAPDUの終了位置に設定する必要があります。 終了時に、バッファのpositionはlimitに等しくなりますが、limitは変更されません。

      以後の変更から保護するために、ByteBuffer内のデータはコピーされます。

      パラメータ:
      apdu - APDU全体を含むByteBuffer
      例外:
      NullPointerException - apduがnullの場合
      IllegalArgumentException - apduに有効なコマンドAPDUが含まれない場合
    • CommandAPDU

      public CommandAPDU​(int cla, int ins, int p1, int p2)
      4つのヘッダー・バイトからCommandAPDUを構築します。 これはISO 7816のケース1で、コマンド本体はありません。
      パラメータ:
      cla - クラス・バイトCLA
      ins - 命令バイトINS
      p1 - パラメータ・バイトP1
      p2 - パラメータ・バイトP2
    • CommandAPDU

      public CommandAPDU​(int cla, int ins, int p1, int p2, int ne)
      4つのヘッダー・バイトと予想される応答データ長からCommandAPDUを構築します。 これはISO 7816のケース2で、Neが指定された空のコマンド・データ・フィールドです。 Neが0の場合、APDUはISO 7816ケース1としてエンコードされます。
      パラメータ:
      cla - クラス・バイトCLA
      ins - 命令バイトINS
      p1 - パラメータ・バイトP1
      p2 - パラメータ・バイトP2
      ne - レスポンスAPDU内の予想される最大データ・バイト数
      例外:
      IllegalArgumentException - Neが負または65536より大きい場合
    • CommandAPDU

      public CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data)
      4つのヘッダー・バイトとコマンド・データからCommandAPDUを構築します。 これはISO 7816のケース3で、コマンド・データは存在し、Neは存在しません。 値Ncはdata.lengthとみなされます。 dataがnullかその長さが0の場合、APDUはISO 7816ケース1としてエンコードされます。

      以後の変更から保護するために、データ・バイトはコピーされます。

      パラメータ:
      cla - クラス・バイトCLA
      ins - 命令バイトINS
      p1 - パラメータ・バイトP1
      p2 - パラメータ・バイトP2
      data - コマンド本体のデータ・バイトを含むバイト配列
      例外:
      IllegalArgumentException - data.lengthが65535より大きい場合
    • CommandAPDU

      public CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength)
      4つのヘッダー・バイトとコマンド・データからCommandAPDUを構築します。 これはISO 7816のケース3で、コマンド・データは存在し、Neは存在しません。 値NcはdataLengthとみなされます。 dataLengthが0の場合、APDUはISO 7816ケース1としてエンコードされます。

      以後の変更から保護するために、データ・バイトはコピーされます。

      パラメータ:
      cla - クラス・バイトCLA
      ins - 命令バイトINS
      p1 - パラメータ・バイトP1
      p2 - パラメータ・バイトP2
      data - コマンド本体のデータ・バイトを含むバイト配列
      dataOffset - コマンド本体のデータ・バイトの開始位置にあるバイト配列内のオフセット
      dataLength - コマンド本体のデータ・バイト数
      例外:
      NullPointerException - データがnullであり、かつdataLengthが0でない場合
      IllegalArgumentException - dataOffsetまたはdataLengthが負の場合、またはdataOffset+dataLengthがdata.lengthより大きい場合、またはdataLengthが65535より大きい場合
    • CommandAPDU

      public CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data, int ne)
      4つのヘッダー・バイト、コマンド・データ、および予想される応答データ長からCommandAPDUを構築します。 これはISO 7816のケース4で、コマンド・データとNeが存在します。 値Ncは、dataがnull以外の場合はdata.lengthとみなされ、そうでない場合は0とみなされます。 NeまたはNcがゼロの場合、APDUはISO 7816に従ってケース1、2、または3としてエンコードされます。

      以後の変更から保護するために、データ・バイトはコピーされます。

      パラメータ:
      cla - クラス・バイトCLA
      ins - 命令バイトINS
      p1 - パラメータ・バイトP1
      p2 - パラメータ・バイトP2
      data - コマンド本体のデータ・バイトを含むバイト配列
      ne - レスポンスAPDU内の予想される最大データ・バイト数
      例外:
      IllegalArgumentException - data.lengthが65535より大きい場合、またはNeが負であるか65536より大きい場合
    • CommandAPDU

      public CommandAPDU​(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength, int ne)
      4つのヘッダー・バイト、コマンド・データ、および予想される応答データ長からCommandAPDUを構築します。 これはISO 7816のケース4で、コマンド・データとLeが存在します。 値NcはdataLengthとみなされます。 NeまたはNcがゼロの場合、APDUはISO 7816に従ってケース1、2、または3としてエンコードされます。

      以後の変更から保護するために、データ・バイトはコピーされます。

      パラメータ:
      cla - クラス・バイトCLA
      ins - 命令バイトINS
      p1 - パラメータ・バイトP1
      p2 - パラメータ・バイトP2
      data - コマンド本体のデータ・バイトを含むバイト配列
      dataOffset - コマンド本体のデータ・バイトの開始位置にあるバイト配列内のオフセット
      dataLength - コマンド本体のデータ・バイト数
      ne - レスポンスAPDU内の予想される最大データ・バイト数
      例外:
      NullPointerException - データがnullであり、かつdataLengthが0でない場合
      IllegalArgumentException - dataOffsetまたはdataLengthが負の場合、またはdataOffset+dataLengthがdata.lengthより大きい場合、またはNeが負であるか65536より大きい場合、またはdataLengthが65535より大きい場合
  • メソッドの詳細

    • getCLA

      public int getCLA()
      クラス・バイトCLAの値を返します。
      戻り値:
      クラス・バイトCLAの値。
    • getINS

      public int getINS()
      命令バイトINSの値を返します。
      戻り値:
      命令バイトINSの値。
    • getP1

      public int getP1()
      パラメータ・バイトP1の値を返します。
      戻り値:
      パラメータ・バイトP1の値。
    • getP2

      public int getP2()
      パラメータ・バイトP2の値を返します。
      戻り値:
      パラメータ・バイトP2の値。
    • getNc

      public int getNc()
      コマンド本体(Nc)のデータ・バイト数を返します。このAPDUに本体がない場合は0を返します。 この呼出しは、getData().lengthと同等です。
      戻り値:
      コマンド本体のデータ・バイト数。このAPDUに本体がない場合は0。
    • getData

      public byte[] getData()
      コマンド本体のデータ・バイトのコピーを返します。 このAPDUに本体がない場合、このメソッドは長さがゼロのバイト配列を返します。
      戻り値:
      コマンド本体のデータ・バイトのコピー。このAPDUに本体がない場合は、空のバイト配列。
    • getNe

      public int getNe()
      レスポンスAPDU (Ne)内の予想される最大データ・バイト数を返します。
      戻り値:
      レスポンスAPDU内の予想される最大データ・バイト数。
    • getBytes

      public byte[] getBytes()
      このAPDUのバイトのコピーを返します。
      戻り値:
      このAPDUのバイトのコピー。
    • toString

      public String toString()
      このコマンドAPDUの文字列表現を返します。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このコマンドAPDUの文字列表現。
    • equals

      public boolean equals​(Object obj)
      指定されたオブジェクトがこのコマンドAPDUと同じかどうかを比較します。 指定されたオブジェクトがCommandAPDUでもあり、そのバイトがこのCommandAPDUのバイトと同じ場合は、trueを返します。
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      obj - このコマンドAPDUと等しいかどうかを比較するオブジェクト
      戻り値:
      指定されたオブジェクトがこのコマンドAPDUと等しい場合はtrue
      関連項目:
      Object.hashCode()HashMap
    • hashCode

      public int hashCode()
      このコマンドAPDUのハッシュ・コード値を返します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      このコマンドAPDUのハッシュ・コード値。
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)