Spec-Zone.ru › OpenJDK 17

Класс CardChannel

java.lang.Object
javax.smartcardio.CardChannel
public abstract class CardChannel extends Object
Логическое соединение канала с чипом смарт-карты. Используется для обмена APDUs со смарт-картой. Объект CardChannel может быть получен, вызвав метод Card.getBasicChannel() или Card.openLogicalChannel().
С тех пор:
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, хранящуюся в буфере command 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 - если этот канал был закрыт или соответствующий Card был отключен.

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

transmit

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

Буфер 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
Закрывает этот CardChannel. Логический канал закрывается путём выдачи команды 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

Spec-Zone.ru

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