Spec-Zone.ru › OpenJDK 27

Класс CardChannel

java.lang.Object
javax.smartcardio.CardChannel
public abstract class CardChannel extends Object
Логическое подключение канала к смарт-карте. Оно используется для обмена APDU со смарт-картой. Объект 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, сохраненный в ByteBuffer команды, и получает ответный APDU в ByteBuffer ответа.
abstract ResponseAPDU transmit(CommandAPDU command)
Передает указанный командный APDU смарт-карте и возвращает ответный APDU.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в одной из будущих версий.
Финализация устарела и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения указанного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения указанного промежутка реального времени.

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

CardChannel

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

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

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

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.

Обратите внимание, что этот метод нельзя использовать для передачи APDU MANAGE CHANNEL. Управлять логическими каналами следует с помощью методов 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 — если command равен null
CardException — если операция с картой завершилась ошибкой

transmit

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

Буфер команды должен содержать корректные данные командного APDU, начиная с command.position(), а длина APDU должна составлять command.remaining() байт. При возврате позиция буфера команды будет равна его пределу; его предел не изменится. Выходной буфер будет содержать байты ответного APDU. Его позиция увеличится на число полученных байтов, которое также является возвращаемым значением этого метода.

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

Обратите внимание, что этот метод нельзя использовать для передачи APDU MANAGE CHANNEL. Управлять логическими каналами следует с помощью методов 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
Закрывает этот CardChannel. Логический канал закрывается отправкой команды MANAGE CHANNEL, которая должна использовать формат [xx 70 80 0n], где n — номер этого канала, а xx — байт CLA, кодирующий этот логический канал, причем все остальные биты установлены в 0. После возврата этого метода вызов других методов данного класса приведет к возникновению IllegalStateException.

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, в том числе концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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