Java Smart Card I/O

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)
          ADPU の内容全体 (ヘッダーと本体) を含むバイト配列から CommandAPDU を構築します。
CommandAPDU(byte[] apdu, int apduOffset, int apduLength)
          ADPU の内容全体 (ヘッダーと本体) を含むバイト配列から CommandAPDU を構築します。
CommandAPDU(ByteBuffer apdu)
          ADPU の内容全体 (ヘッダーと本体) を含む ByteBuffer から 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 を構築します。
 
メソッドの概要
 boolean equals(Object obj)
          指定されたオブジェクトがこのコマンド APDU と同じかどうかを比較します。
 byte[] getBytes()
          この APDU のバイトのコピーを返します。
 int getCLA()
          クラスバイト CLA の値を返します。
 byte[] getData()
          コマンド本体のデータバイトのコピーを返します。
 int getINS()
          命令バイト INS の値を返します。
 int getNc()
          コマンド本体 (Nc) のデータバイト数を返します。
 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)
ADPU の内容全体 (ヘッダーと本体) を含むバイト配列から CommandAPDU を構築します。

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

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

CommandAPDU

public CommandAPDU(byte[] apdu,
                   int apduOffset,
                   int apduLength)
ADPU の内容全体 (ヘッダーと本体) を含むバイト配列から 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)
ADPU の内容全体 (ヘッダーと本体) を含む 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 の文字列表現を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
このコマンド APDU の文字列表現

equals

public boolean equals(Object obj)
指定されたオブジェクトがこのコマンド APDU と同じかどうかを比較します。指定されたオブジェクトが CommandAPDU でもあり、そのバイトがこの CommandAPDU のバイトと同じ場合は、true を返します。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - このコマンド APDU と等しいかどうかを比較するオブジェクト
戻り値:
指定されたオブジェクトがこのコマンド APDU と等しい場合は true
関連項目:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
このコマンド APDU のハッシュコード値を返します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
このコマンド APDU のハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

Java Smart Card I/O