Следует обратить внимание на тот факт, что некоторые положения настоящего стандарта, помимо тех, что определены выше, могут быть также объектами патентных прав. ИСО и МЭК не несут ответственности за идентификацию всех или некоторых таких прав.
ИСО/МЭК 7816-3 подготовлен подкомитетом N 17 "Карты и идентификация личности" совместного технического комитета N 1 ИСО/МЭК "Информационные технологии" (ISO/IEC JTC 1/SC 17).
Настоящий стандарт устанавливает требования к энергетическим и сигнальным структурам и обмену информацией между картой на интегральных схемах (далее - карта) и устройством сопряжения, например терминалом.
В настоящем стандарте определены скорости передачи сигналов, уровни напряжений, значения токов, условие четности, рабочая процедура, механизмы передачи и коммуникации с картой.
В настоящем стандарте не рассматриваются содержание команд и информация об идентификации эмитентов и пользователей, услугах и ограничениях, средствах защиты, протоколировании и описании команд.
В настоящем стандарте использованы ссылки на следующие стандарты (для датированных ссылок следует использовать только указанное издание, для недатированных ссылок - последнее издание указанного документа, включая все поправки):
ИСО/МЭК 7816-2 Карты идентификационные. Карты на интегральных схемах. Часть 2. Карты с контактами. Размеры и расположение контактов (ISO/IEC 7816-2, Identification cards - Integrated circuit cards - Part 2: Cards with contacts - Dimensions and location of the contacts)
ИСО/МЭК 7816-4 Карты идентификационные. Карты на интегральных схемах. Часть 4. Организация, защита и команды для обмена (ISO/IEC 7816-4, Identification cards - Integrated circuit cards - Part 4: Organization, security and commands for interchange).
В настоящем стандарте применены следующие термины с соответствующими определениями:
3.1 блок (block): Строка байтов, включающая в себя два или три поля, определенных как поле пролога, информационное поле и поле эпилога.
3.2 класс рабочих условий (class of operation conditions): Совокупность значений напряжений и тока.
3.3 "холодное" восстановление (cold reset): Первое восстановление после активизации.
3.4 адрес узла назначения (destination node address): Часть байта с адресами узлов, определяющего санкционированного получателя блока.
3.5 элементарная единица времени (elementary time unit): Номинальная длительность момента в пределах асинхронного знака.
3.6 поле эпилога (epilogue field): Конечное поле в блоке, передающее код с обнаружением ошибки.
3.7 идентификационная карта (identification card): Карта, которая содержит данные о ее держателе и эмитенте и может содержать сведения, необходимые в качестве входных данных для применения карты в соответствии с ее назначением и выполнения транзакций.
[ИСО/МЭК 7810]
3.8 информационный блок (information block): Блок, основным назначением которого является передача информации прикладного уровня.
3.9 информационное поле (information field): Поле блока, передающее данные (в общем случае данные приложения).
3.10 устройство сопряжения (interface device): Терминал, устройство коммуникации или машина, с которыми карта образует электрическое соединение во время функционирования.
3.11 байт длины (length byte): Часть поля пролога, кодирующая число байтов в информационном поле блока.
3.12 байт с адресами узлов (node address byte): Часть поля пролога, указывающая адрес назначения и адрес источника блоков.
3.13 рабочая карта (operating card): Карта, которая может безошибочно выполнять все свои функции.
3.14 процедурный байт (procedure byte): Байт, отправленный картой для указания последовательности команд при T = 0 и контроля обменом байтами данных.
3.15 поле пролога (prologue field): Первое поле блока, состоящее из трех байтов, определенных как байт с адресами узлов, байт управления протоколом и байт длины.
3.16 байт управления протоколом (protocol control byte): Часть поля пролога, кодирующая информацию по управлению передачей.
3.17 блок готовности к приему (receive ready block): Блок, передающий номер ожидаемого I-блока, используемый в качестве положительного или отрицательного подтверждения приема.
3.18 избыточный код (redundancy code): Содержимое поля эпилога, вычисленное на основе всех байтов в поле пролога и информационного поля.
3.19 адрес исходного узла (source node address): Часть байта с адресами узлов, идентифицирующая отправителя блока.
3.20 контролирующий блок (supervisory block): Блок, передающий информацию, относящуюся к управлению передачей.
3.21 управление передачей (transmission control): Функция, используемая для управления передачей данных между устройством сопряжения и картой, включая блок передачи с управлением очередности, синхронизацией и устранением ошибок, возникающих при передаче.
3.22 "горячее" восстановление (warm reset): Любое восстановление, не являющееся "холодным".
В настоящем стандарте применены следующие обозначения и сокращения:
A, B, C - классы рабочих условий;
APDU - application protocol data unit (блок данных прикладного протокола);
BGT - block guard time (разграничительный интервал блока);
BWI - block waiting time integer (время ожидания блока, целое число);
BWT - block waiting time (время ожидания блока);
CGT - character guard time (разграничительный интервал знака);
CIN - input capacitance (входная емкость);
CLA - class byte (байт класса);
CLK - clock contact (сигнал синхронизации);
COUT - output capacitance (выходная емкость);
CRC - cyclic redundancy code (циклический избыточный код);
CWI - character waiting time integer (время ожидания знака, целое число);
CWT - character waiting time (время ожидания знака);
(C(6) C(7)) - значение сцепления байтов C(6) и C(7) (первый байт является самым старшим);
D - регулировка скорости в бодах, целое число;
DAD - destination node address (адрес узла назначения);
Dd, Di, Dn - значения по умолчанию, указываемые значения и согласованные значения D;
etu - elementary time unit (элементарная единица времени);
F - изменение синхронизирующей частоты, целое число;
f - значение частоты синхронизирующего сигнала, подаваемого на карту с помощью устройства сопряжения;
Fd, Fi, Fn - значения по умолчанию, указываемые значения и согласованные значения F;
GND - ground contact (заземляющий контакт);
GT - guard time (разграничительный интервал);
H - состояние с высоким уровнем напряжения;
I-block - information block (информационный блок);
ICC - ток на VCC;
IFS - maximum information field size (максимальный размер информационного поля);
IFSC - IFS для карты;
IFSD - IFS для устройства сопряжения;
IIH - входной ток высокого уровня;
IIL - входной ток низкого уровня;
INF - information field (информационное поле);
INS - instruction byte (командный байт);
IOH - выходной ток высокого уровня;
IOL - выходной ток низкого уровня;
I/O - контакт ввода/вывода;
L - состояние с низким уровнем напряжения;
Lc field - поле длины для кодирования числа Nc;
Le field - поле длины для кодирования числа Ne;
LEN - length byte (байт длины);
LRC - longitudinal redundancy code (продольный избыточный кодом);
N - extra guard time integer (дополнительный разграничительный интервал, целое число);
NAD - node address byte (байт с адресами узлов);
Na - точное количество доступных байтов данных;
Nc - число байтов в поле данных команды;
Ne - максимальное число байтов, ожидаемых в поле данных ответа;
Nm - число оставшихся байтов данных;
Nr - число байтов в поле данных ответа;
Nx - число дополнительных доступных байтов данных;
OSI - open systems interconnection (взаимодействие открытых систем);
PCB - protocol control byte (байт управления протоколом);
PPS - protocol and parameters selection (выбор протокола и параметров);
P1 P2 - байты параметров;
R-block - receive ready block (блок готовности к приему);
RFU - зарезервировано для использования в будущем;
RST - reset contact (вход сигнала восстановления);
SAD - source node address (адрес исходного узла);
S-block - supervisory block (контролирующий блок);
SPU - standard or proprietary use contact (контакт стандартного или проприетарного назначения);
состояние H - высокий логический уровень;
состояние L - низкий логический уровень;
SW1 SW2 - байты состояний;
T - тип;
T = 0 - полудуплексная передача знаков;
T = 1 - полудуплексная передача блоков;
TA, TB, ... - байты интерфейса;
TCK - check character (контрольный знак);
tF - время спада амплитуды сигнала с 90% до 10%;
TPDU - transmission protocol data unit (блок данных протокола передачи);
tR - время нарастания амплитуды сигнала с 10% до 90%;
TS - initial character (начальный знак);
T0 - байт формата;
T1, T2, ... - байты предыстории;
UCC - напряжение на VCC;
UIH - входное напряжение высокого уровня;
UIL - входное напряжение низкого уровня;
UOH - выходное напряжение высокого уровня;
UOL - выходное напряжение низкого уровня;
Примечание - В соответствии с [1], символы UCC, UIH, UIL, UOH и UOL заменяют прежние символы VCC, VIH, VIL, VOH и VOL.
VCC - supply power contact (цепь подачи электропитания);
WI - waiting time integer (время ожидания, целое число);
WT - waiting time (время ожидания);
WTX - waiting time extension (продление времени ожидания);
X - индикатор остановки синхронизации;
Y - индикатор класса;
'XY' - шестнадцатеричная запись, использующая числа от '0' до '9' и от 'A' до 'F', XY - число по основанию 16.
Размеры и расположения контактов должны быть по ИСО/МЭК 7816-2.
Настоящий стандарт поддерживает, как минимум, следующие контакты:
- C1: вход электропитания (VCC, см. 5.2.1);
- C2: вход сигнала восстановления (RST, см. 5.2.2);
- C3: вход сигнала синхронизации (CLK, см. 5.2.3);
- C5: заземление (GND, опорное напряжение);
- C6: стандартное или проприетарное назначение (SPU, см. 5.2.4);
- C7: ввод или вывод данных, передаваемых последовательно (I/O, см. 5.2.5).
Примечание - В настоящем стандарте использование контакта C6 для обеспечения карты возможностью программирования не рекомендовано, т.к. все карты, произведенные с 1990 г., имеют внутренние возможности программирования.
5.1.2 Условия измерений
По определению, когда карта и устройство сопряжения механически соединены, каждый контакт карты и соответствующий контакт устройства сопряжения соединены электрической цепью.
Все измерения в электрической цепи проводят относительно контакта GND при температуре окружающей среды от 0 °C до 50 °C. Любой ток, подающийся на карту, принимают за положительный. Все временные соотношения измеряют применительно к соответствующим пороговым уровням.
По определению электрическую цепь карты рассматривают как неактивную, если напряжение относительно контакта GND остается от 0 до 0,4 В для токов менее 1 мА, подаваемых на устройство сопряжения.
Настоящий стандарт устанавливает три класса рабочих условий, различаемые по номинальному напряжению питания, подаваемому на карту устройством сопряжения через контакт VCC:
- 5 В - класс A;
- 3 В - класс B;
- 1,8 В - класс C.
Карта должна поддерживать один или более классов. Если устройство сопряжения применяет класс, поддерживаемый картой, то карта должна функционировать в соответствии с назначением.
Если карта поддерживает более одного класса, то эти классы должны быть последовательными.
Если устройство сопряжения предлагает более одного класса, то используется порядок, в соответствии с которым эти классы будут применяться. Описание данного порядка в настоящем стандарте не рассматривается.
Карта не должна повреждаться, если устройство сопряжения предлагает класс, не поддерживаемый картой (по определению поврежденная карта больше не функционирует в соответствии с назначением или содержит искаженные данные).
Контакт VCC используют для подачи в карту электропитания.
Таблица 1
Электрические характеристики VCC при нормальных
рабочих условиях
Для карты определяют максимальное значение тока. Устройство сопряжения должно поддерживать это значение тока в указанном диапазоне для значения напряжения или оно может поддерживать большее значение. Источник электропитания должен поддерживать значение напряжения в указанном диапазоне, несмотря на наличие переходных процессов в соответствии с таблицей 2.
Таблица 2
Контакт RST используют для подачи в карту сигнала восстановления (см. 6.2.2 ("холодное" восстановление) и 6.2.3 ("горячее" восстановление)).
Таблица 3
Электрические характеристики RST при нормальных
рабочих условиях
Контакт CLK используют для подачи в карту сигнала синхронизации. Фактическое значение частоты сигнала синхронизации обозначается f. Минимальное значение должно быть 1 МГц. Во время активации (см. 6.2.1) и в режиме "холодного" восстановления (см. 6.2.2) максимальное значение должно составлять 5 МГц. Максимальные значения, которые поддерживает карта, приведены в таблице 7.
Если не определено иное, рабочий цикл сигнала синхронизации должен составлять от 40% до 60% его периода. При переключении частоты с одного значения на другое длительность импульса должна составлять не менее 40% самого короткого допускаемого картой периода (см. максимальное значение частоты в таблице 7). При переключении значения частоты не должен происходить обмен информацией. Рекомендуются два различных момента для переключения значения частоты:
- после завершения ответа на восстановление (см. 8.1), пока карта находится в ожидании знака, либо
- после успешного PPS-обмена (см. 9.3), пока карта находится в ожидании знака.
Таблица 4
условиях
Контакт SPU можно использовать для стандартного и для проприетарного назначения, как вход и (или) выход.
В зависимости от того, использует ли карта SPU или нет, первый TB для T = 15 должен присутствовать или отсутствовать в Ответе-на-Восстановление: данный глобальный байт интерфейса (см. 8.3) указывает, является ли назначение стандартным или проприетарным. ИСО/МЭК СТК1/ПК 17 зарезервировал стандартное назначение для использования в будущем.
Если карта питается напряжением VCC и контакт C6 соединен с устройством сопряжения, то напряжение должно оставаться от - 0,3 В до UCC + 0,3 В.
Карта не должна быть повреждена устройством сопряжения, если контакт C6 соединен с VCC или GND. При этом устройство сопряжения должно соответствовать требованиям ИСО/МЭК 7816-3:1997.
Контакт I/O используют для ввода (режим приема) или вывода (режим передачи) данных. Обмен информацией через контакт I/O осуществляется при следующих двух состояниях электрической схемы:
- состояния H, если карта и устройство сопряжения находятся в режиме приема или если это состояние задается передатчиком;
- состояния L, если оно задается передатчиком.
Если карта и устройство сопряжения находятся в режиме приема, то электрическая схема должна находиться в состоянии H. Если карта и устройство сопряжения находятся в несогласованном режиме передачи, то состояние электрической схемы может быть неопределенным. Устройство сопряжения и карта во время работы не должны одновременно находиться в режиме передачи.
Устройство сопряжения должно быть способно поддерживать заданный диапазон значений входных токов, когда значение входного напряжения находится в допускаемом диапазоне. Импеданс устройства сопряжения не должен влиять на значение выходного напряжения на контакте I/O.
Таблица 5
Электрические характеристики I/O при нормальных рабочих
условиях
Электрические цепи не должны активизироваться до тех пор, пока контакты карты не соединятся механически с контактами устройства сопряжения. Взаимодействие между устройством сопряжения и картой должно включать в себя следующие последовательные операции, описанные в последующих подразделах:
- устройство сопряжения должно использовать класс рабочих условий для электрической цепи, а именно: активацию, "холодное" восстановление и, возможно, одно или более "горячих" восстановлений. Если карта поддерживает класс, то она должна ответить на восстановление в соответствии с разделом 8. Устройство сопряжения заканчивает действие завершенным и действительным Ответом-на-Восстановлением и классом рабочих условий. Устройство сопряжения должно быть в состоянии повторить всю операцию;
- для обмена информацией карта и устройство сопряжения должны быть согласованы по протоколу передачи и значениям параметров передачи. В разделе 10 определены T = 0, полудуплексная передача знака с устройством сопряжения в качестве управляющего устройства, в разделе 11 - T = 1, полудуплексная передача блоков, в разделе 12 - передача пары команда-ответ при T = 0 и T = 1. Когда от карты не ожидают передачи (например, после обработки пары команда-ответ или до инициализации следующей), устройство сопряжения может остановить сигнал синхронизации, если карта поддерживает останов синхронизации;
- устройство сопряжения должно выполнить деактивацию электрических цепей.
Деактивация электрических цепей в заданной последовательности должна завершиться прежде, чем произойдет механическое разъединение контактов карты и контактов устройства сопряжения.
Для того чтобы инициировать взаимодействие с картой, с которой имеется механическое соединение, устройство сопряжения должно активизировать электрические цепи в соответствии с классом рабочих условий A, B или C (см. 5.1.3) в следующем порядке:
- RST приводится в состояние L (см. 5.2.2);
- на VCC подается электропитание (см. 5.2.1);
- I/O в устройстве сопряжения приводится в режим приема (см. 5.2.5). Устройство сопряжения должно игнорировать состояние на I/O во время активации;
- на CLK подается сигнал синхронизации (см. 5.2.3).
Примечание 1 - Задержка между подачей электропитания на VCC, установкой I/O в режиме приема и подачей сигнала синхронизации на CLK не определена.
Примечание 2 - Устройство сопряжения может выполнить деактивацию с учетом короткого замыкания.
На рисунке 1 показана активация (до времени Ta) и "холодное" восстановление (после времени Ta).
![]() В конце активации (RST в состоянии L, на VCC подано электропитание, I/O в режиме приема в устройстве сопряжения, на CLK подается подходящий и устойчивый сигнал синхронизации) карта готова для "холодного" восстановления. Внутреннее состояние карты, предшествующее "холодному" восстановлению, принимается за неопределенное.
В соответствии с рисунком 1 сигнал синхронизации подается на CLK в момент времени Ta. Карта должна установить линию I/O в состояние H в пределах 200 циклов синхронизации (задержка ta) от начала подачи на CLK сигнала синхронизации (в течение времени Ta + ta). "Холодное" восстановление возникает вследствие поддерживания RST в состоянии L в течение не менее 400 циклов синхронизации (задержка tb) с момента подачи на CLK сигнала синхронизации (в течение времени Ta + tb). Устройство сопряжения должно игнорировать состояние на I/O, пока RST находится в состоянии L.
В момент времени Tb RST переводится в состояние H. Реакция на I/O должна начинаться между 400 и 40000 циклами синхронизации (задержка tc) после поступления нарастающего фронта сигнала на RST (в течение времени Tb + tc). Если реакция на I/O не начинается в пределах 40000 циклов синхронизации при нахождении RST в состоянии H, то устройство сопряжения должно выполнить деактивацию.
Ответ на "горячее" восстановление может отличаться от ответа на предыдущее восстановление, поэтому устройство сопряжения может производить "горячее" восстановление в любое время, даже во время ответа на восстановления, но не раньше приема обязательных знаков TS и T0 (см. 8.1). "Горячее" восстановление не должно инициироваться раньше чем 4464 (= 12·372) цикла синхронизации после переднего фронта знака T0.
Примечание - "Горячее" восстановление, инициированное во время ответа на восстановление, может повредить карту, соответствующую требованиям предыдущего издания (см. ИСО/МЭК 7816-3:1997).
В соответствии с рисунком 2 устройство сопряжения инициирует "горячее" восстановление (в течение времени Tc) приведением RST в состояние L на время, соответствующее не менее чем 400 циклам синхронизации (задержка te), пока VCC остается подключенным к электропитанию и на CLK подается подходящий и устойчивый сигнал синхронизации. Карта должна установить линию I/O в состояние H в пределах 200 циклов синхронизации (задержка td) после установления RST в состояние L (в течение времени Tc + td). Устройство сопряжения должно игнорировать состояние на I/O, пока RST находится в состоянии L.
![]() В момент времени Td RST переводится в состояние H. Ответ на I/O должен начинаться между 400 и 40000 циклов синхронизации (задержка tf) после поступления нарастающего фронта сигнала на RST (в течение времени Td + tf). Если Ответ на I/O не начинается в пределах 40000 циклов синхронизации при нахождении RST в состоянии H, то устройство сопряжения должно выполнить деактивацию.
На рисунке 3 показаны принципы выбора класса рабочих условий.
![]() Если Ответ-на-Восстановление поддерживает индикатор класса, указывающий применяемый класс (первый TA для T = 15, см. 8.2), то нормальная работа может быть продолжена. В ином случае устройство сопряжения может выполнить деактивацию и после задержки в течение не менее 10 мс применить другой класс, поддерживаемый картой.
Если Ответ-на-Восстановление не поддерживает индикатор класса, то устройство сопряжения должно поддерживать текущий класс. Если после выполнения Ответа-на-Восстановление карта не функционирует, то устройство сопряжения должно выполнить деактивацию и после задержки в течение не менее 10 мс может применить другой класс.
Если карта не отвечает на восстановление, то устройство сопряжения должно выполнить деактивацию и одно из следующих действий:
- либо после задержки в течение не менее 10 мс применить другой класс (при его наличии),
- либо прервать операцию выбора.
После прерывания операции выбора устройство сопряжения может инициировать другую операцию выбора.
Если класс уже один раз выбран, то он не изменяется во время нормальной работы. Для его смены устройство сопряжения должно выполнить деактивацию и после задержки в течение не менее 10 мс применить другой класс.
После выполнения ответа на восстановление карта должна ожидать знаки от устройства сопряжения. Их передача регулируется передачей параметров (см. 7.1), а интерпретация - протоколом (см. разделы 9, 10 и 11). На рисунке 4 показаны принципы выбора параметров передачи и протоколов.
Если TA2 (см. 8.3) присутствует в Ответе-на-Восстановление (карта в специфичном режиме), то устройство сопряжения должно запустить специфичный протокол передачи, используя специфичные значения параметров передачи.
В ином случае (карта в режиме согласования) для параметров передачи значения, используемые во время ответа на восстановление (т.е. значения по умолчанию для параметров передачи, см. 8.1), должны оставаться, как указано далее:
- если значение первого знака, полученного картой, 'FF', то устройство сопряжения должно начать PPS-обмен (см. раздел 9); значения по умолчанию параметров передачи должны оставаться в силе до тех пор, пока не произойдет успешное выполнение PPS-обмена, после чего устройство сопряжения должно начать согласованный протокол передачи, используя согласованные значения параметров передачи;
- в ином случае устройство сопряжения должно начать "первый предложенный протокол передачи" (TD1, см. 8.2.3). Устройство сопряжения должно так действовать, если карта предлагает только один протокол передачи и только значения по умолчанию для параметров передачи. Такая карта не нуждается в поддержке PPS-обмена.
![]() Примечание 1 - Значение PPSS ('FF', см. 9.2) является неверным для CLA (T = 0, см. 10.3.2) и для NAD (T = 1, см. 11.3.2.1).
Примечание 2 - В мультипротокольной карте, предлагающей T = 0 в согласованном режиме, только T = 0 может быть "неявно" выбран.
Примечание 3 - Устройство сопряжения, обращенное к карте в согласованном режиме и не поддерживающее ни PPS-обмен, ни "первый предложенный протокол передачи", может выполнить либо "горячее" восстановление, либо деактивацию.
Примечание 4 - Карта, передающая знак TA2 устройству сопряжения, не знающему о существовании специфичного режима, не может руководствоваться тем, что "горячее" восстановление переключит режим.
Примечание 5 - Устройство сопряжения, обнаружив знак TA2, не должно инициировать "горячее" восстановление до того, как оно обнаружит либо неподдерживаемое значение в полученных знаках, либо избыток WT (см. 7.2).
Если карта поддерживает остановку синхронизации, то когда устройство сопряжения не ожидает передачи от карты и I/O остается в состоянии H на протяжении не менее 1860 циклов синхронизации (задержка tg), в соответствии с рисунком 5 устройство сопряжения может остановить подачу сигнала синхронизации на CLK (в момент времени Te), пока VCC остается подключенным к электропитанию и RST находится в состоянии H.
![]() Пока синхронизация остановлена (с момента времени Te до момента времени Tf), CLK должна поддерживаться либо в состоянии H, либо в состоянии L в соответствии с индикатором остановки синхронизации X, определяемым в 8.3.
В момент времени Tf устройство сопряжения возобновляет синхронизацию, и обмен информацией на I/O может быть продолжен после совершения не менее 700 циклов синхронизации (в течение времени Tf + th).
Когда обмен информацией завершен или прерван (например, в случаях нереагирующей карты, обнаружения изъятия карты), устройство сопряжения должно деактивировать электрические цепи в следующем порядке (см. рисунок 6):
- RST приводится в состояние L;
- CLK приводится в состояние L (если синхронизация не остановлена ранее в состоянии L);
- I/O приводится в состояние A;
- VCC деактивируется.
![]() Номинальная длительность момента на электрической цепи I/O называется элементарной единицей времени и обозначается etu.
Etu должна быть равна F/D циклам синхронизации на электрической схеме CLK, где F и D - параметры передачи: F - коэффициент преобразования синхронизирующей частоты, а D - коэффициент регулирования скорости передачи в бодах.
.Значения параметров передачи должны быть, как определено в 6.3.1.
В соответствии с рисунком 7 знак состоит из десяти последовательных моментов, пронумерованных от 1 до 10. Каждому из моментов соответствует либо состояние H, либо состояние L:
- до момента 1 электрическая схема I/O должна быть в состоянии H;
- момент 1 должен быть в состоянии L. Данный момент является стартовым;
- моменты с 2 по 9 передают байт в соответствии с порядком кодирования (TS, см. 8.1);
- момент 10 должен обеспечивать контроль знака по четности (TS, см. 8.1);
- после момента 10 и карта, и устройство сопряжения должны оставаться в режиме приема (в безошибочной работе) на определенное время "паузы", при этом электрическая схема I/O должна оставаться в состоянии H.
![]() На рисунке 8 показаны временные соотношения знака. Даже при максимальном сдвиге между началом отсчета времени приемника и началом отсчета времени передатчика стоб-импульсы приемника должны отличаться от стоб-импульсов передатчика.
![]() В пределах каждого знака, если состояние изменяется в конце момента n (для любого n от 1 до 10), время задержки от переднего фронта знака до заднего фронта в момент n должно быть (n +/- 0,2) etu.
При поиске знака приемник периодически определяет наличие электрического сигнала на I/O. При условии, что началом отсчета времени передатчика является передний фронт знака, а началом отсчета времени приемника является среднее между последним наблюдением состояния H и первым наблюдением состояния L, сдвиг между началами отсчета составляет не более половины периода наблюдения. Период наблюдения должен быть меньше 0,2etu.
Приемник должен выполнить момент старта до 0,7etu (во время приема). Приемник должен считать второй момент в течение (1,5 +/- 0,2) etu, третий момент - в течение (2,5 +/- 0,2) etu, девятый момент - в течение (8,5 +/- 0,2) etu и момент четности - в течение (9,5 +/- 0,2) etu. Четность знака проверяется автоматически.
Минимальное время задержки между передними фронтами двух последовательных знаков называется разграничительным интервалом и обозначается GT.
Максимальное время задержки между передним фронтом знака, переданного картой, и передним фронтом предыдущего знака (переданного картой или устройством сопряжения) называется временем ожидания и обозначается WT. Оно позволяет обнаружить, например невосприимчивую карту.
Примечание - Согласно настоящему стандарту, разграничительный интервал и время ожидания являются минимальным/максимальным временем задержки между передними фронтами последовательных знаков.
Как показано на рисунке 9, при неправильной четности знака приемник должен передать сигнал ошибки на электрическую схему I/O. Затем приемник должен ожидать повторение знака.
![]() На рисунке 10 показаны временные соотношения сигнала ошибки.
![]() Чтобы передать сигнал об ошибке, приемник должен вывести I/O в состояние L в течение (10,5 +/- 0,2)etu во время приема минимум одной etu, максимум двух etu.
Для обнаружения сигнала ошибки передатчик должен считать I/O в течение (11,5 +/- 0,2)etu после переднего фронта знака:
- если состояние H, то принимается, что прием безошибочный;
- если состояние L, то принимается, что прием с ошибкой. После задержки в течение как минимум двух etu с момента обнаружения сигнала ошибки передатчик должен повторно послать знак.
Если карта или устройство сопряжения не обеспечивают повторение знака, то это значит, что они игнорируют входящий сигнал ошибки и не должны получать повреждения от него.
Etu, первоначально используемая картой, должна быть равна 372 циклам синхронизации (т.к. во время ответа на восстановление значениями параметров передачи являются значения по умолчанию Fd = 372 и Dd = 1) (см. TS для альтернативного измерения данной etu). Структура знака должна быть, как определено в 7.2 при GT = 12etu и WT = 9600etu. Сигнал ошибки и повторение знака в соответствии с 7.3 являются обязательными для карт с T = 0 и необязательными для устройства сопряжения и других карт.
На рисунке 11 показаны первый знак, который называется начальным знаком и обозначается TS, и начало второго знака, который называется знаком формата и обозначается T0.
![]() Начальный знак должен представлять собой:
- комбинацию моментов с 1 по 4 LHHL. Последовательность (H) LHHL является комбинацией синхронизации. Взяв одну треть задержки между двумя задними фронтами в качестве альтернативного измерения etu, первоначально используемого картой, механизм передачи и приема в карте должен быть в соответствии с временными соотношениями, определенными в 7.2 и 7.3;
- комбинацию моментов с 5 по 7 LLL или HHH. Она показывает порядок кодирования или декодирования байта (т.е. восемь битов от самого старшего бита (msb) до самого младшего бита (lsb) со значениями 0 и 1) в каждом последующем знаке (т.е. десять последовательных моментов, пронумерованных от 1 до 10 в состояниях L и H);
- комбинацию моментов с 8 по 10 LLH.
Начальный знак TS может иметь две комбинации:
- (H) LHHL LLL LLH устанавливает обратный порядок, по которому состояние L кодирует значение 1, а момент 2 передает самый старший бит (msb идет первым). При декодировании согласно обратному порядку передаваемый байт равен '3F';
- (H) LHHL HHH LLH устанавливает прямой порядок, по которому состояние H кодирует значение 1, а момент 2 передает самый младший бит (lsb идет первым). При декодировании согласно прямому порядку передаваемый байт равен '3B'.
Четность знака безошибочна, когда имеется четное число битов, установленных на 1 в девяти моментах с 2 по 9.
Карта может использовать оба порядка кодирования. Устройство сопряжения должно поддерживать оба порядка кодирования.
После начального знака TS следует последовательность из не более 32 знаков:
- T0 - знак формата (обязательный);
- TA, TB, TC, TD - знаки интерфейса (необязательные). На наличие знаков интерфейса указывает способ битового отображения, инициируемый знаком формата T0;
- T1, T2, ..., TK - знаки предыстории (необязательные). Наличие знаков предыстории зависит от числа K, закодированного в знаке формата T0;
- TCK - контрольный знак (условный). Наличие контрольного знака зависит от типов T, закодированных в некотором знаке интерфейса TD.
По определению ответ на восстановление заканчивается 12etu после переднего фронта последнего знака последовательности. По определению Ответ-на-Восстановление - это значение строки байтов (не более 32 байтов), кодированных в такой последовательности знаков.
8.2.1 Общая конфигурация
На рисунке 12 показана структура байта, используемая далее в тексте. Байт состоит из восьми битов, обозначаемых с 8 по 1, со значениями 1 или 0, где бит 8 - самый старший бит (msb), а бит 1 - самый младший бит (lsb).
В таблице 6 показан Ответ-на-Восстановление (строка не более 32 байтов). Для упрощения обозначений далее в тексте T0, TA, TB, TC, TD, ... , T1, T2, ..., TK и TCK будут обозначать байты, которые передаются соответствующими знаками.
Таблица 6
8.2.2 Байт формата T0
На рисунке 13 показан байт формата T0:
- биты с 8 по 5 формируют индикатор Y1;
- биты с 4 по 1 кодируют число K от 0 до 15.
![]() На рисунке 14 показаны байты интерфейса TDi. Каждый байт интерфейса TD является структурным:
- биты с 8 по 5 формируют индикатор Yi+1;
- биты с 4 по 1 кодируют тип T от 0 до 15.
![]() Следовательно, байт T0 передает Y1, байт TD1 передает Y2, байт TD2 передает Y3 и т.д. В байте, передающем индикатор Yi, биты с 8 по 5 устанавливают, присутствуют или отсутствуют (в зависимости от того, равен ли соответствующий бит единице или нулю) байты интерфейса TAi для бита 5, TBi для бита 6, TCi для бита 7, TDi для бита 8 в данном порядке после байта, передающего Yi.
Если байт TDi отсутствует, то и байты интерфейса TAi+1, TBi+1, TCi+1 и TDi+1 отсутствуют.
Тип T обращается к протоколу передачи и/или определяет байты интерфейса:
- T = 0 обращается к полудуплексной передаче знаков, определенных в разделе 10;
- T = 1 обращается к полудуплексной передаче блоков, определенных в разделе 11;
- T = 2 и T = 3 зарезервированы для будущих полудуплексных операций;
- T = 4 зарезервирован для расширенной полудуплексной передачи знаков;
- с T = 5 по T = 15 зарезервированы для использования в будущем под руководством ИСО/МЭК СТК1/ПК 17;
- T = 14 обращается к протоколам передачи, не стандартизированным ИСО/МЭК СТК1/ПК 17;
- T = 15 не обращается к протоколу передачи, а только определяет глобальные байты интерфейса.
Если TD1, TD2 и т.д. присутствуют, то кодированные типы T должны быть в возрастающем числовом порядке. T = 0 должен быть первым (если присутствует), T = 15 - последним. T = 15 является неверным в TD1.
Первый предложенный протокол передачи определяется следующим образом:
- если TD1 присутствует, то он кодируется первым предложенным протоколом T;
- если TD1 отсутствует, то первым и единственным предложением является T = 0.
Каждый байт интерфейса TA, TB или TC является или глобальным, или специфичным:
- глобальные байты интерфейса обращаются к параметрам интегральной схемы карты (см. 8.3);
- специфичные байты интерфейса обращаются к параметрам протокола передачи, предлагаемого картой.
Байты интерфейса TA1, TB1, TC1, TA2, TB2 - глобальные. Байт интерфейса TC2 - специфичный для протокола T = 0 (см. 10.2).
Интерпретация байтов интерфейса TAi, TBi, TCi для i > 2 зависит от типа параметра T, кодированного в байте TDi-1 следующим образом:
при T от 0 до 14 байты интерфейса TAi, TBi, TCi - специфичные, ориентированы на протокол T;
при T = 15 байты интерфейса TAi, TBi, TCi - глобальные.
Если более чем три байта интерфейса TAi, TBi, TCi, TAi+1, TBi+1, TCi+1... определены для одного и того же типа параметра T, то каждый из них однозначно идентифицируется своим положением после первого, второго и т.д случая употребления параметра T в TDi-1 для i > 2.
Примечание - Сочетание типа T со способом битового отображения позволяет посылать только полезные байты интерфейса и при необходимости использовать значения по умолчанию для параметров, соответствующих отсутствующим байтам интерфейса.
Например, в разделе 11.4 определены три байта интерфейса, специфичные для T = 0, а именно первый TA, TB и TC для T = 1. При необходимости такой байт может быть передан соответственно как TA3, TB3 и TC3 при TD2, показывающем T = 1. В зависимости от того, предлагает ли карта T = 0 или нет, TD1 будет показывать либо T = 0, либо T = 1.
8.2.4 Байты предыстории T1, T2,..., TK
Байты предыстории описывают рабочие характеристики карт. Их структура и содержание должны быть, как определено в ИСО/МЭК 7816-4.
Если K не нулевое, то Ответ-на-Восстановление продолжается на K (не более 15) байтов предыстории T1, T2,..., TK.
8.2.5 Контрольный байт TCK
TCK должен отсутствовать, если в Ответе-на-Восстановление указано только T = 0 (возможно, по умолчанию). TCK должен присутствовать, если в Ответе-на-Восстановление присутствует как T = 0, так и T = 15, а также во всех прочих случаях. Если TCK присутствует, то результат операции "исключающее ИЛИ" над всеми байтами от T0 до TCK включительно был нулевым. Все остальные значения являются ошибочными.
Данный раздел устанавливает содержание глобальных байтов интерфейса TA1, TB1, TC1, TA2, TB2, первого TA для T = 15 и первого TB для T = 15:
- в случае присутствия в Ответе-на-Восстановление такой байт должен быть интерпретирован для безошибочной обработки любого протокола передачи;
- в случае отсутствия в Ответе-на-Восстановление для соответствующих параметров при необходимости должны использоваться значения по умолчанию.
ИСО/МЭК СТК1/ПК 17 зарезервировал для будущего применения все глобальные байты интерфейса, не определенные в данном разделе, и все неиспользуемые значения глобальных байтов интерфейса, определенных в данном разделе.
TA1 кодирует указанные значения коэффициента преобразования частоты синхронизирующих импульсов (Fi), указанные значения коэффициента регулирования скорости передачи в бодах (Di) и максимальное значение частоты, поддерживаемой картой (f(max)). Значениями по умолчанию являются: Fi = 372, Di = 1 и f(max) = 5 МГц. Применение Fi и Di описано в 7.1, TC1 и TA2 - 9.2 и 10.2, а f(max) - 5.2.3.
В соответствии с таблицей 7 биты с 8 по 5 кодируют Fi и f(max).
Таблица 7
В соответствии с таблицей 8 биты с 4 по 1 кодируют Di.
Таблица 8
TB1 и TB2 не рекомендуются для использования. Карта не передает их, а устройство сопряжения игнорирует их.
Примечание - Первые два издания ИСО/МЭК 7816-3 определяли TB1 и TB2 для установления электрических параметров интегральной схемы для нерекомендуемого использования контакта C6 (см. 5.1.1).
TC1 кодирует дополнительный разграничительный интервал (N) от 0 до 255 через восемь битов. Значение по умолчанию N = 0.
Если N от 0 до 254, то карте, прежде чем она станет готовой к приему следующего знака, требуется следующее время задержки от переднего фронта предыдущего знака (переданного картой или устройством сопряжения):
;- если T = 15 отсутствует в Ответе-на-Восстановление, то R = F/D, т.е. R принимает значения, используемые для вычисления etu;
- если T = 15 присутствует в Ответе-на-Восстановление, то R = Fi/Di, т.е. R принимает значения, определенные выше по TA1.
Дополнительный разграничительный интервал не используется для передачи знака от карты: GT = 12 etu.
Использование N = 255 зависит от протокола: GT = 12 etu в PPS (см. раздел 9) и T = 0 (см. раздел 10). Использование T = 1 при N = 255 описано в 11.2.
TA2 является байтом специфичного режима, как показано на рисунке 15. Использование TA2 описано в 6.3.1 и 7.1.
Бит 8 указывает на возможность смены режимов (согласованный/специфический):
- восприимчив для смены, если бит 8 установлен на 0;
- непригоден для смены, если бит 8 установлен на 1.
Биты 7 и 6 зарезервированы для использования в будущем (установлены на 0, если не используются);
Бит 5 показывает определение параметров F и D:
- если бит 5 установлен на 0, то должны применяться коэффициенты Fi и Di, определенные выше для TA1;
- если бит 5 установлен на 1, должны применяться неявные значения (не определенные устройством сопряжения).
Биты с 4 по 1 кодируют тип T.
![]() Примечание - Устройство сопряжения, поддерживающее три значения F, D и T, связанные с TA2, должно инициировать передачу протокола T с F и D. Иначе оно должно выполнить или "горячее" восстановление (бит 8 установлен на 0), или деактивацию (бит 8 установлен на 1).
Первый байт TA для T = 15 кодирует индикатор остановки синхронизации (X) и индикатор класса (Y). Значения по умолчанию: X = остановка синхронизации не поддерживается и Y = поддерживается только класс A. Описание использования остановки синхронизации приведено в 6.3.2, а применение классов рабочих условий - 6.2.1 и 6.2.4.
В соответствии с таблицей 9 биты 8 и 7 показывают, поддерживает ли карта остановку синхронизации (/=00) или нет (=00) и, если поддерживает, то какое состояние является предпочтительным на электрической схеме CLK, когда синхронизация остановлена.
Таблица 9
В соответствии с таблицей 10 биты с 6 по 1 показывают классы рабочих условий, принятые картой. Каждый бит представляет класс: бит 1 - класс A, бит 2 - класс B, а бит 3 - класс C (см. 5.1.3).
Таблица 10
Первый байт TB для T = 15 показывает использование SPU картой (см. 5.2.4). Значения по умолчанию: SPU не используется.
Кодируется битами с 7 по 1; использование либо стандартное (бит 8 установлен на 0), либо проприетарное (бит 8 установлен на 1). Значение '00' показывает, что карта не использует SPU. ИСО/МЭК СТК1/ПК 17 зарезервировал для использования в будущем другие значения, в которых бит 8 установлен на 0.
PPS-обмен должен начаться в соответствии с 6.3.1. Структура знака должна быть в соответствии с 7.1 и 7.2 с использованием порядка кодирования, установленного начальным знаком TS, а также GT, как определено в 8.3, и WT = 9600 etu. Сигнал ошибки и повторение знака в соответствии с 7.3 является обязательным для карт с T = 0 и необязательным - для устройства сопряжения и остальных карт.
Только устройствам сопряжения разрешено начинать PPS-обмен:
- устройство сопряжения должно послать карте PPS-запрос;
- если карта получит ошибочный PPS-запрос, то она не должна посылать никакого ответа;
- если карта получит безошибочный PPS-запрос, то, если он окажется выполнимым, карта должна послать PPS-ответ, либо будет превышено время ожидания WT;
- в следующих трех случаях: превышения WT, ошибочного PPS-запроса, безуспешного PPS-обмена - устройство сопряжения должно выполнить деактивацию.
PPS-запрос и PPS-ответ, каждый в отдельности, состоят из одного начального байта PPSS, за которым следуют: байт формата PPS0, три необязательных байта параметров PPS1, PPS2 и PPS3 и контрольный байт PCK в качестве завершающего.
Байт PPSS идентифицирует PPS-запрос или PPS-ответ и равен 'FF'.
Байт PPS0 указывает через биты 5, 6 или 7, равные единице, на присутствие необязательных байтов PPS1, PPS2, PPS3 соответственно. Биты с 4 по 1 передают значение типа T для предложения протокола передачи. Бит 8 зарезервирован для использования в будущем и должен быть установлен в состояние 0.
Через байт PPS1 устройство сопряжения может предлагать карте значения параметров F и D. Эти значения должны находиться от Fd до Fi и от Dd до Di соответственно и быть закодированы тем же способом, что и в байте TA1. Если устройство сопряжения не посылает байт PPS1, значит, оно предлагает продолжить обмен при значениях Fd и Dd. Карта либо подтверждает оба значения путем эхоотражения байта PPS1 (тогда эти значения становятся значениями Fn и Dn), либо не посылает байт PPS1, чтобы продолжать обмен при значениях Fd и Dd (тогда Fn = 372, а Dn = 1).
Через байт PPS2 устройство сопряжения может предлагать использовать SPU. PPS2 должен быть закодирован тем же способом, что и первый байт TB для T = 15. Если устройство сопряжения не посылает байт PPS2 или оно посылает PPS2 = '00', значит, оно предлагает не использовать SPU.
Байт PPS3 зарезервирован для использования в будущем.
Результат выполнения операции "исключающее ИЛИ" над всеми байтами от PPSS до PCK включительно был нулевым. Любые другие значения считаются ошибочными.
![]() Рисунок 16 - Структура PPS-запроса и PPS-ответа
По определению PPS-запрос или PPS-ответ оканчивается 12etu после переднего фронта знака, передающего PCK.
PPS-обмен является успешным, если PPS-ответ удовлетворяет следующим условиям по отношению к PPS-запросу:
- биты с 1 по 4 PPS0_Response должны быть идентичны битам с 1 по 4 PPS0_Request;
- бит 5 PPS0_Response должен быть или идентичен биту 5 PPS0_Request, или установлен на 0:
- если бит 5 установлен на 1, то PPS1_Response должен быть идентичен PPS1_Request;
- если бит 5 установлен на 0, то PPS1_Response должен отсутствовать, что означает, что должны быть использованы значения Fd и Dd;
- бит 6 PPS0_Response должен быть или идентичен биту 6 PPS0_Request, или установлен на 0:
- если бит 6 установлен на 1, то PPS2_Response должен быть идентичен PPS2_Request;
- если бит 6 установлен на 0, то PPS2_Response должен отсутствовать, что означает, что карта не использует SPU;
- бит 7 PPS0_Response должен быть или идентичен биту 7 PPS0_Request, или установлен на 0:
- если бит 7 установлен на 1, то PPS3_Response должен быть идентичен PPS3_Request;
- если бит 7 установлен на 0, то PPS3_Response должен отсутствовать (точное значение зарезервировано для использования в будущем).
В большинстве случаев PPS-ответ идентичен PPS-запросу.
Данный раздел настоящего стандарта определяет структуру и обработку команд при полудуплексной передаче знаков. Эти команды инициирует устройство сопряжения. Раздел дает необходимые сведения по управлению передачей.
Протокол передачи должен начинаться в соответствии с 6.3.1. Структура знака должна быть в соответствии в 7.1 и 7.2, с использованием порядка кодирования, установленного начальным знаком TS, а также GT, как определено в 8.3. И карта, и устройство сопряжения должны использовать сигнал ошибки и повторение знака в соответствии с 7.3.
При использовании D = 64 устройство сопряжения должно обеспечивать временную задержку в пределах не менее 12 etu между передним фронтом последнего полученного знака и передним фронтом знака, отправленного для инициализации команды.
Байт интерфейса TC2, если он присутствует в Ответе-на-Восстановление, кодирует через восемь битов значение целого времени ожидания WI, исключая значение '00', зарезервированное для использования в будущем. Если TC2 отсутствует, то значением по умолчанию является WI = 10.
Время ожидания (см. 7.2) должно быть:
.10.3.1 Принципы
Устройство сопряжения инициирует каждую команду, посылая ее заголовок из пяти байтов, который сообщает карте, что нужно делать. Обработка команды продолжается передачей переменного числа байтов данных в одном направлении под управлением процедурных байтов, посылаемых картой.
Предполагается, что карте и устройству сопряжения известно априорное направление передачи для того, чтобы различать:
- команды для передачи входящих данных, когда байты данных вводятся в карту во время обработки, и
- команды для передачи исходящих данных, когда байты данных выводятся из карты во время обработки.
Заголовок состоит из пяти байтов, обозначенных как CLA, INS, P1, P2 и P3. Значения CLA, INS, P1 и P2 должны быть, как определено в ИСО/МЭК 7816-4:
- CLA обозначает класс команды. Значение 'FF' является ошибочным (зарезервировано для PPSS, см. 6.3.1 и 9.2).
Примечание - ИСО/МЭК 7816-4 применяет 'FF' как ошибочное значение для CLA;
- INS обозначает код команды. Значения '6X' и '9X' являются ошибочными для INS;
- P1, P2 обозначают параметры команды, например, ссылку, завершающую код команды;
- P3 кодирует число байтов данных, обозначенных от D1 до Dn, которые должны быть переданы во время обработки команды:
- в команде на передачу выходных данных байт P3 = '00' вводит передачу данных от карты, состоящих из 256 байтов;
- в команде на передачу входных данных байт P3 = '00' вводит отсутствие передачи данных.
10.3.3 Процедурные байты
После передачи заголовка как строки из пяти знаков устройство сопряжения должно ожидать знак, передающий процедурный байт. Существуют три типа процедурных байтов (см. таблицу 11):
- если значение равно '60', то это - байт NULL. Он не запрашивает никакого действия на передачу данных. Устройство сопряжения должно ожидать знак, передающий процедурный байт;
- если значение рано '6X' или '9X', исключая '60', то это - байт SW1. Он не запрашивает никакого действия на передачу данных. Устройство сопряжения должно ожидать знак, передающий байт SW2. На значение SW2 нет ограничений.
Примечание - ИСО/МЭК 7816-4 применяет '60' как ошибочное значение для SW1, так же как и любое значение, отличное от '9X' и '6X';
- если значением является значение INS, исключая '6X' и '9X', то это - байт ACK. Все оставшиеся байты данных, если какие-нибудь байты остаются, обозначаются от Di до Dn и должны быть переданы последовательно. Далее устройство сопряжения должно ожидать знак, передающий процедурный байт;
- если значением является "исключающее ИЛИ" для 'FF' со значением INS, исключая значения '6X' и '9X', то это - ACK байт. Только следующий байт данных, если он существует, обозначается Di и должен передаваться. Далее устройство сопряжения должно ожидать знак, передающий процедурный байт;
- любые другие значения являются ошибочными.
Таблица 11
При каждом процедурном байте карта может продолжить команду с помощью байтов NULL или ACK либо завершить ее с помощью байтов SW1, SW2, либо не реагировать на эту команду (WT будет превышено).
10.3.4 Байты состояния
Байты состояний SW1, SW2 показывают состояние карты в конце команды. Их значения должны быть, как определено в ИСО/МЭК 7816-4.
Примечание - ИСО/МЭК 7816-4 применяет шесть значений SW1, SW2, определенных для T = 0 в предыдущих изданиях (ИСО/МЭК 7816-3:1989 и ИСО/МЭК 7816-3:1997).
'9000' - команда выполнена нормально.
'6E00' - CLA не поддерживается.
'6D00' - CLA поддерживается, но INS не программируется или ошибочный.
'6B00' - CLA, INS поддерживаются, но P1, P2 некорректны.
'6700' - CLA, INS, P1, P2 поддерживаются, но P3 некорректен.
'6F00' - команда не поддерживается, и нет точного определения.
По определению команда заканчивается 12etu после переднего фронта знака, передающего SW2.
Данный раздел настоящего стандарта определяет структуру и обработку команд при полудуплексной передаче блоков. Блок - это строка байтов, передаваемых в асинхронных знаках. Эти команды может инициировать и устройство сопряжения, и карта. Раздел дает необходимые сведения по управлению передачей данных, в том числе по управлению потоками данных, сцеплению блоков и исправлению ошибок.
Основные характеристики протокола передачи следующие:
- протокол передачи начинается с первого блока, переданного устройством сопряжения. Протокол передачи продолжается чередованием права на передачу блока;
- блок представляет собой наименьшую единицу данных, которой можно обмениваться. Блок допускается использовать для передачи:
- данных приложения, явных для протокола;
- данных управления передачей, включая обработку ошибок, возникающих
при передаче;
- структура блока позволяет проверять полученный блок до обработки переданных данных.
Для протокола применен принцип эталонной модели OSI. Взаимодействия через границы уровней сведены к минимуму. Определены следующие три уровня:
- физический уровень обеспечивает передачу моментов, организованных в асинхронные знаки в соответствии с 11.2;
- уровень звена данных включает в себя знаковый и блоковый компоненты:
- знаковый компонент обеспечивает распознавание начала и конца блока
в соответствии с 11.5;
- блоковый компонент обеспечивает обмен блоками в соответствии с
11.6;
- прикладной уровень обрабатывает команды, что предполагает обмен, по крайней мере, единичными блоками или цепочками блоков в каждом направлении.
Протокол передачи должен начинаться в соответствии с 6.3.1. Структура знака должна быть в соответствии с 7.1 и 7.2, с использованием порядка кодирования, установленного начальным знаком TS (см. 8.1). Сигнал ошибки и повторение знака по 7.3 не следует применять. Существуют два типа разграничительного интервала:
- CGT - character guard time (разграничительный интервал знака) - минимальное время задержки между передними фронтами двух последовательных знаков в одном направлении передачи. Если N равно от 0 до 254, то CGT = GT, как определено в 8.3. Если N = 255, то CGT = 11 etu в обоих направлениях передачи;
- BGT - block guard time (разграничительный интервал блока) - минимальное время задержки между передними фронтами двух последовательных знаков, посланных в противоположных направлениях. BGT = 12 etu.
11.3.1 Общие положения
Как показано на рисунке 17, блок состоит из двух или трех полей:
- поля пролога, состоящего из байта с адресами узлов, байта управления протоколом и байта длины;
- информационного поля, содержащего байты от 0 до 254;
- поля эпилога, состоящего из одного или двух байтов.
Протокол передачи определяет три типа блоков:
- информационный блок (I-блок) применяют для передачи информации, предназначенной для использования прикладным уровнем. Кроме того, I-блок передает положительное или отрицательное подтверждение приема;
- блок готовности к приему (R-блок) используют для передачи положительного или отрицательного подтверждения приема. В R-блоке информационное поле должно отсутствовать;
- контролирующий блок (S-блок) используют для обмена управляющей информацией между устройством сопряжения и картой. В S-блоке информационное поле может присутствовать в зависимости от выполняемой им функции управления.
Примечание - При таком подходе разработку управления протоколом и прикладных частей микропрограммы возможно проводить независимо друг от друга.
11.3.2 Поле пролога
Байт с адресами узлов (NAD) позволяет идентифицировать источник и предполагаемый пункт назначения блока и может использоваться для различения множественных логических связей, когда они сосуществуют. Значение 'FF' считается ошибочным. Оно зарезервировано для использования в будущем в PPSS (см. 6.3.1 и 9.2). Биты с 1 по 3 кодируют адрес исходного узла (SAD), биты с 5 по 7 - адрес узла назначения (DAD). Биты 4 и 8 - нерекомендуемые. Карта должна установить их на 00. Устройство сопряжения должно их игнорировать.
Примечание - В первых двух изданиях ИСО/МЭК 7816-3 биты 4 и 8 были определены для управления нерекомендуемым использованием контакта C6.
Если адресация не применяется, то значения адресов SAD и DAD должны быть установлены на 000. Любое другое значение байта NAD, где SAD и DAD одинаковые, зарезервировано для использования в будущем.
В первом блоке, посылаемом устройством сопряжения, байт NAD должен устанавливать логическую связь путем сочетания адресов SAD и DAD. Последующие блоки, в которых байт NAD содержит такую же пару адресов SAD и DAD, ассоциируются с той же логической связью. Другие логические связи могут быть установлены в ходе обмена информацией с помощью других пар адресов SAD и DAD.
Примечание - Например, блоки, посылаемые устройством сопряжения, со значениями x для SAD и y для DAD и блоки, посылаемые картой, со значениями y для SAD и x для DAD относятся к логической связи, обозначаемой (x, y). Блоки, посылаемые устройством сопряжения, со значениями v для SAD и w для DAD и блоки, посылаемые картой, со значениями w для SAD и v для DAD относятся к другой логической связи (v, w).
11.3.2.2 Байт управления протоколом
Байт управления протоколом (PCB) передает информацию, необходимую для управления передачей, и определяет, является ли блок I-блоком, R-блоком или S-блоком.
В каждом I-блоке бит 8 байта PCB устанавливают в состояние 0, как показано на рисунке 18:
- бит 7 кодирует порядковый номер N(S);
- бит 6 - бит увеличения количества данных (M-бит);
- биты с 5 по 1 зарезервированы для использования в будущем и должны быть установлены на 0.
В каждом R-блоке биты 8, 7 байта PCB устанавливают в состояние 10, как показано на рисунке 19. Биты с 6 по 1 используют следующим образом:
- 0-N(R)-0000 означает подтверждение безошибочной работы;
- 0-N(R)-0001 указывает на ошибку избыточного кода или ошибку четности знака;
- 0-N(R)-0010 указывает на другие ошибки;
- все остальные значения зарезервированы для использования в будущем.
Примечание - Значение N(R) устанавливает, показывает ли R-блок ошибку или нет. Биты с 4 по 1 могут игнорироваться.
В каждом S-блоке биты 8, 7 байта PCB устанавливают на 11, как показано на рисунке 20. Биты с 6 по 1 используют следующим образом:
- 000000 означает RESYNCH-запрос, а 100000 - RESYNCH-ответ;
- 000001 означает IFS-запрос, а 100001 - IFS-ответ;
- 000010 означает ABORT-запрос, а 100010 - ABORT-ответ;
- 000011 означает WTX-запрос, а 100011 - WTX-ответ;
- 100100 - не рекомендуется использовать;
- любое другое значение битов зарезервировано для использования в будущем.
Примечание - Бит 6 является битом ответа.
11.3.2.3 Байт длины (LEN)
Байт длины (LEN) кодирует число байтов, присутствующих в информационном поле блока (см. также 11.4.2).
Значение '00' кодирует ноль: INF отсутствует.
Значения от '01' до 'FE' кодируют числа от 1 до 254: INF присутствует.
Значение 'FF' зарезервировано для использования в будущем.
11.3.3 Информационное поле
Использование информационного поля (INF) зависит от типа блока.
Если поле INF присутствует в I-блоке, то оно передает информацию приложения.
В R-блоке поле INF должно отсутствовать.
Если поле INF присутствует в S-блоке, то оно передает информацию, относящуюся не к приложению:
- поле INF должно присутствовать с единственным байтом в S-блоке, регулирующем IFS или WTX;
- поле INF должно отсутствовать в S-блоке, управляющем прерыванием цепочки блоков или возобновлением синхронизации.
Поле эпилога передает код блока с обнаружением ошибок. Для протокола применяют контроль либо продольным избыточным кодом (LRC), либо циклическим избыточным кодом (CRC).
LRC состоит из одного байта. Его значение должно быть таким, чтобы результат выполнения операции "исключающее ИЛИ" над всеми байтами блока от NAD до LRC был нулевым. Любые другие значения считаются ошибочными.
CRC состоит из двух байтов. Их значения определены в ИСО/МЭК 13239.
11.4.1 Специфичные байты интерфейса для протокола T = 1
Определены три специфичных байта интерфейса: первый TA для T = 1, первый TB для T = 1 и первый TC для T = 1 (см. 8.2.3). Они используются для установки параметров протокола в значениях не по умолчанию.
IFSC - максимальная длина информационного поля блоков, которые могут быть приняты картой. Начальное значение IFSC устанавливает первый байт TA для T = 1, если он имеется. Значение по умолчанию - 32.
IFSD - максимальная длина информационного поля блоков, которые могут быть приняты устройством сопряжения. Начальное значение IFSD - 32.
При запуске протокола передачи IFSC и IFSD инициализируют. В ходе протокола IFSC и IFSD могут регулироваться с помощью блоков S(IFS-запрос) и S(IFS-ответ), где поле INF состоит из одного байта, именуемого IFS. В любом случае первый байт TA для T = 1 и байты IFS должны кодироваться следующим образом:
- значения '00' и 'FF' зарезервированы для использования в будущем;
- значения от '01' до 'FE' кодируют числа от 1 до 254.
Примечание 1 - Настоящим стандартом рекомендовано значение для INF - не менее '20'.
Примечание 2 - Размер блока - суммарное число байтов, присутствующих в поле пролога, информационном поле и поле эпилога. Максимальный размер блока равен IFS плюс четыре или пять, в зависимости от длины эпилога.
11.4.3 Время ожидания
По определению CWT - максимальное время задержки между передними фронтами двух последовательных знаков в блоке (см. рисунок 21). Минимальное время задержки - это CGT (см. 11.2).
Примечание - Если существует потенциальная ошибка в длине, CWT можно использовать для распознавания конца блока.
![]() Биты с 4 по 1 первого байта TB для T = 1 кодируют CWI от нуля до пятнадцати. Значение CWI по умолчанию - 13. Время ожидания CWT вычисляют на основе числа CWI по следующей формуле:
CWT = (11 + 2CWI) etu.
Следовательно, минимальное значение CWT = 12 etu.
По определению BWT - максимальное время задержки между передним фронтом последнего знака блока, полученного картой, и передним фронтом первого знака следующего блока, посланного картой (см. рисунок 22). BWT используют для выявления нереагирующей карты. Минимальная задержка равна BGT (см. 11.2).
![]() Биты с 8 по 5 первого байта TB для T = 1 кодируют BWI от нуля до девяти. Значения от 'A' до 'F' зарезервированы для использования в будущем. Значение BWI по умолчанию - 4. BWT вычисляют на основе числа BWI по следующей формуле:
.Бит 1 первого байта TC для T = 1 указывает на код с обнаружением ошибок, который следует применять:
- CRC, если бит 1 установлен на 1;
- LRC (значение по умолчанию), если бит 1 установлен на 0.
Биты с 8 по 2 первого байта TC зарезервированы для использования в будущем и должны быть установлены на 0.
В начале протокола передачи право передачи принадлежит устройству сопряжения. Асинхронные знаки всегда сгруппированы в блоки.
После того как картой или устройством сопряжения был послан блок, отправитель переключается в режим приема. После того как картой или устройством сопряжения был получен блок, соответствующий числу байтов, кодированных в байте длины, право передачи переходит к получателю.
В описаниях протокола передачи используют следующие блоки.
I-блоки обозначаются следующим образом:
I[N(S), M] - I-блок, где N(S) - порядковый номер блока, M - бит увеличения количества данных (см. 11.6.2.2);
Na(S), Nb(S) - порядковые номера I-блоков, где индексы a и b служат для различения источников A и B.
R-блоки обозначаются следующим образом:
R[N(R)] - R-блок, где N(R) - номер ожидаемого I-блока.
S-блоки обозначаются следующим образом:
S(RESYNCH-запрос) - S-блок, запрашивающий возобновление синхронизации;
S(RESYNCH-ответ) - S-блок, подтверждающий возобновление синхронизации;
S(IFS-запрос) - S-блок, предлагающий максимальный размер информационного поля;
S(IFS-ответ) - S-блок, подтверждающий IFS;
S(ABORT-запрос) - S-блок, запрашивающий прерывание цепочки блоков;
S(ABORT-ответ) - S-блок, подтверждающий прерывание цепочки блоков;
S(WTX-запрос) - S-блок, запрашивающий продление времени ожидания;
S(WTX-ответ) - S-блок, подтверждающий продление времени ожидания;
S(Ошибка состояния VPP) - S-блок, сообщающий карте об ошибке состояния VPP.
Блоки S(IFS...) и S(WTX...) содержат поля INF, кодирование которых определяется правилами 3 и 4 по 11.6.2.3.
11.6.2 Безошибочная работа
11.6.2.1 Общие процедуры
В начале протокола передачи первый блок, посылаемый устройством сопряжения карте, должен быть либо I-, либо S-блоком.
После того как блок (I-, R- или S-блок) был отослан, до начала передачи следующего блока должно быть получено подтверждение приема, как описано ниже.
Каждый I-блок несет свой порядковый номер N(S). I-блоки, посылаемые устройством сопряжения, и I-блоки, посылаемые картой, подсчитывают независимо друг от друга. Номер N(S) подсчитывается по модулю 2 и кодируется одним битом. При запуске протокола или после возобновления синхронизации начальное значение N(S) = 0, далее значения N(S) чередуются после посылки каждого I-блока.
Каждый R-блок несет номер N(R), который представляет собой порядковый номер N(S) следующего ожидаемого I-блока. При безошибочной работе R-блоки используют для сцепления из I-блоков (см. 11.6.2.2).
Прием посланного I-блока подтверждается получением:
- либо I-блока, где номер N(S) отличается от номера N(S) полученного перед ним I-блока;
- либо R-блока, где номер N(R) отличается от номера N(S) посланного I-блока (см. правило 2.2 в 11.6.2.3).
S-блок не несет никакого номера. Блок S(... запрос) не несет подтверждения приема. Блок S(... ответ) подтверждает прием блока S(... запрос).
С помощью функции сцепления устройство сопряжения или карта могут передавать информацию (данные приложения) длиной более чем IFSC или IFSD. Если устройство сопряжения или карта должны передать информацию, по длине превышающую IFSD или IFSC соответственно, то тот или другой должен разделить информацию на порции длиной меньше или равной IFSD или IFSC и посылать каждую порцию в блоке, используя функцию сцепления.
Функция сцепления показана на рисунке 23.
![]() Сцепление из I-блоков управляется M-битом в байте PCB. Значение M-бита указывает на состояние I-блока следующим образом:
- если бит M = 1, то I-блок привязан к следующему блоку, который должен быть I-блоком;
- если бит M = 0, то I-блок не привязан к следующему блоку.
Если получатель безошибочно принимает I-блок увеличения количества данных, то он посылает блок R[N(R)], где номер N(R) равен номеру N(S) ожидаемого I-блока.
Примечание - В пределах цепочки можно использовать I-блоки с байтом LEN = '00' (см. сценарий 7 в приложении A).
Правило 1 - Устройство сопряжения посылает первый блок - либо I-блок с номером N(S) = 0, обозначаемый как I(0, M), либо S-блок.
Правило 2.1 - Прием блока I[Na(S), 0], посланного источником A, подтверждается блоком I[Nb(S), M], посланным источником B для передачи данных приложения и указания на готовность к приему следующего I-блока от источника A.
Правило 2.2 - Прием блока I[Na(S), 1], посланного источником A, подтверждается блоком R[Nb(R)] [где номер Nb(R) не равен номеру Na(S)], посланным источником B для указания на то, что полученный блок был безошибочным, и на готовность к приему следующего I-блока от источника A.
Примечание - Сцепление возможно одновременно только в одном направлении.
Правило 3 - Если для обработки только что полученного I-блока карте требуется время более чем BWT, то она посылает блок S(WTX-запрос), где поле INF передает единственный байт, кодирующий двоичный целочисленный множитель значения BWT. Устройство сопряжения должно подтвердить прием блоком S(WTX-ответ) с таким же полем INF.
Предоставленное время начинается на переднем фронте последнего знака блока S(WTX-ответ).
Правило 4 - Карта посылает блок S(IFS-запрос) для указания нового размера IFSC, который она может поддерживать. Устройство сопряжения должно подтвердить прием блоком S(IFS-ответ) с таким же полем INF. Устройство сопряжения оценивает новый размер IFSC как правильный до тех пор, пока другой размер IFSC не будет указан еще одним блоком S(IFS-запрос).
Устройство сопряжения посылает блок S(IFS-запрос) для указания нового размера IFSD, который оно может поддерживать. Карта должна подтвердить прием блоком S(IFS-ответ) с таким же полем INF. Карта оценивает новый размер IFSD как правильный до тех пор, пока другой размер IFSD не будет указан еще одним блоком S(IFS-запрос).
Кодирование размеров IFSC и IFSD в поле INF - в соответствии с 11.4.2.
Правило 5 - На сцепление указывает M-бит, тогда I[N(S), 0] - не цепочечный блок или последний блок цепочки; I[N(S), 1] - часть цепочки, и за этим блоком должен следовать, по меньшей мере, один связанный с ним блок.
Блок R[N(R)] запрашивает передачу следующего цепочечного I-блока I[N(S) = N(R), ...] и подтверждает прием полученного цепочечного I-блока I[HE N(R), 1].
11.6.3 Обработка ошибок
Задачами блокового компонента являются: передача блоков, выявление ошибок передачи и очередности, обработка ошибок такого рода и возобновление синхронизации протокола передачи. Блоковый компонент уровня звена данных должен быть способен обрабатывать следующие ошибки:
- превышение BWT - карта не посылает никакого знака в пределах установленного времени задержки;
- прием неразрешенного блока. Например:
- с ошибкой(ами) четности знака(ов);
- с ошибкой, выявляемой по избыточному коду;
- с недействительным байтом PCB (вследствие неизвестного
кодирования);
- с недействительным байтом LEN (из-за ошибки передачи либо
несовместимости с типом блока или с размером IFSC или IFSD);
- с потерей синхронизации из-за несогласованности размера блока и
значения, указываемого байтом LEN;
- при неудачной попытке получить соответствующий блок S(... ответ)
после посылки блока S(... запрос).
Возобновление синхронизации протокола может быть предпринято на трех последовательных ступенях. Если на одной ступени попытка не приводит к успеху, то пробуют следующую ступень.
Для устройства сопряжения эти три ступени представляют собой следующее:
- повторную передачу блоков;
- использование блока S(RESYNCH-запрос);
- восстановление или деактивацию карты.
Для карты тремя ступенями являются:
- повторная передача блоков;
- использование блока S(RESYNCH-ответ);
- отсутствие воздействия со стороны устройства сопряжения, без него карта перестает реагировать.
Правило 6 - Блок S(RESYNCH-запрос) может быть послан только устройством сопряжения с целью возобновления синхронизации и инициировании возврата параметров связи протокола передачи к их начальным значениям.
Правило 6.1 - Когда приемник обнаруживает потерю синхронизации, то право передачи возвращается к приемнику, если сигнал на I/O отсутствует в течение времени, превышающего большее из CWT или BGT.
Правило 6.3 - После получения устройством сопряжения блока S(RESYNCH-ответ) протокол передачи инициируется.
Правило 6.4 - После того как максимум три раза подряд устройству сопряжения не удается достигнуть предполагаемого возобновления синхронизации путем посылки блока S(RESYNCH-запрос), оно применяет либо восстановление карты, либо деактивацию.
Правило 6.5 - Если получен блок S(RESYNCH-запрос), то отосланный перед ним блок рассматривается как неполученный.
Правило 7.1 - Если был послан I-блок и получен неразрешенный блок или происходит превышение BWT (по отношению к устройству сопряжения), то посылается R-блок, который запрашивает своим номером N(R) ожидаемый I-блок с номером N(S) = N(R).
Правило 7.2 - Если был послан R-блок и получен неразрешенный блок или происходит превышение BWT (по отношению к устройству сопряжения), то этот R-блок передается повторно.
Правило 7.3 - Если был послан блок S(... запрос) и полученный ответ не является блоком S(... ответ) или происходит превышение BWT (только по отношению к устройству сопряжения), то блок S(... запрос) передается повторно.
Если был послан блок S(... ответ) и получен неразрешенный блок или происходит превышение BWT (только по отношению к устройству сопряжения), то посылается R-блок.
Правило 7.4.1 - В начале протокола передачи, после безуспешной попытки получить безошибочный блок, устройство сопряжения предпринимает максимум еще две попытки подряд перед восстановлением или деактивацией карты.
Правило 7.4.2 - В ходе протокола, если устройство сопряжения терпит неудачу в попытке получить безошибочный блок, оно предпринимает максимум еще две попытки подряд перед посылкой блока S(RESYNCH-запрос).
Правило 7.4.3 - Если карте не удается принять безошибочный блок после второй попытки подряд, то она остается в режиме приема.
Правило 7.6 - Если на первый блок, посланный устройством сопряжения, не приходит ответ в пределах времени BWT, то устройство сопряжения посылает блок R(0).
Правило 8 - Если карта посылает блок S(IFS-запрос), а получает неразрешенный блок, то она повторно передает максимум еще один блок S(IFS-запрос) для того, чтобы добиться получения блока S(IFS-ответ). После второй неудачной попытки карта остается в режиме приема.
Правило 9 - Прерывание цепочки блоков может быть инициировано либо отправителем, либо получателем цепочки с помощью посылки блока S(ABORT-запрос), в ответ на который должен поступить блок S(ABORT-ответ), после чего может быть послан R-блок в зависимости от того, есть ли необходимость возвратить право посылать.
Примечание - Прерывание сцепления может произойти из-за неисправностей карты физического характера, например из-за сбоя памяти.
12.1.1 Пара команда-ответ
Единицей данных протокола приложения является либо командный APDU, либо ответный APDU. Шаг в протоколе передачи состоит из передачи командного APDU, обработки его в получателе и возврата ответного APDU. Такая пара APDU называется парой команда-ответ.
Как показано на рисунке 24, каждый командный APDU, определенный в настоящем стандарте, состоит из:
- обязательного заголовка из четырех байтов, обозначенных как CLA INS P1 P2;
- условного тела переменной длины.
Как показано на рисунке 25, каждый ответный APDU, определенный в настоящем стандарте, состоит из:
- условного тела переменной длины;
- обязательного завершителя из двух байтов, обозначенных как SW1 SW2 и кодирующих состояние получателя после обработки команды.
Значения заголовка команды и завершителя ответа должны быть, как определено в ИСО/МЭК 7816-4. Если операция прерывается, то карта перестает реагировать. Однако если возникает ответный APDU, то тело ответа должно отсутствовать и SW1 SW2 должны показывать ошибку.
12.1.2 Поля данных в паре команда-ответ
Каждая пара команда-ответ может содержать в себе поле данных команды и/или поле данных ответа:
- Nc - число байтов в поле данных команды. Если Nc /= 0, то поле Lc присутствует для кодирования Nc и поле данных команды состоит из последовательных байтов Nc. Если Nc = 0, то и поле Lc, и поле данных команды отсутствует;
- Ne - максимальное число байтов, ожидаемых в поле данных ответа. Если Ne /= 0, то поле Le присутствует для кодирования Ne. Если Ne = 0, то поле Le отсутствует;
- Nr - число байтов в поле данных ответа. Nr должно быть от нуля до Ne. Если Nr = 0, то поле данных ответа отсутствует.
Случай 1 - Nc = Nr = 0. Командный APDU состоит из заголовка, поля Lc, поля данных команды, а поле Le отсутствует. Ответный APDU состоит из завершителя, а поле данных ответа отсутствует.
Случай 2 - Nc = 0, Nr /= 0. Командный APDU состоит из заголовка и поля Le. Поле Lc и поле данных команды отсутствуют. Ответный APDU состоит из поля данных ответа и завершителя.
Случай 3 - Nc /= 0, Nr = 0. Командный APDU состоит из заголовка, поля Lc и поля данных команды, а поле Le отсутствует. Ответный APDU состоит из завершителя, а поле данных ответа отсутствует.
Случай 4 - Nc /= 0, Nr /= 0. Командный APDU состоит из заголовка, поля Lc, поля данных команды и поля Le. Ответный APDU состоит из поля данных ответа и завершителя.
В таблице 12 суммированы четыре возможных случая пары команда-ответ.
Таблица 12
На рисунке 26 показаны 4 структуры командных APDU в соответствии с предыдущими четырьмя случаями:
- командный APDU в случае 1 состоит из заголовка;
- командный APDU в случае 2 состоит из заголовка и поля Le;
- командный APDU в случае 3 состоит из заголовка, поля Lc и поля данных;
- командный APDU в случае 4 состоит из заголовка, поля Lc, поля данных и поля Le.
Следовательно, в любой паре команда-ответ отсутствие поля Le в командном APDU является стандартным способом для приема отсутствующего поля данных ответа в ответном APDU.
12.1.3 Порядок кодирования для командных APDU
Рисунок 27 иллюстрирует командный APDU как строку из n байтов. Заголовок состоит из первых четырех байтов, а именно CLA INS P1 P2. Тело состоит из всех последовательных байтов, а именно от C(5) до C(n), если они имеются.
В случае 1 тело отсутствует, следовательно, n = 4;
В случае 2 поле Le или короткое (случай 2S), или расширенное (случай 2E):
- случай 2S - короткое поле Le состоит из C(5), кодирования Ne от 1 до 256 ('00' означает максимум, т.е. 256), следовательно, n = 5;
- случай 2E - расширенное поле Le состоит из C(6) = '00', C(6), C(7), кодирования Ne от 1 до 65536 ('0000' означает максимум, т.е. 65536), следовательно, n = 7.
В случае 3 поле Lc или короткое (случай 3S), или расширенное (случай 3E):
- случай 3S - короткое поле Lc состоит из C(5) /= 0, кодирования Nc от 1 до 255. Поле данных состоит из C(6) - C(5 + Nc), следовательно, n = 5 + C(5);
- случай 3E - расширенное поле Lc состоит из C(5) = '00' и C(6) C(7) /= '0000', кодирования Nc от 1 до 65535. Поле данных состоит из C(8) - C(7 + Nc), следовательно, n = 7 + (C(6)C(7)).
В случае 4 оба поля длины или короткие (случай 4S), или расширенные (случай 4E):
- случай 4S - короткое поле Lc состоит из C(5) /= 0, кодирования Nc от 1 до 255. Поле данных состоит из C(6) - C(5 + Nc). Короткое поле Le состоит из C(6 + Nc), кодирования Ne от 1 до 256 ('00' означает максимум, т.е. 256), следовательно, n = 6 + C(5);
- случай 4E - расширенное поле Lc состоит из C(5) = '00' и C(6) C(7) /= '0000', кодирования Nc от 1 до 65535. Поле данных состоит из C(8) - C(7 + Nc). Расширенное поле Le состоит из C(8 + Nc), C(9 + Nc), кодирования Ne от 1 до 65536 ('0000' означает максимум, т.е. 65536), следовательно, n = 9 + (C(6) C(7)).
В таблице 13 суммировано декодирование командного APDU в соответствии с семью случаями.
Таблица 13
Случаи 1, 2S, 3S и 4S применяют ко всем картам. Случаи 2E, 3E и 4E применяют к картам, явно определяющим свои функциональные возможности оперирования расширенными полями длины (функциональные возможности карт должны быть в соответствии с ИСО/МЭК 7816-4).
12.2.1 Общие положения
Данный подраздел определяет преобразование блока данных прикладного протокола (APDU) в блок данных протокола передачи (TPDU) при T = 0, используя при необходимости команды GET RESPONSE и ENVELOPE (см. ИСО/МЭК 7816-4). Например, пара команда-ответ в случае 4S обрабатывается как две последовательные пары командного и ответного TPDU: вторая команда TPDU - команда GET RESPONSE. В таблице 14 суммированы значения завершителя ответа (см. ИСО/МЭК 7816-4), используемые далее для преобразования.
Таблица 14
для преобразования протоколом T = 0
Последовательные межотраслевые пары команда-ответ могут быть сцеплены: в первом командном APDU CLA = 0xx1 xxxx до предпоследнего, а в последнем CLA = 0xx0 xxxx. Остальные шесть битов остаются постоянными в цепочке (сцепление должно быть, как определено в ИСО/МЭК 7816-4):
- если в межотраслевой паре команда-ответ цепочка (CLA = 0xx1 xxxx) обрабатывается как две или более последовательные пары командного и ответного TPDU, то в командных TPDU все CLA должны быть установлены на одинаковое значение, т.е. 0xx1 xxxx;
- если последняя межотраслевая пара команда-ответ цепочки (бит 5 в CLA переведен из 1 в 0, т.е. CLA = 0xx0 xxxx) обрабатывается как две или более последовательные пары командного и ответного TPDU, то цепочка оканчивается последней парой командного и ответного TPDU. Следовательно, для проведения корректной индикации командных TPDU CLA с первого до предпоследнего должны быть установлены на 0xx1 xxxx, а последний CLA - на 0xx0 xxxx.
В случаях 4S, 2E, 3E и 4E, если карта поддерживает сцепление команд (см. ИСО/МЭК 7816-4), для любой межотраслевой пары команда-ответ с CLA = 0xx0 xxxx, независимо от того, имеется ли бит 5 в предыдущем CLA, вышеописанное правило должно применяться, когда это целесообразно. Таким образом, сцепление команд позволяет карте знать, является ли командный TPDU последним или нет, для того чтобы не использовать указание о предупреждении до наступления последнего ответного TPDU.
12.2.2 Случай 1
Командный APDU преобразуется в командный TPDU с P3 = '00'.
Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
12.2.3 Случай 2S
Короткое поле Le состоит из одного байта: C(5) с любым значением для кодирования Ne от 1 до 256 ('00' означает максимум, т.е. 256). Командный APDU преобразуется в командный TPDU без каких-либо изменений.
Ответный TPDU преобразуется в ответный APDU в соответствии с вариантом принятия Ne и согласно обработке команды.
Случай 2S.1 - Операция завершена; Ne принято
Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Случай 2S.2 - Операция прервана; Ne окончательно не принято
Карта не принимает Ne и не поддерживает услугу по предоставлению данных, если длина указана неверно. Ответный TPDU с карты указывает, что операция прервана из-за неверно указанной длины: SW1 SW2 = '6700'
Случай 2S.3 - Операция прервана; Ne не принято, Na указано
Карта не принимает Ne, и ответный TPDU с карты указывает, что операция прервана: SW1 = '6C' (неверная длина) и SW2 принимает любые значения для кодирования Na от 1 до 256 ('00' означает 256), а именно точное число доступных байтов данных.
Карта должна быть готовой к приему той же команды с P3 = SW2.
Ответный TPDU состоит из Na байтов данных, следующих за SW1 SW2.
Если Na <= Ne, то ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Если Na > Ne, то ответный TPDU преобразуется в ответный APDU путем сохранения только первых Ne байтов ответного APDU и двух байтов состояния SW1 SW2.
Случай 2S.4 - SW1 SW2 = '9XYZ', исключая '9000'
Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
12.2.4 Случай 3S
Короткое поле Lc состоит из одного байта: C(5) /= '00' для кодирования Nc от 1 до 255. Командный APDU преобразуется в командный TPDU без какого-либо изменения.
Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
12.2.5 Случай 4S
Короткое поле Lc состоит из одного байта: C(5) /= '00' для кодирования Nc от 1 до 255. Короткое поле Le состоит из одного байта: C(n) с любым значением для кодирования Ne от 1 до 256 ('00' означает максимум, т.е. 256). Командный APDU преобразуется в командный TPDU путем отсечения поля Le, т.е. C(n).
Случай 4S.1 - Операция прервана
Первый ответный TPDU с карты указывает на то, что операция прервана: SW1 = '6X', исключая '61', '62' и '63'. Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Случай 4S.2 - Операция завершена
Первый ответный TPDU с карты указывает, что операция завершена: SW1 SW2 = '9000'. Карта должна быть готова к приему командного TPDU команды GET RESPONSE с P3 = C(n).
В зависимости от второго ответного TPDU с карты операция будет продолжена в соответствии с вышеуказанными случаями 2S.1, 2S.2 и 2S.4.
Случай 4S.3 - Операция завершена с предоставлением дополнительной информации
Первый ответный TPDU с карты указывает, что операция завершена и карта дает информацию: SW1 = '61' и SW2 принимает любое значение для кодирования Nx от 1 до 256 ('00' означает 256), а именно число все еще доступных дополнительных байтов данных. Карта должна быть готова к приему командного TPDU команды GET RESPONSE с P3, установленным на минимум Nx и Ne.
Второй ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Случай 4S.4 - SW1 SW2 = '62XY' либо '63XY', либо '9XYZ', исключая '9000'
Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Примечание - В случае 4S использование '62XY' и '63XY' не рекомендуется в первом ответном TPDU.
12.2.6 Случай 2E
Расширенное поле Le состоит из трех байтов: C(5) C(6) C(7). C(5) = '00', а C(6) C(7) имеют любое значение для кодирования Ne от 1 до 65536 ('0000' означает максимум, т.е. 65536).
Случай 2E.1 - Ne <= 256, C(5) = '00', C(6) C(7) от '0001' до '0100'
Так как Ne принимает значения от 1 до 256, то командный APDU должен быть преобразован в командный TPDU с P3 = C(7). Операция должна продолжаться в соответствии со случаем 2S.
Случай 2E.2 - Ne > 256, C(5) = '00', C(6) C(7) = '0000' либо от '0101' до 'FFFF'
Так как Ne > 256, командный APDU должен быть преобразован в командный TPDU с P3 = '00'.
a) Если первый ответный TPDU с карты указывает, что операция прервана из-за неверной длины (SW1 SW2 = '6700'), то ответный TPDU должен быть преобразован в ответный APDU без какого-либо изменения.
b) Если первый ответный TPDU с карты указывает, что операция прервана из-за неверной длины и карта дает информацию: SW1 = '6C' и SW2 имеет любое значение для кодирования Na от 1 до 256 ('00' означает 256), а именно точное число доступных байтов данных, то операция должна быть продолжена, как описано в случае 2S.3
c) Если первый ответный TPDU - 256 байтов данных, следующих за SW1 SW2 = '9000', то это означает, что у карты больше нет 256 байтов данных и/или она не поддерживает команду GET RESPONSE. Далее ответный TPDU должен быть преобразован в ответный APDU без какого-либо изменения.
d) Если первый или последующие TPDU с карты - SW1 = '61', то SW2 с любым значением кодирует Nx от 1 до 256 ('00' означает 256), а именно число все еще доступных дополнительных байтов данных, полученных в предыдущих ответных TPDU.
Если Nm = 0, то ответный APDU должен быть последовательным соединением байтов данных всех полученных ответных TPDU вместе с завершителем последнего полученного ответного TPDU.
Если Nm > 0, то карта должна быть готова к приему командного TPDU команды GET RESPONSE с P3, установленным на минимум Nx и Nm. Соответствующий ответный TPDU с карты должен обрабатываться:
- в соответствии со случаем d), если SW1 = '61';
- как указано выше, когда Nm = 0, если SW1 SW2 = '9000'.
12.2.7 Случай 3E
Расширенное поле Lc состоит из трех байтов: C(5) C(6) C(7). C(5) = '00', а C(6) C(7) /= '0000' для кодирования Nc от 1 до 65535.
Случай 3E.1 - Nc от 1 до 255, C(5) C(6) = '0000', C(7) /= '00'
Так как Nc принимает значения от 1 до 255, то командный APDU преобразуется в командный TPDU с P3 = C(7).
Ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Случай 3E.2 - Nc > 255, C(5) = '00', C(6) /= '00', C(7) - любое значение
Командный APDU должен быть разделен на последовательные сегменты из не менее 256 байтов, которые должны быть посланы в порядке их следования в байты данных команды ENVELOPE командных TPDU. Отсутствие байтов данных означает "конец строки данных".
Если первый ответный TPDU с карты указывает, что карта не поддерживает команду ENVELOPE (SW1 SW2 = '6D00'), то TPDU должен быть преобразован в ответный APDU без какого-либо изменения.
Если первый TPDU с карты указывает, что карта не поддерживает команду ENVELOPE (SW1 SW2 = '9000'), то карта должна быть готова к приему дальнейшей команды ENVELOPE, при необходимости.
Ответный TPDU, соответствующий последней команде ENVELOPE, преобразуется в ответный APDU без какого-либо изменения.
12.2.8 Случай 4E
Расширенное поле Lc состоит из трех байтов: C(5) C(6) C(7). C(5) = '00', а C(6) C(7) /= '0000' для кодирования Nc от 1 до 65535. Расширенное поле Le состоит из двух байтов: C(n - 1) C(n) с любым значением для кодирования Ne от 1 до 65536 ('0000' означает максимум, т.е. 65536).
Случай 4E.1 - Nc < 256, C(5) C(6) = '0000', C(7) /= '00'
Так как Nc принимает значения от 1 до 255, то командный APDU преобразуется в командный TPDU с P3 = C(7) и добавлением Nc байтов данных. Поле Le, т.е. C(n - 1) C(n), отсекается.
a) Если SW1 = '6X', исключая '61', '62' и '63' в первом ответном TPDU с карты, то ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
b) Если SW1 SW2 = '9000' в первом ответном TPDU с карты, то:
если Ne <= 256, т.е. C(n - 1) C(n) от '0001 ' до '0100', то карта должна быть готова к приему команды GET RESPONSE командного TPDU с P3 = C(n). Последующая операция должна быть в соответствии со случаями 2S.1, 2S.2, 2S.3 и 2S.4, описанными выше;
если Ne > 256, т.е. C(n - 1) C(n) либо '0000', либо > '0100', то карта должна быть готова к приему команды GET RESPONSE командного TPDU с P3 = '00'. Последующая операция должна быть в соответствии со случаем 2E.2, описанным выше.
c) Если SW1 = '61' в первом ответном TPDU с карты, то операция должна продолжаться в соответствии со случаем 2E.2 d), указанным выше.
d) Если SW1 SW2 = '62XY', или '63XY', или '9XYZ', исключая '9000' в первом ответном TPDU с карты, то ответный TPDU преобразуется в ответный APDU без какого-либо изменения.
Примечание - В случае 4E использование '62XY' и '63XY' не рекомендуется до последнего ответного TPDU.
Случай 4E.2 - Nc > 255, C(5) = '00', C(6) /= '00', C(7) - любое значение
Так как Nc >= 256, то операция должна продолжаться в соответствии со случаем 3E.2, описанным выше, пока командный APDU не будет полностью передан карте. Далее операция должна продолжаться, как описано выше в случаях 4E.1 a), b), c) и d).
12.3.1 Общие положения
Данный подраздел определяет преобразование блока данных прикладного протокола (APDU) в информационное поле блока данных протокола передачи (TPDU) при помощи протокола T = 1.
12.3.2 Случай 1
Командный APDU преобразуется в информационное поле I-блока без какого-либо изменения.
Информационное поле I-блока, получаемого в ответе, преобразуется в ответный APDU без какого-либо изменения.
12.3.3 Случай 2S и 2E
Командный APDU преобразуется в информационное поле I-блока без какого-либо изменения.
Ответный APDU состоит:
- либо из информационного поля I-блока, получаемого в ответе,
- либо из сцепления информационных полей последовательных I-блоков, получаемых в ответе (эти блоки должны быть связаны в цепочку):
12.3.4 Случай 3S и 3E
Командный APDU преобразуется без какого-либо изменения
- либо в информационное поле одного I-блока,
- либо в сцепление информационных полей последовательных I-блоков, которые должны связываться в цепочку:
Информационное поле I-блока, получаемого в ответе, преобразуется в ответный APDU без какого-либо изменения.
12.3.5 Случай 4S и 4E
Командный APDU преобразуется без какого-либо изменения
- либо в информационное поле одного I-блока,
- либо в сцепление информационных полей последовательных I-блоков, которые должны связываться в цепочку:
Ответный APDU состоит
- либо из информационного поля I-блока, получаемого в ответе,
- либо из сцепления информационных полей последовательных I-блоков, получаемых в ответе. Эти блоки должны быть связаны в цепочку:
(справочное)
СЦЕНАРИИ ДЛЯ T = 1
A.1 Обозначения
В настоящем приложении, в дополнение к обозначениям, введенным в 11.6.1, применены следующие обозначения:
A.2 Безошибочная работа (в соответствии с правилами по 11.6.2.3)
A.2.1 Обмен I-блоками
A.2.2 Продление времени ожидания
Сценарий 2 (правило 3) - Карта запрашивает продление времени ожидания.
A.2.3 Регулирование IFS
Сценарий 3 (правило 4) - Карта инициирует регулирование IFS.
Сценарий 4 (правило 4) - Устройство сопряжения инициирует регулирование IFS.
A.2.4 Функция сцепления
Сценарий 5 (правила 2.2 и 5) - Устройство сопряжения посылает цепочку.
Сценарий 6 (правила 2.2 и 5) - Карта посылает цепочку.
Сценарий 7 (примечание к 11.6.2.2)
Карта использует M-бит, чтобы добиться подтверждения приема посланного I-блока.
A.3 Обработка ошибок (в соответствии с правилами по 11.6.3.2)
A.3.1 Обмен I-блоками
Сценарий 8 (правило 7.5) - При запуске протокола передачи.
Сценарий 9 (правила 7.1 и 7.6)
Сценарий 11 (правила 7.1 и 7.6)
A.3.2 Продление времени ожидания
Сценарий 14 (правило 7.3) - Карта запрашивает продление времени ожидания.
Сценарий 15 (правило 7.3) - Карта запрашивает продление времени ожидания.
A.3.3 Регулирование IFS
Сценарий 16 (правило 7.3) - Карта запрашивает регулирование IFS.
Сценарий 17 (правило 7.3) - Карта запрашивает регулирование IFS.
Сценарий 18 (правило 7.3) - Карта запрашивает регулирование IFS.
Сценарий 19 (правило 7.3) - Карта запрашивает регулирование IFS.
Сценарий 20 (правило 7.3) - Карта запрашивает регулирование IFS.
A.3.4 Функция сцепления
A.3.4.1 Устройство сопряжения посылает цепочку
Сценарий 21 (правило 7.1)
Сценарий 22 (правило 7.1)
A.3.4.2 Карта посылает цепочку
Сценарий 23 (правило 7.1)
Сценарий 24 (правило 7.1)
A.3.4.3 Отправитель цепочки инициирует прерывание цепочки
Сценарий 25 (правило 9) - Устройство сопряжение инициирует прерывание цепочки.
Сценарий 26 (правило 9) - Карта инициирует прерывание цепочки.
A.3.4.4 Получатель цепочки инициирует прерывание цепочки
Сценарий 27 (правило 9) - Карта инициирует прерывание цепочки.
Сценарий 28 (правило 9) - Устройство сопряжения инициирует прерывание цепочки.
A.3.5 Возобновление синхронизации
Сценарий 29 (правило 6.2)
Сценарий 30 (правила 6.2 и 7.3)
Сценарий 32
Сценарий 33 (правила 7.1 и 7.4.1) - При запуске протокола.
(справочное)
НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ
Таблица ДА.1
--------------------------------
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/38/gost_20250.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||