- 導入されたバージョン:
- 1.6
- 関連項目:
- Card,- CommandAPDU,- ResponseAPDU
- 
コンストラクタのサマリーコンストラクタ
- 
メソッドのサマリー修飾子と型メソッド説明abstract voidclose()このCardChannelをクローズします。abstract CardgetCard()このチャネルが関連付けられているカードを返します。abstract intこのCardChannelのチャネル番号を返します。abstract inttransmit(ByteBuffer command, ByteBuffer response)コマンドByteBufferに格納されたコマンドAPDUを送信し、応答ByteBufferにレスポンスAPDUを受信します。abstract ResponseAPDUtransmit(CommandAPDU command)指定されたコマンドAPDUをスマート・カードに送信し、レスポンスAPDUを返します。
- 
コンストラクタの詳細- 
CardChannelprotected CardChannel()新しいCardChannelオブジェクトを構築します。このコンストラクタはサブクラスのみから呼び出されます。 アプリケーションでは、Card.getBasicChannel()およびCard.openLogicalChannel()メソッドを呼び出してCardChannelオブジェクトを取得する必要があります。 
 
- 
- 
メソッドの詳細- 
getCardpublic abstract Card getCard()このチャネルが関連付けられているカードを返します。- 戻り値:
- このチャネルが関連付けられているカード
 
- 
getChannelNumberpublic abstract int getChannelNumber()このCardChannelのチャネル番号を返します。 チャネル番号0は、基本論理チャネルを示します。- 戻り値:
- このCardChannelのチャネル番号
- 例外:
- IllegalStateException- このチャネルがクローズしている場合、または対応するカードが切断されている場合。
 
- 
transmitpublic abstract ResponseAPDU transmit(CommandAPDU command) throws CardException指定されたコマンドAPDUをスマート・カードに送信し、レスポンスAPDUを返します。コマンドAPDUのCLAバイトは、このCardChannelのチャネル番号と一致するよう自動的に調整されます。 このメソッドは、 MANAGE CHANNELAPDUの送信には使用できません。 論理チャネルは、Card.openLogicalChannel()およびCardChannel.close()メソッドを使用して管理する必要があります。実装では、送信プロトコルのアーティファクトが透過的に処理されます。 たとえば、T=0プロトコルを使用すると、ISO/IEC 7816-4に記載されているように、次のような処理が行われます。 - レスポンスAPDUにSW1 - 61がある場合、実装では、- Leフィールドとして- SW2を使用する- GET RESPONSEコマンドが発行される必要があります。 この処理は、SW1- 61が受信されるかぎり繰り返されます。 これらの交換の応答本体は、最終的な応答本体を作成するために連結されます。
- レスポンスAPDUが - 6C XXの場合、実装では、- Leフィールドとして- XXを使用するコマンドが再発行される必要があります。
 このメソッドによって返されるResponseAPDUは、この処理が実行されたあとの結果です。 - パラメータ:
- command- コマンドAPDU
- 戻り値:
- カードから受信したレスポンスAPDU
- 例外:
- IllegalStateException- このチャネルがクローズしている場合、または対応するカードが切断されている場合。
- IllegalArgumentException- APDUが- MANAGE CHANNELコマンドをエンコードする場合
- NullPointerException- コマンドがnullの場合
- CardException- カード操作が失敗した場合
 
- 
transmitpublic abstract int transmit(ByteBuffer command, ByteBuffer response) throws CardExceptionコマンドByteBufferに格納されたコマンドAPDUを送信し、応答ByteBufferにレスポンスAPDUを受信します。コマンド・バッファには command.position()から始まる有効なコマンドAPDUが含まれている必要があり、APDUの長さはcommand.remaining()バイトである必要があります。 復帰時には、コマンド・バッファの位置はその制限と等しくなります。制限は変更されません。 出力バッファは、レスポンスAPDUバイトを受信します。 その位置は受信したバイト数だけ増加します。これは、このメソッドの戻り値でもあります。コマンドAPDUのCLAバイトは、このCardChannelのチャネル番号と一致するよう自動的に調整されます。 このメソッドは、 MANAGE CHANNELAPDUの送信には使用できません。 論理チャネルは、Card.openLogicalChannel()およびCardChannel.close()メソッドを使用して管理する必要があります。SW1値 61または6Cを持つレスポンスAPDUの処理については、transmit()を参照してください。- パラメータ:
- command- コマンドAPDUを含むバッファ
- response- カードからレスポンスAPDUを受信するバッファ
- 戻り値:
- 受信したレスポンスAPDUの長さ
- 例外:
- IllegalStateException- このチャネルがクローズしている場合、または対応するカードが切断されている場合。
- NullPointerException- コマンドまたは応答がnullの場合
- ReadOnlyBufferException- 応答バッファが読取り専用の場合
- IllegalArgumentException- コマンドと応答が同じオブジェクトの場合、- responseにレスポンスAPDUを受信するための十分な容量がない可能性がある場合、またはAPDUが- MANAGE CHANNELコマンドをエンコードする場合
- CardException- カード操作が失敗した場合
 
- 
closepublic abstract void close() throws CardExceptionこのCardChannelをクローズします。 論理チャネルは、[xx 70 80 0n]という形式を使用するMANAGE CHANNELコマンドを発行することによってクローズされます。ここで、nはこのチャネルのチャネル番号であり、xxは、この論理チャネルをエンコードし、他のすべてのビットが0に設定されているCLAバイトです。 このメソッドが復帰した後、このクラス内のその他のメソッドを呼び出すと、IllegalStateExceptionが発生します。このメソッドを使用して基本論理チャネルをクローズすることはできません。 これは、 Card.disconnect(boolean)を呼び出すことでクローズできます。- 例外:
- CardException- カード操作が失敗した場合
- IllegalStateException- このCardChannelが基本論理チャネルの接続を表す場合
 
 
-