Java Smart Card I/O

javax.smartcardio
クラス Card

java.lang.Object
  上位を拡張 javax.smartcardio.Card

public abstract class Card
extends Object

接続が確立されているスマートカードです。Card オブジェクトは、CardTerminal.connect() を呼び出すことで取得されます。

導入されたバージョン:
1.6
関連項目:
CardTerminal

コンストラクタの概要
protected Card()
          新しい Card オブジェクトを構築します。
 
メソッドの概要
abstract  void beginExclusive()
          このカードへの排他的なアクセスを要求します。
abstract  void disconnect(boolean reset)
          このカードとの接続を切断します。
abstract  void endExclusive()
          以前に beginExclusive を使用して設定された排他的なアクセスを解除します。
abstract  ATR getATR()
          このカードの ATR を返します。
abstract  CardChannel getBasicChannel()
          基本論理チャネルの CardChannel を返します。
abstract  String getProtocol()
          このカード用に使用されているプロトコルを返します。
abstract  CardChannel openLogicalChannel()
          カードに新しい論理チャネルをオープンし、それを返します。
abstract  byte[] transmitControlCommand(int controlCode, byte[] command)
          制御コマンドを端末装置に送信します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Card

protected Card()
新しい Card オブジェクトを構築します。

このコンストラクタはサブクラスのみから呼び出されます。アプリケーションでは、CardTerminal.connect() メソッドを呼び出して Card オブジェクトを取得する必要があります。

メソッドの詳細

getATR

public abstract ATR getATR()
このカードの ATR を返します。

戻り値:
このカードの ATR

getProtocol

public abstract String getProtocol()
このカード用に使用されているプロトコルを返します。

戻り値:
このカード用に使用されているプロトコル。たとえば、「T=0」または「T=1」

getBasicChannel

public abstract CardChannel getBasicChannel()
基本論理チャネルの CardChannel を返します。基本論理チャネルは、チャネル番号が 0 です。

例外:
SecurityException - SecurityManager が存在し、呼び出し側に必要な アクセス権 がない場合
IllegalStateException - このカードオブジェクトが disconnect() メソッドによって破棄されている場合

openLogicalChannel

public abstract CardChannel openLogicalChannel()
                                        throws CardException
カードに新しい論理チャネルをオープンし、それを返します。チャネルは、[00 70 00 00 01] という形式を使用する MANAGE CHANNEL コマンドを発行することによってオープンします。

例外:
SecurityException - SecurityManager が存在し、呼び出し側に必要な アクセス権 がない場合
CardException - 新しい論理チャネルをオープンできなかった場合
IllegalStateException - このカードオブジェクトが disconnect() メソッドによって破棄されている場合

beginExclusive

public abstract void beginExclusive()
                             throws CardException
このカードへの排他的なアクセスを要求します。

スレッドが beginExclusive を呼び出したあと、endExclusive を呼び出すまで、このスレッドのみがこのカードと通信できるようになります。通信を試みるその他のスレッドは、CardException を受信します。

アプリケーションでは、排他的なアクセスが正しく解除されるようにする必要があります。これは、 try ... finally ブロックで beginExclusive() および endExclusive 呼び出しを実行することで達成できます。

例外:
SecurityException - SecurityManager が存在し、呼び出し側に必要な アクセス権 がない場合
CardException - 排他的なアクセスがすでに設定されている場合、または排他的なアクセスを設定できなかった場合
IllegalStateException - このカードオブジェクトが disconnect() メソッドによって破棄されている場合

endExclusive

public abstract void endExclusive()
                           throws CardException
以前に beginExclusive を使用して設定された排他的なアクセスを解除します。

例外:
SecurityException - SecurityManager が存在し、呼び出し側に必要な アクセス権 がない場合
IllegalStateException - アクティブなスレッドに現在このカードへの排他的なアクセスがない場合、またはこのカードオブジェクトが disconnect() メソッドによって破棄されている場合
CardException - 処理が失敗した場合

transmitControlCommand

public abstract byte[] transmitControlCommand(int controlCode,
                                              byte[] command)
                                       throws CardException
制御コマンドを端末装置に送信します。

これは、たとえば、組み込みの PIN パッドやバイオメトリクスなどの端末機能の制御に使用できます。

パラメータ:
controlCode - コマンドの制御コード
command - コマンドデータ
例外:
SecurityException - SecurityManager が存在し、呼び出し側に必要な アクセス権 がない場合
NullPointerException - コマンドが null の場合
CardException - カード操作が失敗した場合
IllegalStateException - このカードオブジェクトが disconnect() メソッドによって破棄されている場合

disconnect

public abstract void disconnect(boolean reset)
                         throws CardException
このカードとの接続を切断します。このメソッドが復帰したあと、このオブジェクトで、またはこのオブジェクトに関連付けられ、カードとのやり取りが必要な CardChannel でメソッドを呼び出すと、IllegalStateException が発生します。

パラメータ:
reset - 切断後にカードをリセットするかどうか
例外:
CardException - カード操作が失敗した場合
SecurityException - SecurityManager が存在し、呼び出し側に必要な アクセス権 がない場合

Java Smart Card I/O