モジュール 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
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    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を構築します。
    APDUの内容全体(ヘッダーと本体)を含むByteBufferからCommandAPDUを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    指定されたオブジェクトがこのコマンドAPDUと同じかどうかを比較します。
    byte[]
    このAPDUのバイトのコピーを返します。
    int
    クラス・バイトCLAの値を返します。
    byte[]
    コマンド本体のデータ・バイトのコピーを返します。
    int
    命令バイトINSの値を返します。
    int
    コマンド本体(Nc)のデータ・バイト数を返します。このAPDUに本体がない場合は0を返します。
    int
    レスポンスAPDU (Ne)内の予想される最大データ・バイト数を返します。
    int
    パラメータ・バイトP1の値を返します。
    int
    パラメータ・バイトP2の値を返します。
    int
    このコマンドAPDUのハッシュ・コード値を返します。
    このコマンド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
      関連項目:
    • hashCode

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