モジュール java.smartcardio
パッケージ 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の文字列表現を返します。
    • コンストラクタの詳細

      • 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