Spec-Zone.ru › OpenJDK 21

Класс CardChannel

java.lang.Object
javax.smartcardio.CardChannel
public abstract class CardChannel extends Object
Логическое соединение канала с интеллектуальной картой. Используется для обмена APDUs с интеллектуальной картой. Объект CardChannel можно получить, вызвав метод Card.getBasicChannel() или Card.openLogicalChannel().
Since:
1.6
См. также:
  • Card
  • CommandAPDU
  • ResponseAPDU

Краткое описание конструкторов

CardChannel()
Модификатор Конструктор Описание
protected
Создаёт новый объект CardChannel.

Краткое описание методов

Модификатор и тип Метод Описание
abstract void close()
Закрывает этот CardChannel.
abstract Card getCard()
Возвращает Card, с которым связан этот канал.
abstract int getChannelNumber()
Возвращает номер канала этого CardChannel.
abstract int transmit(ByteBuffer command, ByteBuffer response)
Пересылает команду APDU, хранящуюся в буфере команд ByteBuffer, и получает ответ APDU в буфере ответа response ByteBuffer.
abstract ResponseAPDU transmit(CommandAPDU command)
Пересылает указанную команду APDU на смарт-карту и возвращает ответ APDU.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

CardChannel

protected CardChannel()
Создаёт новый объект CardChannel.

Этот конструктор вызывается только подклассами. Приложение должно вызывать методы Card.getBasicChannel() и Card.openLogicalChannel(), чтобы получить объект CardChannel.

Подробное описание методов

getCard

public abstract Card getCard()
Возвращает Card, с которым связан этот канал.
Возвращает:
Card, с которым связан этот канал

getChannelNumber

public abstract int getChannelNumber()
Возвращает номер канала этого CardChannel. Номер канала 0 указывает на базовый логический канал.
Возвращает:
номер канала этого CardChannel.
Исключение:
IllegalStateException - если этот канал был закрыт или если соответствующая карта была отсоединена.

transmit

public abstract ResponseAPDU transmit(CommandAPDU command) throws CardException
Пересылает указанную команду APDU на смарт-карту и возвращает ответ APDU.

Байт CLA команды APDU автоматически корректируется в соответствии с номером канала этого CardChannel.

Обратите внимание, что этот метод нельзя использовать для передачи MANAGE CHANNEL APDUs. Логические каналы должны управляться с помощью методов Card.openLogicalChannel() и CardChannel.close().

Реализации должны прозрачно обрабатывать артефакты протокола передачи. Например, при использовании протокола T=0 должно происходить следующее, как описано в ISO/IEC 7816-4:

  • если ответ APDU имеет SW1 61, реализация должна выполнить команду GET RESPONSE с использованием SW2 в качестве поля Le. Этот процесс повторяется до тех пор, пока не будет получен SW1 61. Тело ответа этих обменов конкатенируется, чтобы сформировать конечное тело ответа.

  • если ответ APDU 6C XX, реализация должна повторно выполнить команду с использованием XX в качестве поля Le.

ResponseAPDU, возвращаемый этим методом, является результатом после выполнения этой обработки.

Параметры:
command - команда APDU
Возвращает:
ответ APDU, полученный от карты
Исключение:
IllegalStateException - если этот канал был закрыт или если соответствующая карта была отсоединена.
IllegalArgumentException - если APDU содержит команду MANAGE CHANNEL
NullPointerException - если команда равна null
CardException - если операция с картой завершилась неудачно

transmit

public abstract int transmit(ByteBuffer command, ByteBuffer response) throws CardException
Пересылает команду APDU, хранящуюся в буфере команд ByteBuffer, и получает ответ APDU в буфере ответа response ByteBuffer.

Буфер команд должен содержать данные команды 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 - если этот канал был закрыт или если соответствующая карта была отсоединена.
NullPointerException - если команда или ответ равны null
ReadOnlyBufferException - если буфер ответа только для чтения
IllegalArgumentException - если команда и ответ являются одним и тем же объектом, если response может не иметь достаточного места для получения ответа APDU или если APDU содержит команду MANAGE CHANNEL
CardException - если операция с картой завершилась неудачно

close

public abstract void close() throws CardException
Закрывает этот CardChannel. Логический канал закрывается путём выдачи команды MANAGE CHANNEL с форматом [xx 70 80 0n], где n - номер канала этого канала, а xx - байт CLA, кодирующий этот логический канал и имеющий все остальные биты, установленные в 0. После возврата этого метода вызов других методов в этом классе вызовет IllegalStateException.

Обратите внимание, что базовый логический канал нельзя закрыть с помощью этого метода. Его можно закрыть, вызвав Card.disconnect(boolean).

Исключение:
CardException - если операция с картой завершилась неудачно
IllegalStateException - если этот CardChannel представляет соединение с базовым логическим каналом

© 1993, 2023, 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/21/docs/api/java.smartcardio/javax/smartcardio/CardChannel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API