Класс CardChannel
public abstract class CardChannel extends Object
- С тех пор:
- 1.6
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый объект CardChannel. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
close() |
Закрывает этот CardChannel. |
abstract Card |
getCard() |
Возвращает Card, с которым связан этот канал. |
abstract int |
getChannelNumber() |
Возвращает номер канала этого CardChannel. |
abstract int |
transmit |
Передаёт команду APDU, хранящуюся в буфере command ByteBuffer, и получает ответ APDU в буфере response ByteBuffer. |
abstract ResponseAPDU |
transmit |
Передаёт указанную команду APDU чипу смарт-карты и возвращает ответ APDU. |
Подробное описание конструкторов
CardChannel
protected CardChannel()
Этот конструктор вызывается только подклассами. Приложение должно вызывать методы Card.getBasicChannel() и Card.openLogicalChannel(), чтобы получить объект CardChannel.
Подробное описание методов
getCard
public abstract Card getCard()
- Возвращает:
- Card, с которым связан этот канал
getChannelNumber
public abstract int getChannelNumber()
- Возвращает:
- номер канала этого CardChannel.
- Исключения:
-
IllegalStateException- если этот канал был закрыт или соответствующий Card был отключен.
transmit
public abstract ResponseAPDU transmit(CommandAPDU command) throws CardException
Байт CLA команды APDU автоматически корректируется для соответствия номеру канала этого CardChannel.
Обратите внимание, что этот метод нельзя использовать для передачи MANAGE CHANNEL APDUs. Логические каналы должны управляться с помощью методов Card.openLogicalChannel() и CardChannel.close().
Реализации должны прозрачно обрабатывать артефакты протокола передачи. Например, при использовании протокола T=0, должен выполняться обработчик, как описано в ISO/IEC 7816-4:
если ответ APDU имеет SW1
61, реализация должна выполнить командуGET RESPONSEиспользуяSW2в качестве поляLe. Этот процесс повторяется до тех пор, пока не будет получен SW161. Тело ответа этих обменов конкатенируется, чтобы сформировать окончательное тело ответа.если ответ APDU
6C XX, реализация должна повторить команду используяXXв качестве поляLe.
ResponseAPDU, возвращаемый этим методом, является результатом после выполнения этой обработки.
- Параметры:
-
command- команда APDU - Возвращает:
- ответ APDU, полученный от карты
- Исключения:
-
IllegalStateException- если этот канал был закрыт или соответствующий Card был отключен. -
IllegalArgumentException- если APDU содержит командуMANAGE CHANNEL -
NullPointerException- если команда равна null -
CardException- если операция карты завершилась неудачно
transmit
public abstract int transmit(ByteBuffer command, ByteBuffer response) throws CardException
Буфер command должен содержать данные команды APDU, начиная с command.position(), и APDU должна быть command.remaining() байтами в длину. По завершении, позиция буфера command будет равна его пределу; его предел не изменится. Буфер вывода получит байты ответа APDU. Его позиция будет продвинута на количество полученных байтов, которое также является возвращаемым значением этого метода.
Байт CLA команды APDU автоматически корректируется для соответствия номеру канала этого CardChannel.
Обратите внимание, что этот метод нельзя использовать для передачи MANAGE CHANNEL APDUs. Логические каналы должны управляться с помощью методов Card.openLogicalChannel() и CardChannel.close().
См. transmit() для обсуждения обработки ответов APDUs со значениями SW1 61 или 6C.
- Параметры:
-
command- буфер, содержащий команду APDU -
response- буфер, который должен получить ответ APDU от карты - Возвращает:
- длина полученного ответа APDU
- Исключения:
-
IllegalStateException- если этот канал был закрыт или соответствующий Card был отключен. -
NullPointerException- если команда или ответ равны null -
ReadOnlyBufferException- если буфер ответа только для чтения -
IllegalArgumentException- если команда и ответ являются одним и тем же объектом, еслиresponseможет не иметь достаточного места для получения ответа APDU или если APDU содержит командуMANAGE CHANNEL -
CardException- если операция карты завершилась неудачно
close
public abstract void close() throws CardException
MANAGE CHANNEL, которая должна использовать формат [xx 70 80 0n], где n - номер канала этого канала, а xx - байт CLA, который кодирует этот логический канал и имеет все остальные биты, установленные в 0. После того, как этот метод возвращает, вызов других методов в этом классе вызовет IllegalStateException. Обратите внимание, что базовый логический канал не может быть закрыт с помощью этого метода. Он может быть закрыт путём вызова Card.disconnect(boolean).
- Исключения:
-
CardException- если операция карты завершилась неудачно -
IllegalStateException- если этот CardChannel представляет собой соединение с базовым логическим каналом
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.smartcardio/javax/smartcardio/CardChannel.html