Класс CardChannel
public abstract class CardChannel extends Object
- Since:
- 1.6
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый объект CardChannel. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
close() |
Закрывает этот CardChannel. |
abstract Card |
getCard() |
Возвращает Card, с которым связан этот канал. |
abstract int |
getChannelNumber() |
Возвращает номер канала этого CardChannel. |
abstract int |
transmit |
Пересылает команду APDU, хранящуюся в буфере команд ByteBuffer, и получает ответ APDU в буфере ответов. |
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команду -
CardException- если операция на карте завершилась неудачно
transmit
public abstract int transmit(ByteBuffer command, ByteBuffer response) throws CardException
Буфер команд должен содержать данные команды APDU, начиная с command.position(), и APDU должна быть длиной command.remaining() байт. По возвращении позиция буфера команд будет равна его пределу; его предел не изменится. Буфер вывода получит байты ответа APDU. Его позиция будет сдвинута на количество полученных байт, которое также является результатом этого метода.
Байт CLA команды APDU автоматически корректируется для соответствия номеру канала этого CardChannel.
Обратите внимание, что этот метод не может использоваться для передачи MANAGE CHANNEL APDUs. Логические каналы должны управляться с помощью методов Card.openLogicalChannel() и CardChannel.close().
См. transmit() для обсуждения обработки ответов APDU со значениями SW1 61 или 6C.
- Параметры:
-
command- буфер, содержащий команду APDU -
response- буфер, который должен получить ответ APDU с карты - Возвращает:
- длина полученного ответа APDU
- Исключение:
-
IllegalStateException- если этот канал был закрыт или соответствующий Card был отключен. -
NullPointerException- если command или response равны null -
ReadOnlyBufferException- если буфер ответа является только для чтения -
IllegalArgumentException- если command и response — один и тот же объект, если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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.smartcardio/javax/smartcardio/CardChannel.html