ГОСТ Р ИСО/МЭК 7816-7-2011 Карты идентификационные. Карты на интегральных схемах с контактами. Часть 7. Межотраслевые команды языка структурированных запросов для карт (SCQL)

Обложка ГОСТ Р ИСО/МЭК 7816-7-2011 Карты идентификационные. Карты на интегральных схемах с контактами. Часть 7. Межотраслевые команды языка структурированных запросов для карт (SCQL)
Обозначение
ГОСТ Р ИСО/МЭК 7816-7-2011
Наименование
Карты идентификационные. Карты на интегральных схемах с контактами. Часть 7. Межотраслевые команды языка структурированных запросов для карт (SCQL)
Статус
Действует
Дата введения
2013.01.01
Дата отмены
-
Заменен на
-
Код ОКС
35.240.15


ГОСТ Р ИСО/МЭК 7816-7-2011


НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Карты идентификационные

КАРТЫ НА ИНТЕГРАЛЬНЫХ СХЕМАХ С КОНТАКТАМИ

Часть 7

Межотраслевые команды языка структурированных запросов для карт (SCQL)

Identification cards. Integrated circuit(s) cards with contacts. Part 7. Interindustry commands for Structured Card Query Language (SCQL)



ОКС 35.240.15
ОКП 40 8470

Дата введения 2013-01-01

Предисловие

Предисловие

1 ПОДГОТОВЛЕН Федеральным государственным унитарным предприятием "Всероссийский научно-исследовательский институт стандартизации и сертификации в машиностроении" (ВНИИНМАШ) и Техническим комитетом по стандартизации ТК 22 "Информационные технологии" на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 22 "Информационные технологии"

3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 13 декабря 2011 г. N 1010-ст

4 Настоящий стандарт идентичен международному стандарту ИСО/МЭК 7816-7:1999* "Карты идентификационные. Карты на интегральных схемах с контактами. Часть 7. Межотраслевые команды языка структурированных запросов для карт (SCQL)" (ISO/IEC 7816-7:1999 "Identification cards - Integrated circuit(s) cards with contacts - Part 7: Interindustry commands for Structured Card Query Language (SCQL)", IDT).
________________
* Доступ к международным и зарубежным документам, упомянутым здесь и далее по тексту, можно получить перейдя по ссылке на сайт . - .


При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА

5 ВВЕДЕН ВПЕРВЫЕ

6 Некоторые положения международного стандарта, указанного в пункте 4, могут являться объектом патентных прав. Международная организация по стандартизации (ИСО) и Международная электротехническая комиссия (МЭК) не несут ответственности за идентификацию подобных патентных прав

7 ПЕРЕИЗДАНИЕ. Декабрь 2018 г.


Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)

Введение


Настоящий стандарт - один из серии стандартов, описывающих параметры карт на интегральных схемах с контактами и их применение в рамках обмена информацией.

Данные идентификационные карты предназначены для обмена информацией, основанного на согласованиях между внешним источником и интегральной схемой карты. В результате такого обмена карта поставляет информацию (результаты вычислений, хранимые данные) и (или) изменяет свое содержимое (память данных, память событий).

ИСО/МЭК 7816-7:1999 был подготовлен подкомитетом N 17 "Карты и идентификация личности" совместного Технического комитета N 1 ИСО/МЭК "Информационные технологии".

Во время подготовки настоящего стандарта была собрана информация относительно соответствующих патентов, от которых могло зависеть применение данного стандарта. Соответствующие патенты были идентифицированы во Франции. Обладателем патента является Gemplus. Однако ИСО не может дать официальную или полную информацию о данных, действительности или области применения патента или об аналогичных правах.

Обладатель данного патента заявил о предоставлении лицензии в приемлемые сроки, чтобы допустить применение настоящего стандарта на взаимовыгодных условиях.

Информацию можно получить по адресу:

GEMPLUS

В.Р. 100

13881 GEMENOS CEDEX
FRANCE

1 Область применения


Настоящий стандарт устанавливает:

- понятие баз данных SCQL (SCQL - язык структурированных запросов для карты, основанный на SQL, см. ИСО 9075);

- соответствующие межотраслевые расширенные команды.

2 Нормативные ссылки


В настоящем стандарте использованы нормативные ссылки на следующие стандарты*:
_______________
Для соблюдения требований настоящего стандарта, выраженных в датированных ссылках, рекомендуется использовать только указанные ссылочные стандарты.

* Таблицу соответствия национальных стандартов международным см. по ссылке. - .



ISO/IEC 9075:1992 Information technology - Database languages - SQL2 [Информационные технологии. Языки баз данных. SQL2 (язык структурированных запросов)]
_______________
Отменен. Действуют ИСО/МЭК 9075-1:2016, ИСО/МЭК 9075-2:2016, ИСО/МЭК 9075-3:2016, ИСО/МЭК 9075-4:2016, ИСО/МЭК 9075-9:2016, ИСО/МЭК 9075-10:2016, ИСО/МЭК 9075-11:2016, ИСО/МЭК 9075-13:2016, ИСО/ МЭК 9075-14:2016.


ISO/IEC 7816-4:1995, Information technology - Identification cards - Integrated circuit(s) cards with contacts - Part 4: Interindustry commands for interchange (Карты идентификационные. Карты на интегральных схемах с контактами. Часть 4. Межотраслевые команды для обмена)
_______________
Отменен. Действует ИСО/МЭК 7816-4:2013.


ISO/IEC 7816-6:1996, Identification cards - Integrated circuit(s) cards with contacts - Part 6: Interindustry data elements (Карты идентификационные. Карты на интегральных схемах с контактами. Часть 6. Элементы данных для межотраслевого обмена)
_______________
Отменен. Действует ИСО/МЭК 7816-6:2016.

3 Термины и определения


В настоящем стандарте применены следующие термины с соответствующими определениями:

3.1 базовый пользователь базой данных (database basic user): SCQL пользователь без присущих прав.

3.2 файл базы данных (database file): Структурированная совокупность объектов базы данных (таблицы, представления, словари), представляющая содержимое базы данных.

3.3 владелец объекта базы данных (database object owner): Пользователь SCQL со специальным правом создавать и удалять объекты и управлять привилегиями на эти объекты.

3.4 владелец базы данных (database owner): Первичный пользователь SCQL, который управляет объектами и пользователями базы данных.

3.5 словарь (dictionary): Представление на системную таблицу.

3.6 системная таблица (system table): Таблица, обслуживаемая картой, для управления структурой базы данных и доступом к базе данных.

3.7 таблица (table): Объект базы данных с уникальным именем и структурированный в столбцы и строки.

3.8 представление (view): Логическое подмножество таблицы.

4 Обозначения и сокращения


В настоящем стандарте применяют следующие сокращения:

APDU - блок данных прикладного протокола (Application protocol data unit);

API - интерфейс программирования приложений (Application programming interface);

DB - база данных (Database);

DB_О - владелец базы данных (Database owner);

DBBU - базовый пользователь базой данных (Database basic user);

DBF - файл базы данных (Database file);

DBOO - владелец объекта базы данных (Database object owner);

DF - назначенный файл (Dedicated file);

DO - информационный объект (Data object);

ICC - карта на интегральной(ых) схеме(ах) (Integrated circuit(s) card);

IFD - интерфейс (устройство сопряжения) (Interface device);

MF - главный файл (Master file);

RFU - зарезервировано для будущего использования (Reserved for future use);

SCQL - язык структурированных запросов для карты (Structured card query language);

SQL - язык структурированных запросов (Structured query language);

TLV - тег, длина, значение (Tag, length, value).

5 Понятие баз данных SCQL

5.1 База данных SCQL


База данных в карте согласно настоящему стандарту называется базой данных SCQL, так как команды для реализации доступа базируются на функциональных возможностях SQL (см. ИСО 9075) и кодируются в зависимости от принципов межотраслевых команд, как определено в ИСО/МЭК 7816-4. Сама база данных является структурированной совокупностью объектов базы данных, называемой файлом базы данных DBF. Ниже назначенного файла DF должно быть не более одного файла базы данных DBF, который становится доступным после выбора соответствующего назначенного файла DF. База данных также может быть непосредственно прикреплена к главному файлу MF.

На рисунке 1 показан пример реализации базы данных в карте.


Рисунок 1 - Приложение с базой данных в мультиприкладной карте (пример)


Система приложений может взаимодействовать с базой данных SQL так же, как и с базой данных SCQL, используя тот же SQL-API (API - Application programming interface, интерфейс программирования приложений). Таким образом, карта, поддерживающая базу данных SCQL, может быть представлена частью среды распределенной базы данных SQL. На рисунке 2 показана типичная SQL конфигурация с картой, интегрированной в системное проектирование.


Рисунок 2 - База данных SCQL как часть среды распределенной базы данных SQL (пример)

5.2 Таблицы SCQL


База данных SCQL содержит объекты, называемые таблицами, представлениями и словарями. Каждый объект для ссылки на него может быть снабжен уникальным идентификатором.

Таблица является структурированным информационным объектом с уникальным именем внутри базы данных. Она состоит из поименованных столбцов и строк. Количество строк может быть концептуально безграничным (т.е. ограничивается только доступным пространством памяти на карте) или ограниченным. Пример таблицы и ее главных характеристик показан на рисунке 3.


Рисунок 3 - Таблица SCQL (пример) и ее главные характеристики


После создания таблицы ее структура постоянна, т.е. ни один из существующих столбцов не может быть удален, а также новые столбцы не могут быть вставлены. С таблицами разрешены следующие действия:

- чтение (выделение);

- вставка;

- обновление;

- удаление.

5.3 Представления SCQL


Представление является логическим подмножеством таблицы, которое определяет доступную часть таблицы. Различают два типа представлений:

- представление (см. рисунок 4), которое по определению фиксирует доступные столбцы, называется в данном контексте статическим представлением и

- представление (см. рисунок 5), которое ограничивает доступ к тем строкам, содержание которых совпадает с определенными условиями (например, к строкам, значение которых больше "20"), называется в данном контексте динамическим представлением.


Рисунок 4 - Статическое представление SCQL (пример)


Рисунок 5 - Динамическое представление SCQL (пример)


Возможны также комбинации статического и динамического представлений в одном и том же определении представления.

Так же, как и таблица, представление имеет уникальное имя в базе данных SCQL. Несколько представлений могут быть определены для одной и той же таблицы.

С представлениями могут быть разрешены следующие действия:

- чтение (выделение);

- обновление.

5.4 Системные таблицы SCQL и словари


Системные таблицы поддерживаются картой и содержат информацию, необходимую для управления структурой базы данных и доступом. Системных таблиц три:

- таблица, описывающая объекты (имя *О);

- таблица, описывающая пользователей (имя *U);

- таблица, описывающая привилегии (имя *Р).

Таблица, описывающая объекты, содержит информацию о таблицах и представлениях, хранящихся в базе данных.

Таблица, описывающая пользователей, содержит информацию о пользователях, которые имеют доступ к базе данных.

Таблица, описывающая привилегии, содержит информацию о привилегиях над таблицами и представлениями в базе данных. Привилегии описывают, какие таблицы и какие представления могут быть доступны тем или иным пользователям и какие действия могут быть разрешены этим пользователям с соответствующей таблицей или представлением.

На рисунках 6-8 показаны системные таблицы с их обязательными столбцами.


Рисунок 6 - Таблица, описывающая объекты


Рисунок 7 - Таблица, описывающая пользователей


Рисунок 8 - Таблица, описывающая привилегии

Для доступа к информации, содержащейся в системных таблицах, могут быть созданы представления на эти системные таблицы. Представление на системную таблицу называется словарем SCQL. Единственное действие со словарем, которое разрешено пользователю, - это чтение (выделение).

5.5 SCQL профили пользователя


SCQL профили пользователя характеризуются специальными полномочиями. Профиль пользователя приписывается идентификатору пользователя, находящемуся в таблице, описывающей пользователя. В таблице 1 показаны профили и приписываемые полномочия.


Таблица 1 - SCQL профили пользователя и приписываемые полномочия

Профиль пользователя

Пользователь

Полномочие

DB_О

Владелец базы данных

Добавлять/удалять пользователей с профилем DBOO или DBBU.

Создание/удаление объектов (таблиц/представлений).

Предоставление/отмена привилегий на собственные объекты.

Создание/удаление словарей с доступом ко всем строкам в системной таблице.

Доступ к объектам других владельцев согласно предоставленным привилегиям

DBOO

Владелец объекта базы данных

Добавлять/удалять пользователей с профилем DBBU.

Создание/удаление объектов (таблиц/представлений).

Предоставление/отмена привилегий на собственные объекты.

Создание/удаление словарей с доступом к строкам, в которых DBOO зарегистрирован как OBJOWN в *О, USROWN в *U или OBJOWN в *Р.

Доступ к объектам других владельцев согласно предоставленным привилегиям

DBBU

Базовый пользователь базой данных со специальным идентификатором пользователя или общим идентификатором пользователя PUBLIC

Доступ к объектам согласно предоставленным привилегиям

Примечание - Пользователь с профилем DB_О может быть включен в таблицу, описывающую пользователя, только при инсталляции базы данных SCQL.

6 Команды, связанные с SCQL

6.1 Общие положения


Язык структурированных запросов для карты (SCQL) базируется на функциональных возможностях стандартизированного языка структурированных запросов (SQL). Операторы SQL отображаются на операции SCQL внутри команды PERFORM SCQL OPERATION (ВЫПОЛНИТЬ SCQL ОПЕРАЦИЮ) (см. рисунок 9 и таблицу 2).


Рисунок 9 - Принцип отображения оператора SQL на SCQL операции

Обязательные параметры команды находятся всегда в последовательности, определенной в соответствующей командной таблице. Поэтому их тег не определен. Необязательные параметры представляют (если не указано иначе) в формате TLV.

Как и команда PERFORM SCQL OPERATION, две другие команды принадлежат к среде SCQL, но могут быть использованы также вне среды SCQL:

- команда PERFORM TRANSACTION OPERATION (ВЫПОЛНИТЬ ОПЕРАЦИЮ ТРАНЗАКЦИИ) (см. рисунок 10) и

- команда PERFORM USER OPERATION (ВЫПОЛНИТЬ ПОЛЬЗОВАТЕЛЬСКУЮ ОПЕРАЦИЮ) (см. рисунок 10).

6.2 Группирование и кодирование команд


Команды в SCQL могут быть сгруппированы, как показано на рисунке 10.


Рисунок 10 - Команды в SCQL


Для команд, определенных в настоящем стандарте, коды команд и кодирование соответствующих операций показаны в таблице 2.


Таблица 2 - Коды команд и операций

INS-код

Смысловое значение

'10'

ВЫПОЛНИТЬ SCQL ОПЕРАЦИЮ

Кодирование и смысловое значение Р2:

'80' = CREATE TABLE (СОЗДАТЬ ТАБЛИЦУ)

'81' = CREATE VIEW (СОЗДАТЬ ПРЕДСТАВЛЕНИЕ)

'82' = CREATE DICTIONARY (СОЗДАТЬ СЛОВАРЬ)

'83' = DROP TABLE (УДАЛИТЬ ТАБЛИЦУ)

'84' = DROP VIEW (УДАЛИТЬ ПРЕДСТАВЛЕНИЕ)

'85' = GRANT (НАЗНАЧИТЬ ПРИВИЛЕГИЮ)

'86' = REVOKE (ОТМЕНИТЬ ПРИВИЛЕГИЮ)

'87' = DECLARE CURSOR (ОБЪЯВИТЬ КУРСОР)

'88' = OPEN (ОТКРЫТЬ)

'89' = NEXT (ПЕРЕМЕЩЕНИЕ)

'8А = FETCH (ВЫБОРКА)

'8В' = FETCH NEXT (ВЫБОРКА СЛЕДУЮЩЕЙ СТРОКИ)

'8С = INSERT (ВСТАВИТЬ)

'8D' = UPDATE (ОБНОВИТЬ)

'8Е' = DELETE (УДАЛИТЬ)

'12'

ВЫПОЛНИТЬ ОПЕРАЦИЮ ТРАНЗАКЦИИ

Кодирование и смысловое значение Р2:

'80' = BEGIN (НАЧАТЬ ТРАНЗАКЦИЮ)

'81' = COMMIT (ЗАВЕРШИТЬ ТРАНЗАКЦИЮ)

'82' = ROLLBACK (ОТКАТ ТРАНЗАКЦИИ)

'14'

ВЫПОЛНИТЬ ПОЛЬЗОВАТЕЛЬСКУЮ ОПЕРАЦИЮ

Кодирование и смысловое значение Р2:

'80' = PRESENT USER (ПРЕДСТАВИТЬ ПОЛЬЗОВАТЕЛЯ)

'81' = CREATE USER (СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ)

'82' = DELETE USER (УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ)


Примеры использования и кодирования этих команд показаны в приложении А.

6.3 Система обозначений и специальное кодирование


В следующих подразделах нижеприведенная система обозначений используется для описания операторов SQL:

- слова, написанные заглавными буквами, являются SQL словами (постоянные выражения языка SQL);

- [ ] - необязательный;

- <...> - строка атрибута;

- ::= - состоит из;

- | - или;

- * - все.

Для кодирования параметров используется следующая система обозначений:

- Lp - длина (кодированная в одном байте) последующего параметра;

- <...> - строка параметра, состоящая из байтов с длиной Lp и смысловым значением, данным в <...>.

Для кодирования размера D (например, число столбцов или число условий) применяются следующие правила:

D ::= N,

где N - число последующих элементов, закодированное в одном байте,

или

D ::= Ln<N>

где Ln = '01' (N закодировано в одном байте).

Элемент состоит из одного или нескольких последовательных параметров. Размер ноль кодируется в одном байте, установленном на '00'. Смысловое значение нулевого размера - это или 'все столбцы', или 'нет условий', в зависимости от команды.

Кодирование операторов сравнения в условиях поиска осуществляется согласно таблице 3.


Таблица 3 - Кодирование операторов сравнения

Оператор сравнения

Кодирование

Значение

=

'3D'

Равно

<

'3С

Меньше

>

'3Е'

Больше

'4С'

Меньше или равно

'47'

Больше или равно

'23'

Не равно

6.4 Байты состояния


Байты состояния SW1-SW2 ответа означают состояние обработки в карте. В таблице 4 показано общее смысловое содержание значений SW1-SW2, определенных в настоящем стандарте. Для каждой команды или выполняемой операции соответствующий пункт предусматривает более детальное содержание.

Для целей настоящего стандарта даны более точные определения значений байтов состояния, установленных в ИСО/МЭК 7816-4.


Таблица 4 - Байты состояния

SW1-SW2

Определено в стандарте серии ИСО/МЭК 7816 (часть)

Смысловое значение

Нормальная обработка

'9000'

4

Команда выполнена успешно

'61xx'

4

Команда выполнена успешно, хх кодирует число байтов данных, которые должны быть получены с помощью команды GET RESPONSE

Обработка с предупреждением

'6282'

4

Достигнут конец таблицы

Ошибки выполнения

'6500'

4

Информация не предоставлена

'6581'

4

Отказ памяти (например, искаженная информация)

Ошибки, выявленные контролем

'6700'

4

Неправильная длина

Команда не разрешена

'6900'

4

Информация не предоставлена

'6982'

4

Состояние защиты неудовлетворительное

'6985'

4

Необходимые команды или операции ранее не выполнены

Неправильные параметры

'6А00'

4

Информация не предоставлена

'6А80'

4

Некорректный(ые) параметр(ы) в поле данных

'6А81'

4

Операция не поддерживается

'6А84'

4

Области памяти не достаточно

'6А88'

7

Ссылочный объект не найден

'6А89'

4

Объект уже существует

'6Схх'

4

Неправильная длина Le: SW2 указывает точную длину

'6D00'

4

Не поддерживается код команды

6.5 Кодирование идентификаторов


Приняты следующие соглашения по кодированию идентификаторов:

<идентификатор> ::= <заглавная буква> [<заглавная буква> | <одноразрядное число> | <_>]
<заглавная буква> ::= A|B|C|D|E|F|G|H|l|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<одноразрядное число> ::= 0|1|2|3|4|5|6|7|8|9
<имя таблицы> ::= <идентификатор, максимум 8 байтов>
<имя представления> ::= <идентификатор, максимум 8 байтов >
<имя словаря> ::= <задаваемая часть имени словаря><_><O|U|Р>
<имя столбца> ::= <идентификатор, максимум 8 байтов >
< задаваемая часть имени словаря> ::= <идентификатор, максимум 8 байтов> | SYSTAB
<user id> ::=

<individual id> |
<group id> <разделитель> <individual id> |
<group id> <разделитель> <subgroup id>
<разделитель> < individual id> |
<group id > <разделитель> <звездочка> |
<group id> <разделитель> < subgroup id>
<разделитель> <звездочка> |
<group id > <разделитель> <звездочка>
<разделитель> <звездочка>

<group id> ::= <идентификатор, максимум 8 байтов>
<subgroup id> ::= идентификатор, максимум 8 байтов>
<individual id>::= <идентификатор, максимум 8 байтов> | <special user id >
<разделитель> ::=.
<звездочка> ::= *
<special user id> ::= <держатель карты> | <любой пользователь>
<держатель карты> ::= CHOLDER
<любой пользователь> ::= PUBLIC
_______________
Идентификатор пользователя.

Индивидуальный идентификатор.

Идентификатор группы.

Идентификатор подгруппы.

Специальный идентификатор пользователя.


CHOLDER - это общий идентификатор (пользователя) держателя карты. PUBLIC - это общий идентификатор пользователя для базового пользователя базой данных (см. таблицу 1).

Смысловое значение звездочки - "безразличное состояние", т.е. кодирование данной части не подвергается сравнению.

Для проверки идентификатора пользователя различают следующие случаи:

- если идентификатор пользователя индивидуальный, то он должен быть идентичен зарегистрированному идентификатору пользователя;

- если идентификатор пользователя состоит из идентификатора группы в комбинации с индивидуальным, то должны быть выполнены следующие шаги:

1) проверить, зарегистрирован ли полный идентификатор пользователя;

2) если нет, проверить, зарегистрирован ли < group id >.*;

- если идентификатор пользователя состоит из идентификатора группы в комбинации с идентификатором подгруппы и индивидуальным, то должны быть выполнены следующие шаги:

a) проверить, зарегистрирован ли полный идентификатор пользователя;

b) если нет, проверить, зарегистрирован ли <group id >.<subgroup id>.*;

c) если нет, проверить, зарегистрирован ли < group id >.*.*.

Верификация идентификатора пользователя выполняется, если выполняется операция PRESENT USER, а также в ситуации, когда требуется управление доступом к таблицам, представлениям и словарям (см. DECLARE CURSOR и INSERT).

Примечание - Механизм создания группы пользователей не является частью языка SQL.

6.6 Атрибуты секретности таблиц, представлений и пользователей


Для атрибутов секретности приняты следующие соглашения:

<атрибуты секретности> ::= <информационный объект, связанный с защитой, как определено в других стандартах серии ИСО/МЭК 7816, например, для аутентификации или управления доступом>

Атрибуты секретности, связанные с таблицами и представлениями, могут относиться к процедурам аутентификации, предваряющим доступ, или описывать применяемые механизмы безопасного обмена сообщениями, если выполняются операции манипулирования данными (например, считывание и запись в конфиденциальном режиме).

Атрибуты секретности, закрепленные за пользователем, относятся к аутентификации пользователя.

6.7 Соединение идентификаторов пользователей с операциями INSERT и UPDATE


Если последний столбец таблицы называется USER (ПОЛЬЗОВАТЕЛЬ), то карта будет поддерживать регистрацию пользователя, производящего последнее изменение в таблице. Операция соединения состоит из вставки текущего идентификатора пользователя, установленного с помощью операции PRESENT USER, в столбец USER во время выполнения операции INSERT. Если выполняется операция UPDATE, то карта переписывает существующий идентификатор пользователя в столбце USER на текущий идентификатор пользователя.

7 Операции с базами данных

7.1 СОЗДАТЬ ТАБЛИЦУ (CREATE TABLE)

7.1.1 Определение и область применения

SCQL операция CREATE TABLE задает таблицу со своими столбцами и, возможно, с атрибутами секретности. Определение таблицы добавляется в таблицу, описывающую объекты.

7.1.2 Условия использования и защиты

Таблица может быть создана только пользователями с профилями DB_O и DBOO.

7.1.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

CREATE TABLE <имя таблицы><список элементов таблицы>[<атрибут секретности>,...]

<имя таблицы> ::= <идентификатор, см. 6.5>

<список элементов таблицы> ::= (<определение столбца > [, < определение столбца >...] [<столбец USER>])

< атрибут секретности> ::= <DO, связанный с защитой, см. 6.6>

<определение столбца > ::= <имя столбца>

[<разделитель><наложение ограничения по уникальности>]

[<разделитель ><тип данных>]

<имя столбца > ::= идентификатор, см. 6.5>

< столбец USER, см. 6.7> ::= USER

< наложение ограничения по уникальности > ::= U

<разделитель> ::=.

<тип данных> ::= <символ переменной (длина)>

<символ переменной (длина)> ::= \/<длина>

<длина> ::= <двоично-кодированная длина в 1 байт>

Если наложение ограничения по уникальности используется и картой поддерживается, то карта должна обеспечить, чтобы все значения в соответствующем столбце были уникальными.

Если представлен и картой поддерживается индикатор переменной длины (т.е. максимальная длина), то карта должна проверить, не превышает ли предъявленная длина столбца указанную максимальную длину.


Таблица 5 - Командный APDU команды PERFORM SCQL OPERATION на операцию CREATE TABLE

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'80' = CREATE TABLE

Поле Lc

Длина последующего поля данных

Поле данных

Lp <имя таблицы, см. 6.5>

D, фиксирование N (столбцы)

N элементов:

Lp <определение столбца>

Поле Le

Необязательные параметры:

Lp <максимальное число строк, двоично-кодированное в 1 байте >

Lp <атрибут секретности> [<атрибут секретности >, ...]

Пустое

7.1.4 Ответное сообщение


Таблица 6 - Ответный APDU команды PERFORM SCQL OPERATION на операцию CREATE TABLE

Поле данных

Пустое

SW1-SW2

Байты состояния

7.1.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'84': Области памяти недостаточно;

'89': Объект уже существует.

7.2 СОЗДАТЬ ПРЕДСТАВЛЕНИЕ (CREATE VIEW)

7.2.1 Определение и область применения

SCQL операция CREATE VIEW задает представление на таблицу. Определение представления добавляется в таблицу, описывающую объекты.

7.2.2 Условия использования и защиты

Представление может быть создано только владельцем ссылочной таблицы.

7.2.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

CREATE VIEW <имя представления> AS <определение представления> [<атрибут секретности >, ...]

<имя представления> ::= идентификатор, см. 6.5>

<определение представления> ::=SELECT<список выбора>FROM<имя объекта> [WHERE <условие поиска> [AND < условие поиска >, ...]]

<атрибут секретности > ::= <DO, связанный с защитой, см. 6.6>

< список выбора > ::= *| <имя столбца > [, < имя столбца >]

<имя объекта> ::= <имя таблицы>

<условие поиска> ::= <имя столбца > <оператор сравнения> <строка>

<оператор сравнения> ::= = | < | > | | |

<строка > ::=' <последовательность байтов>'

* = все столбцы


Таблица 7 - Командный APDU команды PERFORM SCQL OPERATION на операцию CREATE VIEW

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'81' = CREATE VIEW

Поле Lc

Длина последующего поля данных

Поле данных

Lp <имя представления, см. 6.5>

Lp <имя таблицы>

D, фиксирование N ( столбцы)

N элементов:

Lp <имя столбца>

D, фиксирование N (условия)

N элементов, состоящих из 3 параметров:

Lp <имя столбца>

Lp <оператор сравнения>

Lp <строка>

Необязательные параметры:

Lp <атрибут секретности > [<атрибут секретности>, ...]

Поле Le

Пустое


Примечание - Если представлено несколько условий, то они неявным образом объединяются логической операцией И.

7.2.4 Ответное сообщение


Таблица 8 - Ответный APDU команды PERFORM SCQL OPERATION на операцию CREATE VIEW

Поле данных

Пустое

SW1-SW2

Байты состояния

7.2.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'84': Области памяти недостаточно;

'88': Ссылочный объект не найден;

'89': Объект уже существует.

7.3 СОЗДАТЬ СЛОВАРЬ (CREATE DICTIONARY)

7.3.1 Определение и область применения

SCQL операция CREATE DICTIONARY задает представление на системные таблицы *O, *U и *Р. Определения фиксированного представления добавляются картой в таблицу, описывающую объекты (см. таблицы 10 и 11). Какие строки системных таблиц могут быть считаны, зависит от профиля пользователя.

Примечание - У данной команды нет эквивалента в языке SQL.

7.3.2 Условия использования и защиты

Словарь может быть создан только DB_O или DBOO.

7.3.3 Командное сообщение

Данная SCQL операция относится к следующему оператору расширения SQL:

CREATE DICTIONARY <задаваемая часть имени словаря>

<задаваемая часть имени словаря> ::= <идентификатор, максимум 6 байтов, см. 6.5> | SYSTAB

Примечание - Задаваемая часть имени словаря заканчивается картой с добавлением _O для представления таблицы, описывающей объекты, _U для представления таблицы, описывающей пользователей, и _Р для представления таблицы, описывающей привилегии. Если необходимо, SYSTAB должно использоваться в качестве общего имени словарей.


Таблица 9 - Командный APDU команды PERFORM SCQL OPERATION на операцию CREATE DICTIONARY

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'82' = CREATE DICTIONARY

Поле Lc

Длина последующего поля данных

Поле данных

Lp <задаваемая часть имени словаря, см. 6.5 >

Поле Le

Пустое



Таблица 10 - Вводимые строки, если пользователем является DB_O

*O (таблица, описывающая объекты)

OBJNAM

OBJOWN

OBJTYP

OBJDES

<задаваемое имя словаря> _О

<user id DB_O>

V

ALL или имена столбцов

<задаваемое имя словаря> _U

<user id DB_O>

V

ALL или имена столбцов

<задаваемое имя словаря> _Р

<user id DB_O>

V

ALL или имена столбцов


Примечание - Поскольку столбец OBJOPT пуст, то в таблице 10 он не показан.


Таблица 11 - Вводимые строки, если пользователем является DBOO

*O (таблица, описывающая объекты)

OBJNAM

OBJOWN

OBJTYP

OBJDES

<задаваемое имя словаря> _О

<user id DBOO>

V

ALL или
имена столбцов;
условие:
OBJOWN = < user id DBOO>

<задаваемое имя словаря> _U

<user id DBOO>

V

ALL или имена столбцов; условие:
USROWN = < user id DBOO>

<задаваемое имя словаря> _Р

<user id DBOO>

V

ALL или имена столбцов; условие:
OBJOWN = < user id DBOO>


Примечание - Поскольку столбец OBJOPT пуст, то в таблице 11 он не показан.

7.3.4 Ответное сообщение


Таблица 12 - Ответный APDU команды PERFORM SCQL OPERATION на операцию CREATE DICTIONARY

Поле данных

Пустое

SW1-SW2

Байты состояния

7.3.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А' с SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'84': Области памяти недостаточно;

'89': Объект уже существует.

7.4 УДАЛИТЬ ТАБЛИЦУ (DROP TABLE)

7.4.1 Определение и область применения

С помощью SCQL операции DROP TABLE таблица может быть удалена.

7.4.2 Условия использования и защиты

Таблица может быть удалена только ее владельцем. Привилегии, связанные с таблицей, должны быть удалены автоматически.

7.4.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

DROP TABLE <имя таблицы>


Таблица 13 - Командный APDU команды PERFORM SCQL OPERATION на операцию DROP TABLE

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'83' = DROP TABLE

Поле Lc

Длина последующего поля данных

Поле данных

Lp <имя таблицы >

Поле Le

Пустое

7.4.4 Ответное сообщение


Таблица 14 - Ответный APDU команды PERFORM SCQL OPERATION на операцию DROP TABLE

Поле данных

Пустое

SW1-SW2

Байты состояния

7.4.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'88': Ссылочный объект не найден.

7.5 УДАЛИТЬ ПРЕДСТАВЛЕНИЕ (DROP VIEW)

7.5.1 Определение и область применения

С помощью SCQL операции DROP VIEW может быть удалено представление.

7.5.2 Условия использования и защиты

Представление может быть удалено только его владельцем. Привилегии, связанные с представлением, должны быть удалены автоматически.

7.5.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

DROP VIEW <имя представления или имя словаря>


Таблица 15 - Командный APDU команды PERFORM SCQL OPERATION на операцию DROP VIEW

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'84' = DROP VIEW

Поле Lc

Длина последующего поля данных

Поле данных

Lp <имя представления или имя словаря>

Поле Le

Пустое

7.5.4 Ответное сообщение


Таблица 16 - Ответный APDU команды PERFORM SCQL OPERATION на операцию DROP VIEW

Поле данных

Пустое

SW1-SW2

Байты состояния

7.5.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'88': Ссылочный объект не найден.

7.6 НАЗНАЧИТЬ ПРИВИЛЕГИЮ (GRANT)

7.6.1 Определения и область применения

SCQL операция GRANT позволяет предоставлять привилегии одиночному пользователю, группе пользователей или всем пользователям.

Могут быть предоставлены следующие привилегии:

a) привилегии для доступа к таблице:

- SELECT (ВЫБРАТЬ);

- INSERT (ВСТАВИТЬ);

- UPDATE (ОБНОВИТЬ);

- DELETE (УДАЛИТЬ);

b) привилегии для доступа к представлению:

- SELECT;

- UPDATE;

c) привилегии для доступа к словарю:

- SELECT.

Примечание - Если для получения доступа в дополнение к привилегии от держателя карты требуется прохождение процедуры авторизации (т.е. предоставление пароля) до того, как может быть выполнено соответствующее действие, то авторизация доступа должна быть определена в атрибутах секретности, установленных для соответствующей таблицы или представления.

7.6.2 Условия использования и защиты

Только владелец таблицы может предоставлять или отменять привилегии.

7.6.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

GRANT <привилегии> ON <имя объекта> ТО <получатель>

<привилегии> ::= <действие> [,<действие> ... ] | ALL

<действие> ::= SELECT | INSERT | UPDATE | DELETE

<имя объекта> ::= <имя таблицы> | <имя представления> | <имя словаря>

<получатель> ::= <user id, см. 6.5> |*

* = все пользователи


Таблица 17 - Командный APDU команды PERFORM SCQL OPERATION на операцию GRANT

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'85' = GRANT

Поле Lc

Длина последующего поля данных

Поле данных

Lp <привилегии, кодирование см. в таблице 18>

Lp <имя таблицы, имя представления или имя словаря>

Lp < user id (см. 6.5) или *>

Поле Le

Пустое



Таблица 18 - Кодирование привилегий

Привилегия

Кодирование в SCQL

INSERT

'41'

SELECT

'42'

UPDATE

'44'

DELETE

'48'

ALL (все)

'4F'

7.6.4 Ответное сообщение


Таблица 19 - Ответный APDU команды PERFORM SCQL OPERATION на операцию GRANT

Поле данных

Пустое

SW1-SW2

Байты состояния

7.6.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'84': Области памяти недостаточно;

'88': Ссылочный объект не найден.

7.7 ОТМЕНИТЬ ПРИВИЛЕГИЮ (REVOKE)

7.7.1 Определение и область применения

SCQL операция REVOKE позволяет отменить привилегии, предоставленные ранее (см. 7.6).

7.7.2 Условия использования и защиты

Только владелец таблицы или представления может отменять привилегии.

7.7.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

REVOKE <привилегии> ON <имя объекта> FROM <получатель>

<привилегии> ::= <действие> [, <действие> ...] | ALL

<действие> ::= |SELECT | INSERT | UPDATE | DELETE

<имя объекта> ::= <имя таблицы> | <имя представления> | <имя словаря>

<получатель> ::= <user id> |*

* = все пользователи


Таблица 20 - Командный APDU команды PERFORM SCQL OPERATION на операцию REVOKE

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'86' = REVOKE

Поле Lc

Длина последующего поля данных

Поле данных

Lp <привилегии, кодирование см. в таблице 18>

Lp <имя таблицы, имя представления или имя словаря>

Lp <user id или *>

Поле Le

Пустое

7.7.4 Ответное сообщение


Таблица 21 - Ответный APDU команды PERFORM SCQL OPERATION на операцию REVOKE

Поле данных

Пустое

SW1-SW2

Байты состояния

7.7.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'88': Ссылочный объект не найден.

7.8 ОБЪЯВИТЬ КУРСОР (DECLARE CURSOR)

7.8.1 Определение и область применения

Курсор используется для указания строк в таблице или словаре. SCQL операция DECLARE CURSOR используется для объявления курсора.

7.8.2 Условия использования и защиты

Объявление курсора допускается только, если действующий пользователь авторизирован для доступа к ссылочной таблице, представлению или словарю. Пользователь должен быть владельцем ссылочного объекта или по крайней мере иметь одну привилегию для доступа к ссылочному объекту (о сравнении текущего идентификатора пользователя с идентификатором пользователя, находящимся в системной таблице *Р, см. 6.5).

В каждый данный момент времени может существовать только один курсор, т.е. если объявляется новый курсор, то предыдущий больше не действителен.

7.8.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

DECLARE CURSOR FOR <выбор>

<выбор> ::= SELECT < список выбора > FROM <имя объекта> [WHERE <условие поиска> [AND < условие поиска >, ...]]

< список выбора > ::= *| <имя столбца> [, <имя столбца>]

<имя объекта> :: = <имя таблицы> | <имя представления> | <имя словаря>

< условие поиска > :: = <имя столбца> <оператор сравнения> <строка>

<строка > ::= '<последовательность байтов>'

* = все столбцы

Примечание - Поскольку одновременно возможен только один курсор, имя курсора не используется.


Таблица 22 - Командный APDU команды PERFORM SCQL OPERATION на операцию REVOKE

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

Р1

'00', другие значения RFU

Р2

'87' = DECLARE CURSOR

Поле Lc

Длина последующего поля данных

Поле данных

Lp <имя таблицы, имя представления или имя словаря>

D, фиксирование N (столбцы)

N элементов:

Lp <имя столбца>

Если условия представлены:

D, фиксирование N (условия)

N элементов, состоящих из 3 параметров:

Lp <имя столбца>

Lp <оператор сравнения>

Lp <строка>

Поле Le

Пустое


Примечание - Если представлено несколько условий, то они неявно объединяются с помощью логической операции И.

7.8.4 Ответное сообщение


Таблица 23 - Ответный APDU команды PERFORM SCQL OPERATION на операцию DECLARE CURSOR

Поле данных

Пустое

SW1-SW2

Байты состояния

7.8.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'88': Ссылочный объект не найден.

7.9 ОТКРЫТЬ (OPEN)

7.9.1 Определение и область применения

SCQL операция OPEN открывает курсор, т.е. курсор позиционируется на первую строку, которая соответствует выбору, определенному ранее с помощью операции DECLARE CURSOR.

7.9.2 Условия использования и защиты

Курсор должен быть объявлен заранее.

7.9.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

OPEN


Таблица 24 - Командный APDU команды PERFORM SCQL OPERATION на операцию OPEN

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'88' = OPEN

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Пустое

7.9.4 Ответное сообщение


Таблица 25 - Ответный APDU команды PERFORM SCQL OPERATION на операцию OPEN

Поле данных

Пустое

SW1-SW2

Байты состояния

7.9.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '62', а байт с SW2 =

'82': Достигнут конец таблицы;

- если байт SW1 = '69', а байт SW2 =

'85': Необходимые команды или операции не выполнены ранее (не определен курсор).

7.10 ПЕРЕМЕЩЕНИЕ (NEXT)

7.10.1 Определение и область применения

SCQL операция NEXT устанавливает курсор на следующую строку согласно спецификации курсора.

7.10.2 Условия использования и защиты

Курсор должен быть предварительно открыт.

7.10.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

NEXT


Таблица 26 - Командный APDU команды PERFORM SCQL OPERATION на операцию NEXT

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'89' = NEXT

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Пустое

7.10.4 Ответное сообщение


Таблица 27 - Ответный APDU команды PERFORM SCQL OPERATION на операцию NEXT

Поле данных

Пустое

SW1-SW2

Байты состояния

7.10.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '62', а байт SW2 =

'82': Достигнут конец таблицы;

- если байт SW1 = '69', а байт SW2 =

'85': Необходимые команды или операции не выполнены ранее (не определен курсор).

7.11 ВЫБОРКА (FETCH)

7.11.1 Определение и область применения

SCQL операция FETCH позволяет вызвать строку или ее часть. Курсор должен указать на строку, которая должна быть выбрана.

7.11.2 Условия использования и защиты

Операция может быть выполнена только владельцем объекта или пользователем с привилегией SELECT. Курсор должен быть предварительно открыт.

7.11.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

FETCH


Таблица 28 - Командный APDU команды PERFORM SCQL OPERATION на операцию FETCH

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'8А' = FETCH

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Максимальная длина ожидаемых данных

7.11.4 Ответное сообщение


Таблица 29 - Ответный APDU команды PERFORM SCQL OPERATION на операцию FETCH

Поле данных

D, фиксирование N (столбцы)

N элементов:

Lp <строка>

SW1-SW2

Байты состояния


Примечание - Если используется протокол передачи Т=0, длина выбранных данных указывается в байтах состояния (SW1-SW2 = '6Схх', где хх означает число доступных байтов данных). Данные должны извлекаться с помощью повторной подачи той же команды со значением поля Le, указанным в SW2.


Если используется протокол передачи Т=1, данные передаются в ответном APDU на операцию FETCH.

7.11.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

'85': Необходимые команды или операции не выполнены ранее (курсор не определен)

7.12 ВЫБОРКА СЛЕДУЮЩЕЙ СТРОКИ (FETCH NEXT)

7.12.1 Определение и область применения

SCQL операция FETCH NEXT должна использоваться для чтения логически следующей строки из позиции курсора. Курсор устанавливается на выбранную строку.

7.12.2 Условия использования и защиты

Операция может выполняться только владельцем объекта или пользователем с привилегией SELECT. Курсор должен быть предварительно открыт.

7.12.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

FETCH NEXT


Таблица 30 - Командный APDU команды PERFORM SCQL OPERATION на операцию FETCH NEXT

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'8В' = FETCH NEXT

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Максимальная длина ожидаемых данных

7.12.4 Ответное сообщение


Таблица 31 - Ответный APDU команды PERFORM SCQL OPERATION на операцию FETCH NEXT

Поле данных

D, фиксирование N (столбцы)

N элементов:

Lp <строка>

SW1-SW2

Байты состояния

См. примечание к таблице 29.

7.12.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '62', а байт SW2 =

'82': Достигнут конец таблицы;

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

'85': Необходимые команды или операции не выполнены ранее (не определен курсор).

7.13 ВСТАВИТЬ (INSERT)

7.13.1 Определение и область применения

SCQL операция INSERT используется для вставки строки в таблицу. Новая строка всегда добавляется в конец таблицы. Курсор остается на своей позиции.

7.13.2 Условия использования и защиты

Команда может выполняться только владельцем таблицы или пользователем с привилегией INSERT.

Значение для специального столбца USER (если он представлен) карта вставляет в этот столбец (см. 6.7).

7.13.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

INSERT [INTO] <имя таблицы> VALUES (<строка> [, <строка> ...])

<строка> ::= '<последовательность байтов>'


Таблица 32 - Командный APDU команды PERFORM SCQL OPERATION на операцию INSERT

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'8С' = INSERT

Поле Lc

Длина последующего поля данных

Поле данных

Lp <имя таблицы>

D, фиксирование N (столбцы)

N элементов:

Lp <строка>

Поле Le

Пустое

7.13.4 Ответное сообщение


Таблица 33 - Ответный APDU команды PERFORM SCQL OPERATION на операцию INSERT

Поле данных

Пустое

SW1-SW2

Байты состояния

7.13.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '62', а байт SW2 =

'82': Достигнут конец таблицы;

- если байт SW1 = '67', а байт SW2 =

'00': Неправильная длина;

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'84': Области памяти недостаточно;

'88': Ссылочный объект не найден;

'89': Объект уже существует (значение в столбце не уникально).

7.14 ОБНОВИТЬ (UPDATE)

7.14.1 Определение и область применения

SCQL операция UPDATE обновляет одно или более полей строки, на которую указывает курсор, в таблице или представлении.

7.14.2 Условия использования и защиты

Команда может выполняться только владельцем таблицы или пользователем с привилегией UPDATE. Курсор должен быть предварительно открыт.

Значение для специального столбца USER (если он представлен) карта использует для замены (см. 6.7).

7.14.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

UPDATE SET <список (изменений) предложения SET>

<список (изменений) предложения SET> ::= <имя столбца> = <строка> [,<имя столбца> = <строка> ...]

<строка> ::= '<последовательность байтов>'.


Таблица 34 - Командный APDU команды PERFORM SCQL OPERATION на операцию UPDATE

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'8D' = UPDATE

Поле Lc

Длина последующего поля данных

Поле данных

D, фиксирование N (столбцы)

N элементов, состоящих из 2 параметров:

Lp <имя столбца>

Lp <строка>

Поле Le

Пустое

7.14.4 Ответное сообщение


Таблица 35 - Ответный APDU команды PERFORM SCQL OPERATION на операцию UPDATE

Поле данных

Пустое

SW1-SW2

Байты состояния

7.14.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '67', а байт SW2 =

'00': Неправильная длина;

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

'85': Необходимые команды или операции не выполнены ранее (не определен курсор);

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'84': Области памяти недостаточно;

'89': Объект уже существует (значение в столбце не уникально).

7.15 УДАЛИТЬ (DELETE)

7.15.1 Определение и область применения

С помощью SQL операции DELETE из таблицы может быть удалена строка, на которую указывает курсор. Курсор перемещается на логически следующую строку.

7.15.2 Условия использования и защиты

Команда может выполняться только владельцем объекта или пользователем с привилегией DELETE для ссылочной таблицы.

7.15.3 Командное сообщение

Данная SCQL операция относится к следующему SQL оператору:

DELETE


Таблица 36 - Командный APDU команды PERFORM SCQL OPERATION на операцию DELETE

CLA

Как определено в ИСО/МЭК 7816-4

INS

'10' (=PERFORM SCQL OPERATION)

P1

'00', другие значения RFU

P2

'8Е' = DELETE

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Пустое

7.15.4 Ответное сообщение


Таблица 37 - Ответный APDU команды PERFORM SCQL OPERATION на операцию DELETE

Поле данных

Пустое

SW1-SW2

Байты состояния

7.15.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '62', а байт SW2 =

'82': Достигнут конец таблицы;

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

'85': Необходимые команды или операции не выполнены ранее (не определен курсор).

8 Управление транзакциями

8.1 Общие понятия


Транзакция в данном контексте - это процесс изменения в базе данных. Изменением может быть обновление или вставка одной или нескольких строк.

Команда PERFORM TRANSACTION OPERATION обеспечивает операции, необходимые для подтверждения или отмены транзакций.

Если эта команда не используется или не поддерживается, SCQL операция всегда выполняется как завершение транзакции, т.е. изменение, обусловленное операцией, немедленно вступает в силу.

8.2 Операции транзакции

8.2.1 BEGIN (НАЧАТЬ ТРАНЗАКЦИЮ)

8.2.1.1 Определение и область применения

Операция транзакции BEGIN выделяет область для копии содержимого памяти, например, строки.

8.2.1.2 Условия использования и защиты

Область памяти, которая предоставляется, зависит от реализации. Рекомендуется, чтобы выделяемая область памяти была достаточной для буферизации по крайней мере одной строки.

8.2.1.3 Командное сообщение


Таблица 38 - Командный APDU команды PERFORM TRANSACTION OPERATION на операцию BEGIN

CLA

Как определено в ИСО/МЭК 7618-4

INS

'12' (=PERFORM TRANSACTION OPERATION)

P1

'00', другие значения RFU

P2

'80' = BEGIN

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Пустое

8.2.1.4 Ответное сообщение


Таблица 39 - Ответный APDU команды PERFORM TRANSACTION OPERATION на операцию BEGIN

Поле данных

Пустое

SW1-SW2

Байты состояния

8.2.1.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '6А', а байт SW2 =

'84': Области памяти недостаточно.

8.2.2 COMMIT (ЗАВЕРШИТЬ ТРАНЗАКЦИЮ)

8.2.2.1 Определение и область применения

Операция транзакции COMMIT утверждает все изменения, сделанные с того момента, как операция BEGIN была выполнена.

8.2.2.2 Условия использования и защиты

Операция транзакции BEGIN должна быть выполнена предварительно.

8.2.2.3 Командное сообщение


Таблица 40 - Командный APDU команды PERFORM TRANSACTION OPERATION на операцию COMMIT

CLA

Как определено в ИСО/МЭК 7618-4

INS

'12' (=PERFORM TRANSACTION OPERATION)

P1

'00', другие значения RFU

P2

'81' = COMMIT

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Пустое

8.2.2.4 Ответное сообщение


Таблица 41 - Ответный APDU команды PERFORM TRANSACTION OPERATION на операцию COMMIT

Поле данных

Пустое

SW1-SW2

Байты состояния

8.2.2.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'85': Необходимые команды или операции не выполнены ранее (нет транзакции BEGIN).

8.2.3 ОТКАТ ТРАНЗАКЦИИ (ROLLBACK)

8.2.3.1 Определение и область применения

Операция транзакции ROLLBACK восстанавливает контекст, как было до выполнения операции транзакции BEGIN.

8.2.3.2 Условия использования и защиты

Операция транзакции BEGIN должна быть выполнена предварительно.

8.2.3.3 Командное сообщение


Таблица 42 - Командный APDU команды PERFORM TRANSACTION OPERATION на операцию ROLLBACK

CLA

Как определено в ИСО/МЭК 7816-4

INS

'12' (=PERFORM TRANSACTION OPERATION)

P1

'00', другие значения RFU

P2

'82' = ROLLBACK

Поле Lc

Пустое

Поле данных

Пустое

Поле Le

Пустое

8.2.3.4 Ответное сообщение


Таблица 43 - Ответный APDU команды PERFORM TRANSACTION OPERATION на операцию ROLLBACK

Поле данных

Пустое

SW1-SW2

Байты состояния

8.2.3.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

- '85': Необходимые команды или операции не выполнены ранее (нет транзакции BEGIN).

9 Управление пользователями

9.1 Основные понятия


Управление пользователями относится к:

- идентификации пользователя;

- аутентификации пользователя;

- авторизации пользователя;

- регистрации/отмене регистрации пользователя.

Для идентификации пользователя используется идентификатор пользователя, который может быть структурирован, как изложено в 6.5.

Если есть необходимость подтверждения, что представленный идентификатор пользователя принадлежит данному пользователю, то должна быть выполнена процедура аутентификации. Соответствующий механизм для аутентификации пользователя - это, например:

- механизм верификации по паролю;

- механизм биометрической верификации;

- криптографический механизм, базирующийся, например, на симметричном алгоритме или на системе с открытым ключом в комбинации с сертификатами.

В сертификате может быть представлен идентификатор пользователя, применимый для идентификации пользователя.

Авторизация пользователя имеет дело с правами пользователя на выполнение определенных операций или действий. В среде SCQL авторизация пользователя связана с:

- профилем пользователя (DB_O, DBOO или DBBU);

- привилегиями пользователя (см. табл.18) и, необязательно, с

- ролью пользователя в соответствии с группой пользователей (см. 6.5, 7.6, 7.7 и 9.2.1).

Регистрация пользователя охватывает регистрацию пользователя с его идентификатором (пользователя), профилем (пользователя) и, возможно, с его атрибутами секретности (см. 6.6). Отмена регистрации пользователя выполняется удалением регистрации.

В данном разделе определены следующие операции для идентификации пользователя, основанные на команде PERFORM USER OPERATION:

- PRESENT USER;

- CREATE USER;

- DELETE USER.

Команды и операции, относящиеся к процедуре аутентификации, не описываются в настоящем стандарте. Однако при создании пользователя с его идентификатором (пользователя) и с его профилем (пользователя) атрибуты секретности могут быть установлены и представлены соответствующими DO, связанными с защитой, определенными в других стандартах серии ИСО/МЭК 7816.

9.2 Пользовательские операции

9.2.1 PRESENT USER (ПРЕДСТАВИТЬ ПОЛЬЗОВАТЕЛЯ)

9.2.1.1 Определение и область применения

С помощью операции PRESENT USER проверяется регистрация представленного идентификатора пользователя. Идентификатор пользователя должен быть представлен в соответствии с соглашениями, определенными в 6.5, или с DO с именем держателя карты, представленном в сертификате держателя карты. Если идентификатор пользователя зарегистрирован в системной таблице *U, то пользователь, характеризующийся своим идентификатором пользователя, устанавливается как текущий пользователь.

Примечание - Сертификат, содержащий DO с именем держателя карты, может принадлежать, например, профессионалу, использующему свою профессиональную карту, или поставщику услуг.

9.2.1.2 Условия использования и защиты

Может существовать только один текущий пользователь единовременно в одном логическом канале.

Следующими могут идти команды аутентификации, например:

- VERIFY (ВЕРИФИЦИРОВАТЬ);

- GET CHALLENGE (СДЕЛАТЬ ЗАПРОС) и EXTERNAL AUTHENTICATE (ВЫПОЛНИТЬ ВНЕШНЮЮ АУТЕНТИФИКАЦИЮ).

9.2.1.3 Командное сообщение

Операция PRESENT USER относится к следующему оператору расширения SQL:

PRESENT USER <user id, см.6.5> | <DO "сертификат держателя карты">

<DO "сертификат держателя карты"> ::= <тег '7F21'><длина><DO "имя держателя карты"> <дополнительные DO>

<DO "имя держателя карты"> ::= <тег '5F20'>

<длина> < user id, см.6.5>


Таблица 44 - Командный APDU команды PERFORM USER OPERATION на операцию PRESENT USER

CLA

Как определено в ИСО/МЭК 7816-4

INS

'14' (=PERFORM USER OPERATION)

P1

'00', другие значения RFU

P2

'80' = PRESENT USER

Поле Lc

Длина последующего поля данных

Поле данных

<user id, см. 6.5> или

<DO "сертификат держателя карты",

тег '7F21', см. ИСО/МЭК 7816-6>

Поле Le

Пустое

9.2.1.4 Ответное сообщение


Таблица 45 - Ответный APDU команды PERFORM USER OPERATION на операцию PRESENT USER

Поле данных

Пустое

SW1-SW2

Байты состояния

9.2.1.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректные параметры в поле данных;

'88': Ссылочный объект (user id) не найден.

9.2.2 СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ (CREATE USER)

9.2.2.1 Определение и область применения

Операция CREATE USER инициирует регистрацию пользователя. В среде SCQL строку в таблицу, описывающую пользователей, вставляет карта.

Если требуется авторизация, когда пользователь хочет получить доступ к базе данных или защищенным таблицам или представлениям, должна быть добавлена информация, касающаяся аутентификации (см. 6.6). В данном случае за операцией CREATE USER может следовать команда, например, для инсталляции пароля. Требования к этим командам выходят за рамки настоящего стандарта.

9.2.2.2 Условия использования и защиты

Команда CREATE USER может быть выполнена только пользователем с профилем DB_O или DBOO с полномочиями, описанными в таблице 1. Идентификатор пользователя должен быть уникальным.

9.2.2.3 Командное сообщение

Операция CREATE USER относится к следующему оператору расширения SQL:

CREATE USER <user id> <профиль пользователя> [<атрибут секретности>, ...]

<профиль пользователя>::=<владелец объекта базы данных>|<базовый пользователь базой данных>

< владелец объекта базы данных > ::= DBOO

< базовый пользователь базой данных > ::= DBBU

< атрибут секретности > ::= <DO, связанный с защитой, см. 6.6>


Таблица 46 - Командный APDU команды PERFORM USER OPERATION на операцию CREATE USER

CLA

Как определено в ИСО/МЭК 7816-4

INS

'14' (=PERFORM USER OPERATION)

P1

'00', другие значения RFU

P2

'81' = CREATE USER

Поле Lc

Длина последующего поля данных

Поле данных

Lp <user id, см. 6.5 >

Lp <профиль пользователя: DBOO или DBBU>

Необязательные параметры:

Lp <атрибут секретности, см. 6.6>

Поле Le

Пустое


Примечание - Пользователь с профилем DB_O может быть вставлен в таблицу, описывающую пользователей, только во время фазы установки базы данных SCQL.

9.2.2.4 Ответное сообщение


Таблица 47 - Ответный APDU команды PERFORM USER OPERATION на операцию CREATE USER

Поле данных

Пустое

SW1-SW2

Байты состояния

9.2.2.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'89': Объект (user id) уже существует.

9.2.3 УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ (DELETE USER)

9.2.3.1 Определение и область применения

С помощью операции DELETE USER может быть удален идентификатор пользователя. Соответствующая строка в таблице, описывающей пользователей, стирается.

9.2.3.2 Условия использования и защиты

Операция DELETE USER может быть выполнена только владельцем-пользователем.

В целях обеспечения целостности базы данных привилегии, связанные с пользователем, должны быть автоматически удалены.

Примечание - Звездочка в идентификаторе пользователя, представленном с помощью операции DELETE USER (см. 6.5), в этом случае не имеет специального смыслового значения, т.е. удаляется только строка в *U, где представленный идентификатор пользователя идентичен зарегистрированному идентификатору пользователя.

9.2.3.3 Командное сообщение

Операция DELETE USER относится к следующему оператору расширения SQL:

DELETE USER <user id>


Таблица 48 - Командный APDU команды PERFORM USER OPERATION на операцию DELETE USER

CLA

Как определено в ИСО/МЭК 7618-4

INS

'14' (=PERFORM USER OPERATION)

P1

'00', другие значения RFU

P2

'82' = DELETE USER

Поле Lc

Длина последующего поля данных

Поле данных

Lp <user id>

Поле Le

Пустое

9.2.3.4 Ответное сообщение


Таблица 49 - Ответный APDU команды PERFORM USER OPERATION на операцию DELETE USER

Поле данных

Пустое

SW1-SW2

Байты состояния

9.2.3.5 Состояния после обработки

Могут возникать следующие специфические состояния ошибки:

- если байт SW1 = '69', а байт SW2 =

'82': Состояние защиты неудовлетворительное;

- если байт SW1 = '6А', а байт SW2 =

'80': Некорректный(ые) параметр(ы) в поле данных;

'88': Ссылочный объект (id пользователя) не найден.

Приложение А (справочное). Использование SCQL операций

Приложение А
(справочное)


В данном приложении приведены примеры использования и кодирования операции PRESENT USER и некоторых SCQL операций, когда кодирование размера D происходит в одном байте.

Используются следующие сокращения:

СН - заголовок команды (command header) (= CLA INS P1 P2);

col - имя столбца (column name);

coldef - определение столбца (column definition);

comp - оператор сравнения (comparison operator);

tab - имя таблицы (table name);

view - имя представления (view name);

x - шестнадцатеричный (hexadecimal).

ПРЕДСТАВИТЬ ПОЛЬЗОВАТЕЛЯ:

PRESENT USER 'COMPANY.DIV.SMITH'

CH

Lc

user id

x00140080

x11

COMPANY.DIV.SMITH



СОЗДАТЬ ТАБЛИЦУ:

CREATE TABLE FLY ('DEP', 'ARR', 'F_NO.U', TIME', 'PRICE')

CH

Lc

Lp

tab

N

Lp

col

Lp

col

Lp

coldef

Lp

col

Lp

col

x00100080

x1F

x03

FLY

x05

x03

DEP

x03

ARR

x06

F_NO.U

x04

TIME

x05

PRICE


Примечание - F_NO.U означает, что значение в столбце F_NO должно быть уникальным.


СОЗДАТЬ ПРЕДСТАВЛЕНИЕ:

CREATE VIEW FLY_A AS SELECT ('DEP', 'ARR', 'F_NO', 'TIME') FROM FLY

CH

Lc

Lp

view

Lp

tab

N

Lp

col

Lp

col

Lp

col

Lp

col

x00100081

x1D

x05

FLY_A

x03

FLY

x04

x03

DEP

x03

ARR

x04

F_NO

x04

TIME



НАЗНАЧИТЬ ПРИВИЛЕГИЮ (SELECT):

GRANT SELECT ON 'FLY_A' TO *

CH

Lc

Lp

Priv

Lp

view

Lp

user id

x00100085

x0A

x01

x42

x05

FLY_A

01

*



ВСТАВИТЬ:

INSERT INTO 'FLY' VALUES ('FRA, 'CDG', 'LH4711', '0115_10:20', '540DM')

CH

Lc

Lp

tab

N

Lp

DEP

Lp

ARR

Lp

F_NO

Lp

TIME

Lp

PRICE

x0010008C

x25

x03

FLY

x05

x03

FRA

x03

CDG

x06

LH4711

x0A

0115_10:20

x05

540DM



ОБЪЯВИТЬ КУРСОР:

DECLARE CURSOR FOR SELECT * FROM 'FLY' WHERE 'ARR' = 'CDG'

CH

Lc

Lp

tab

N

N

Lp

col

Lp

comp

Lp

Строка

x00100087

x10

x03

FLY

x00

x01

x03

ARR

x01

x3D

x03

CDG


Примечание - Оператор сравнения '3D' означает "равно".

Приложение ДА (справочное). Сведения о соответствии ссылочных международных стандартов национальным стандартам

Приложение ДА
(справочное)



Таблица ДА.1

Обозначение ссылочного международного стандарта

Степень соответствия

Обозначение и наименование соответствующего национального стандарта Российской Федерации

ISO/IEC 9075

IDT

ГОСТ Р ИСО/МЭК 9075-93 "Информационная технология. Язык баз данных SQL с расширением целостности"

ISO/IEC 7816-4

IDT

ГОСТ Р ИСО/МЭК 7816-4-2013 "Карты идентификационные. Карты на интегральных схемах. Часть 4. Организация. защита и команды для обмена"

ISO/IEC 7816-6

IDT

ГОСТ Р ИСО/МЭК 7816-6-2013 "Карты идентификационные. Карты на интегральных схемах с контактами. Часть 6. Межотраслевые элементы данных для обмена"

Примечание - В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов:

- IDT - идентичные стандарты.

УДК 336.77:002:006.354

ОКС 35.240.15

ОКП 40 8470

Ключевые слова: обработка данных, обмен информацией, идентификационные карты, IC-карты, сообщения, язык структурированных запросов, способы защиты, аутентификация




Электронный текст документа
и сверен по:
официальное издание
М.: Стандартинформ, 2018