Класс 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, сохраненный в ByteBuffer команды, и получает ответный APDU в ByteBuffer ответа. |
abstract ResponseAPDU |
transmit |
Передает указанный командный APDU смарт-карте и возвращает ответный APDU. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в одной из будущих версий. Финализация устарела и будет удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения указанного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения указанного промежутка реального времени. |
Подробное описание конструкторов
CardChannel
protected CardChannel()
Этот конструктор вызывается только подклассами. Для получения объекта CardChannel приложению следует вызывать методы Card.getBasicChannel() и Card.openLogicalChannel().
Подробное описание методов
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.
Обратите внимание, что этот метод нельзя использовать для передачи 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, начиная с 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
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.