public abstract class CardChannel extends Object
Card
, CommandAPDU
, ResponseAPDU
Модификатор | Конструктор и Описание |
---|---|
protected |
CardChannel()
Создает новый объект CardChannel.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract void |
close()
Завершения этот CardChannel.
|
abstract Card |
getCard()
Возвращает Карту, с которой связывается этот канал.
|
abstract int |
getChannelNumber()
Возвращает номер канала этого CardChannel.
|
abstract int |
transmit(ByteBuffer command, ByteBuffer response)
Передает APDU команды, сохраненный в команде ByteBuffer, и получает reponse APDU в ответе ByteBuffer.
|
abstract ResponseAPDU |
transmit(CommandAPDU command)
Передает указанный APDU команды к Смарт-карте и возвращает APDU ответа.
|
protected CardChannel()
Этого конструктора вызывают подклассы только. Приложение должно вызвать Card.getBasicChannel () и Card.openLogicalChannel () методы, чтобы получить объект CardChannel.
public abstract Card getCard()
public abstract int getChannelNumber()
IllegalStateException
- если этот канал был закрыт или если соответствующая Карта была разъединена.public abstract ResponseAPDU transmit(CommandAPDU command) throws CardException
Байт CLA APDU команды автоматически корректируется, чтобы соответствовать номер канала этого CardChannel.
Отметьте, что этот метод не может использоваться, чтобы передать MANAGE CHANNEL
APDU. Логическими каналами нужно управлять, используя Card.openLogicalChannel () и CardChannel.close () методы.
Реализации должны прозрачно обработать артефакты протокола передачи. Например, при использовании протокола T=0, следующая обработка должна произойти как описано в ISO/IEC 7816-4:
если у APDU ответа есть SW1 61
, реализация должна проблема a GET RESPONSE
использование команды SW2
как Le
поле. Этот процесс повторяется пока SW1 61
получается. Тело ответа этих обменов связывается, чтобы сформировать заключительное тело ответа.
если APDU ответа 6C XX
, реализация должна переиздать использование команды XX
как Le
поле.
ResponseAPDU, возвращенный этим методом, является результатом после того, как эта обработка была выполнена.
command
- APDU командыIllegalStateException
- если этот канал был закрыт или если соответствующая Карта была разъединена.IllegalArgumentException
- если APDU кодирует a MANAGE CHANNEL
командаNullPointerException
- если команда является нулемCardException
- если работа карты перестала работатьpublic abstract int transmit(ByteBuffer command, ByteBuffer response) throws CardException
Буфер команд должен содержать допустимые данные APDU команды, запускающиеся в command.position()
и APDU должен быть command.remaining()
байты долго. По возврату позиция буфера команд будет равна своему пределу; его предел не будет изменяться. Буфер вывода получит байты APDU ответа. Его позиция будет совершенствоваться числом полученных байтов, который является также возвращаемым значением этого метода.
Байт CLA APDU команды автоматически корректируется, чтобы соответствовать номер канала этого CardChannel.
Отметьте, что этот метод не может использоваться, чтобы передать MANAGE CHANNEL
APDU. Логическими каналами нужно управлять, используя Card.openLogicalChannel () и CardChannel.close () методы.
См. передачу () для обсуждения обработки APDU ответа со значениями SW1 61
или 6C
.
command
- буфер, содержащий APDU командыresponse
- буфер, который должен получить APDU ответа от картыIllegalStateException
- если этот канал был закрыт или если соответствующая Карта была разъединена.NullPointerException
- если команда или ответ являются нулемReadOnlyBufferException
- если буфер ответа только для чтенияIllegalArgumentException
- если команда и ответ являются тем же самым объектом, если response
возможно, не имеет достаточного пространства, чтобы получить APDU ответа или если APDU кодирует a MANAGE CHANNEL
командаCardException
- если работа карты перестала работатьpublic abstract void close() throws CardException
MANAGE CHANNEL
команда, которая должна использовать формат [xx 70 80 0n]
где n
номер канала этого канала и xx
CLA
байт, который кодирует этот логический канал и имеет весь другой набор битов к 0. После того, как этот метод возвраты, вызывая другие методы в этом class повысит IllegalStateException. Отметьте, что основной логический канал не может быть закрыт, используя этот метод. Это может быть закрыто, вызывая Card.disconnect(boolean)
.
CardException
- если работа карты перестала работатьIllegalStateException
- если этот CardChannel представляет соединение основной логический канал
Авторское право © 2005, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92