Spec-Zone.ru › OpenJDK 27

Класс CommandAPDU

java.lang.Object
javax.smartcardio.CommandAPDU
Все реализуемые интерфейсы:
Serializable
public final class CommandAPDU extends Object implements Serializable
Командный APDU, соответствующий структуре, определённой в ISO/IEC 7816-4. Он состоит из четырёх байтов заголовка и условного тела переменной длины. Этот класс не пытается проверить, кодирует ли APDU семантически допустимую команду.

Обратите внимание: если ожидаемая длина ответного APDU указывается в конструкторах, необходимо указывать фактическую длину (Ne), а не её закодированную форму (Le). Аналогично, getNe() возвращает фактическое значение Ne. Иными словами, значение 0 означает «нет данных в ответном APDU», а не «максимальная длина».

Этот класс поддерживает короткую и расширенную формы кодирования длины для Ne и Nc. Однако обратите внимание: не все терминалы и смарт-карты способны принимать APDU, использующие расширенную форму.

Для байтов заголовка CLA, INS, P1 и P2 используется тип Java int для представления 8-битных беззнаковых значений. В конструкторах значимы только 8 младших бит значения int, указанного приложением. Методы доступа всегда возвращают байт как беззнаковое значение от 0 до 255.

Экземпляры этого класса неизменяемы. При передаче данных в виде массивов байтов или получении данных в виде массивов байтов создаются защитные копии.

Начиная с:
1.6
См. также:
  • ResponseAPDU
  • CardChannel.transmit
  • Сериализованная форма

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

Конструктор Описание
CommandAPDU(byte[] apdu)
Создаёт CommandAPDU из массива байтов, содержащего полное содержимое APDU (заголовок и тело).
CommandAPDU(byte[] apdu, int apduOffset, int apduLength)
Создаёт CommandAPDU из массива байтов, содержащего полное содержимое APDU (заголовок и тело).
CommandAPDU(int cla, int ins, int p1, int p2)
Создаёт CommandAPDU из четырёх байтов заголовка.
CommandAPDU(int cla, int ins, int p1, int p2, byte[] data)
Создаёт CommandAPDU из четырёх байтов заголовка и данных команды.
CommandAPDU(int cla, int ins, int p1, int p2, byte[] data, int ne)
Создаёт CommandAPDU из четырёх байтов заголовка, данных команды и ожидаемой длины данных ответа.
CommandAPDU(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength)
Создаёт CommandAPDU из четырёх байтов заголовка и данных команды.
CommandAPDU(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength, int ne)
Создаёт CommandAPDU из четырёх байтов заголовка, данных команды и ожидаемой длины данных ответа.
CommandAPDU(int cla, int ins, int p1, int p2, int ne)
Создаёт CommandAPDU из четырёх байтов заголовка и ожидаемой длины данных ответа.
CommandAPDU(ByteBuffer apdu)
Создаёт CommandAPDU из ByteBuffer, содержащего полное содержимое APDU (заголовок и тело).

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

Модификатор и тип Метод Описание
boolean equals(Object obj)
Сравнивает указанный объект с этим командным APDU на равенство.
byte[] getBytes()
Возвращает копию байтов этого APDU.
int getCLA()
Возвращает значение байта класса CLA.
byte[] getData()
Возвращает копию байтов данных в теле команды.
int getINS()
Возвращает значение байта инструкции INS.
int getNc()
Возвращает количество байтов данных в теле команды (Nc) или 0, если это APDU не содержит тела.
int getNe()
Возвращает максимальное количество ожидаемых байтов данных в ответном APDU (Ne).
int getP1()
Возвращает значение байта параметра P1.
int getP2()
Возвращает значение байта параметра P2.
int hashCode()
Возвращает хеш-код этого командного APDU.
String toString()
Возвращает строковое представление этого командного APDU.

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

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

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

CommandAPDU

public CommandAPDU(byte[] apdu)
Создаёт CommandAPDU из массива байтов, содержащего полное содержимое APDU (заголовок и тело).

Обратите внимание: байты APDU копируются для защиты от последующего изменения.

Параметры:
apdu — полный командный APDU
Выбрасывает:
NullPointerException — если apdu равно null
IllegalArgumentException — если apdu не содержит допустимый командный APDU

CommandAPDU

public CommandAPDU(byte[] apdu, int apduOffset, int apduLength)
Создаёт CommandAPDU из массива байтов, содержащего полное содержимое APDU (заголовок и тело). APDU начинается с индекса apduOffset в массиве байтов и имеет длину apduLength байт.

Обратите внимание: байты APDU копируются для защиты от последующего изменения.

Параметры:
apdu — полный командный APDU
apduOffset — смещение в массиве байтов, с которого начинаются данные apdu
apduLength — длина APDU
Выбрасывает:
NullPointerException — если apdu равно null
IllegalArgumentException — если apduOffset или apduLength отрицательны, если apduOffset + apduLength больше apdu.length или если указанные байты не образуют допустимый APDU

CommandAPDU

public CommandAPDU(ByteBuffer apdu)
Создаёт CommandAPDU из ByteBuffer, содержащего полное содержимое APDU (заголовок и тело). position буфера должен быть установлен в начало APDU, а limit — в конец APDU. По завершении position буфера равен его пределу; предел остаётся неизменным.

Обратите внимание: данные в ByteBuffer копируются для защиты от последующего изменения.

Параметры:
apdu — ByteBuffer, содержащий полный APDU
Выбрасывает:
NullPointerException — если apdu равно null
IllegalArgumentException — если apdu не содержит допустимый командный APDU

CommandAPDU

public CommandAPDU(int cla, int ins, int p1, int p2)
Создаёт CommandAPDU из четырёх байтов заголовка. Это случай 1 по ISO 7816, без тела команды.
Параметры:
cla — байт класса CLA
ins — байт инструкции INS
p1 — байт параметра P1
p2 — байт параметра P2

CommandAPDU

public CommandAPDU(int cla, int ins, int p1, int p2, int ne)
Создаёт CommandAPDU из четырёх байтов заголовка и ожидаемой длины данных ответа. Это случай 2 по ISO 7816: пустое поле данных команды с указанным Ne. Если Ne равно 0, APDU кодируется как случай 1 по ISO 7816.
Параметры:
cla — байт класса CLA
ins — байт инструкции INS
p1 — байт параметра P1
p2 — байт параметра P2
ne — максимальное количество ожидаемых байтов данных в ответном APDU
Выбрасывает:
IllegalArgumentException — если ne отрицательно или больше 65536

CommandAPDU

public CommandAPDU(int cla, int ins, int p1, int p2, byte[] data)
Создаёт CommandAPDU из четырёх байтов заголовка и данных команды. Это случай 3 по ISO 7816: данные команды присутствуют, а Ne отсутствует. Значение Nc определяется как data.length. Если data равно null или его длина равна 0, APDU кодируется как случай 1 по ISO 7816.

Обратите внимание: байты данных копируются для защиты от последующего изменения.

Параметры:
cla — байт класса CLA
ins — байт инструкции INS
p1 — байт параметра P1
p2 — байт параметра P2
data — массив байтов, содержащий байты данных тела команды
Выбрасывает:
IllegalArgumentException — если data.length больше 65535

CommandAPDU

public CommandAPDU(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength)
Создаёт CommandAPDU из четырёх байтов заголовка и данных команды. Это случай 3 по ISO 7816: данные команды присутствуют, а Ne отсутствует. Значение Nc определяется как dataLength. Если dataLength равно 0, APDU кодируется как случай 1 по ISO 7816.

Обратите внимание: байты данных копируются для защиты от последующего изменения.

Параметры:
cla — байт класса CLA
ins — байт инструкции INS
p1 — байт параметра P1
p2 — байт параметра P2
data — массив байтов, содержащий байты данных тела команды
dataOffset — смещение в массиве байтов, с которого начинаются байты данных тела команды
dataLength — количество байтов данных в теле команды
Выбрасывает:
NullPointerException — если data равно null, а dataLength не равно 0
IllegalArgumentException — если dataOffset или dataLength отрицательны, если dataOffset + dataLength больше data.length или если dataLength больше 65535

CommandAPDU

public CommandAPDU(int cla, int ins, int p1, int p2, byte[] data, int ne)
Создаёт CommandAPDU из четырёх байтов заголовка, данных команды и ожидаемой длины данных ответа. Это случай 4 по ISO 7816: данные команды и Ne присутствуют. Значение Nc определяется как data.length, если data не равно null, и как 0 в противном случае. Если Ne или Nc равны нулю, APDU кодируется как случай 1, 2 или 3 согласно ISO 7816.

Обратите внимание: байты данных копируются для защиты от последующего изменения.

Параметры:
cla — байт класса CLA
ins — байт инструкции INS
p1 — байт параметра P1
p2 — байт параметра P2
data — массив байтов, содержащий байты данных тела команды
ne — максимальное количество ожидаемых байтов данных в ответном APDU
Выбрасывает:
IllegalArgumentException — если data.length больше 65535, либо ne отрицательно или больше 65536

CommandAPDU

public CommandAPDU(int cla, int ins, int p1, int p2, byte[] data, int dataOffset, int dataLength, int ne)
Создаёт CommandAPDU из четырёх байтов заголовка, данных команды и ожидаемой длины данных ответа. Это случай 4 по ISO 7816: данные команды и Le присутствуют. Значение Nc определяется как dataLength. Если Ne или Nc равны нулю, APDU кодируется как случай 1, 2 или 3 согласно ISO 7816.

Обратите внимание: байты данных копируются для защиты от последующего изменения.

Параметры:
cla — байт класса CLA
ins — байт инструкции INS
p1 — байт параметра P1
p2 — байт параметра P2
data — массив байтов, содержащий байты данных тела команды
dataOffset — смещение в массиве байтов, с которого начинаются байты данных тела команды
dataLength — количество байтов данных в теле команды
ne — максимальное количество ожидаемых байтов данных в ответном APDU
Выбрасывает:
NullPointerException — если data равно null, а dataLength не равно 0
IllegalArgumentException — если dataOffset или dataLength отрицательны, если dataOffset + dataLength больше data.length, если ne отрицательно или больше 65536 либо если dataLength больше 65535

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

getCLA

public int getCLA()
Возвращает значение байта класса CLA.
Возвращает:
значение байта класса CLA.

getINS

public int getINS()
Возвращает значение байта инструкции INS.
Возвращает:
значение байта инструкции INS.

getP1

public int getP1()
Возвращает значение байта параметра P1.
Возвращает:
значение байта параметра P1.

getP2

public int getP2()
Возвращает значение байта параметра P2.
Возвращает:
значение байта параметра P2.

getNc

public int getNc()
Возвращает количество байтов данных в теле команды (Nc) или 0, если это APDU не содержит тела. Этот вызов эквивалентен getData().length.
Возвращает:
количество байтов данных в теле команды или 0, если это APDU не содержит тела.

getData

public byte[] getData()
Возвращает копию байтов данных в теле команды. Если это APDU не содержит тела, метод возвращает массив байтов нулевой длины.
Возвращает:
копию байтов данных в теле команды или пустой массив байтов, если это APDU не содержит тела.

getNe

public int getNe()
Возвращает максимальное количество ожидаемых байтов данных в ответном APDU (Ne).
Возвращает:
максимальное количество ожидаемых байтов данных в ответном APDU.

getBytes

public byte[] getBytes()
Возвращает копию байтов этого APDU.
Возвращает:
копию байтов этого APDU.

toString

public String toString()
Возвращает строковое представление этого командного APDU.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого командного APDU.

equals

public boolean equals(Object obj)
Сравнивает указанный объект с этим командным APDU на равенство. Возвращает true, если переданный объект также является CommandAPDU и его байты совпадают с байтами этого CommandAPDU.
Переопределяет:
equals в классе Object
Параметры:
obj — объект, сравниваемый на равенство с этим командным APDU
Возвращает:
true, если указанный объект равен этому командному APDU
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этого командного APDU.
Переопределяет:
hashCode в классе Object
Возвращает:
хеш-код этого командного APDU.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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