Язык структурированных запросов для карты (SCQL) базируется на функциональных возможностях стандартизированного языка структурированных запросов (SQL). Операторы SQL отображаются на операции SCQL внутри команды PERFORM SCQL OPERATION (ВЫПОЛНИТЬ SCQL ОПЕРАЦИЮ) (см. рисунок 9 и таблицу 2).
![]() на SCQL операции
Таблица 2
Обязательные параметры команды находятся всегда в последовательности, определенной в соответствующей командной таблице. Поэтому их тег не определен. Необязательные параметры представляют (если не указано иначе) в формате TLV.
Как и команда PERFORM SCQL OPERATION, две другие команды принадлежат к среде SCQL, но могут быть использованы также вне среды SCQL:
- команда PERFORM TRANSACTION OPERATION (ВЫПОЛНИТЬ ОПЕРАЦИЮ ТРАНЗАКЦИИ) (см. рисунок 10) и
- команда PERFORM USER OPERATION (ВЫПОЛНИТЬ ПОЛЬЗОВАТЕЛЬСКУЮ ОПЕРАЦИЮ) (см. рисунок 10).
![]() Команды в SCQL могут быть сгруппированы, как показано на рисунке 10.
Для команд, определенных в настоящем стандарте, коды команд и кодирование соответствующих операций показаны в таблице 2.
Примеры использования и кодирования этих команд показаны в приложении А.
В следующих подразделах нижеприведенная система обозначений используется для описания операторов SQL:
- слова, написанные заглавными буквами, являются SQL словами (постоянные выражения языка SQL);
- [] - необязательный;
- <...> - строка атрибута;
- ::= - состоит из;
- | - или;
- * - все.
Для кодирования параметров используется следующая система обозначений:
- Lp - длина (кодированная в одном байте) последующего параметра;
- <...> - строка параметра, состоящая из байтов с длиной Lp и смысловым значением, данным в <...>.
Для кодирования размера D (например, число столбцов или число условий) применяются следующие правила:
D ::= N,
где N - число последующих элементов, закодированное в одном байте,
или
D ::= Ln <N>,
где Ln = '01' (N закодировано в одном байте).
Элемент состоит из одного или нескольких последовательных параметров. Размер ноль кодируется в одном байте, установленном на '00'. Смысловое значение нулевого размера - это или 'все столбцы', или 'нет условий', в зависимости от команды.
Кодирование операторов сравнения в условиях поиска осуществляется согласно таблице 3.
Таблица 3
Кодирование операторов сравнения
Байты состояния SW1 - SW2 ответа означают состояние обработки в карте. В таблице 4 показано общее смысловое содержание значений SW1 - SW2, определенных в настоящем стандарте. Для каждой команды или выполняемой операции соответствующий пункт предусматривает более детальное содержание.
Таблица 4
Для целей настоящего стандарта даны более точные определения значений байтов состояния, установленных в ИСО/МЭК 7816-4.
Приняты следующие соглашения по кодированию идентификаторов:
<идентификатор> ::= <заглавная буква> [<заглавная буква>|<одноразрядное число|<_>]
<заглавная буква> ::= A|B|C|D|E|F|G|H|I|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|P>
<имя столбца> ::= <идентификатор, максимум 8 байтов>
<задаваемая часть имени словаря> ::= <идентификатор, максимум 8 байтов>|SYSTAB
<user id <1>> ::=
<individual id <2>>|
<group id <3>><разделитель><individual id>|
<group id><разделитель><subgroup id <4>>
<разделитель><individual id>|
< group id ><разделитель><звездочка>|
< group id><разделитель>< subgroup id>
<разделитель><звездочка>|
< group id><разделитель><звездочка>
<разделитель><звездочка>
<group id> ::= <идентификатор, максимум 8 байтов>
<subgroup id> ::= <идентификатор, максимум 8 байтов>
<individual id> ::= <идентификатор, максимум 8 байтов>|<special user id <5>>
<разделитель> ::= .
<звездочка> ::= *
<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.
Для атрибутов секретности приняты следующие соглашения:
<атрибуты секретности> ::= <информационный объект, связанный с защитой, как определено в других стандартах серии ИСО/МЭК 7816, например, для аутентификации или управления доступом>.
Атрибуты секретности, связанные с таблицами и представлениями, могут относиться к процедурам аутентификации, предваряющим доступ, или описывать применяемые механизмы безопасного обмена сообщениями, если выполняются операции манипулирования данными (например, считывание и запись в конфиденциальном режиме).
Атрибуты секретности, закрепленные за пользователем, относятся к аутентификации пользователя.
Если последний столбец таблицы называется USER (ПОЛЬЗОВАТЕЛЬ), то карта будет поддерживать регистрацию пользователя, производящего последнее изменение в таблице. Операция соединения состоит из вставки текущего идентификатора пользователя, установленного с помощью операции PRESENT USER, в столбец USER во время выполнения операции INSERT. Если выполняется операция UPDATE, то карта переписывает существующий идентификатор пользователя в столбце USER на текущий идентификатор пользователя.
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
<разделитель> ::= .
<тип данных> ::= <символ переменной (длина)>
<символ переменной (длина)> ::= V<длина>
<длина> ::= <двоично-кодированная длина в 1 байт>
Если наложение ограничения по уникальности используется и картой поддерживается, то карта должна обеспечить, чтобы все значения в соответствующем столбце были уникальными.
Если представлен и картой поддерживается индикатор переменной длины (т.е. максимальная длина), то карта должна проверить, не превышает ли предъявленная длина столбца указанную максимальную длину.
Таблица 5
Командный APDU команды PERFORM SCQL OPERATION на операцию
CREATE TABLE
7.1.4 Ответное сообщение
Таблица 6
Ответный APDU команды PERFORM SCQL OPERATION на операцию
CREATE TABLE
7.1.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'84': Области памяти недостаточно;
'89': Объект уже существует.
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
Примечание - Если представлено несколько условий, то они неявным образом объединяются логической операцией И.
7.2.4 Ответное сообщение
Таблица 8
Ответный APDU команды PERFORM SCQL OPERATION на операцию
CREATE VIEW
7.2.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A, а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'84': Области памяти недостаточно;
'88': Ссылочный объект не найден;
'89': Объект уже существует.
7.3.1 Определение и область применения
SCQL операция CREATE DICTIONARY задает представление на системные таблицы *O, *U и *P. Определения фиксированного представления добавляются картой в таблицу, описывающую объекты (см. таблицы 10 и 11). Какие строки системных таблиц могут быть считаны, зависит от профиля пользователя.
Примечание - У данной команды нет эквивалента в языке SQL.
7.3.2 Условия использования и защиты
Словарь может быть создан только DB_O или DBOO.
7.3.3 Командное сообщение
Данная SCQL операция относится к следующему оператору расширения SQL:
CREATE DICTIONARY <задаваемая часть имени словаря>
<задаваемая часть имени словаря> ::= <идентификатор, максимум 6 байтов, см. 6.5>|SYSTAB
Примечание - Задаваемая часть имени словаря заканчивается картой с добавлением _O для представления таблицы, описывающей объекты, _U для представления таблицы, описывающей пользователей, и _P для представления таблицы, описывающей привилегии. Если необходимо, SYSTAB должно использоваться в качестве общего имени словарей.
Таблица 9
Командный APDU команды PERFORM SCQL OPERATION на операцию
CREATE DICTIONARY
Таблица 10
Примечание - Поскольку столбец OBJOPT пуст, то в таблице 10 он не показан.
Таблица 11
Примечание - Поскольку столбец OBJOPT пуст, то в таблице 11 он не показан.
7.3.4 Ответное сообщение
Таблица 12
Ответный APDU команды PERFORM SCQL OPERATION на операцию
CREATE DICTIONARY
7.3.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A' с SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'84': Области памяти не достаточно;
'89': Объект уже существует.
7.4.1 Определение и область применения
С помощью SCQL операции DROP TABLE таблица может быть удалена.
7.4.2 Условия использования и защиты
Таблица может быть удалена только ее владельцем. Привилегии, связанные с таблицей, должны быть удалены автоматически.
7.4.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
DROP TABLE <имя таблицы>
Таблица 13
Командный APDU команды PERFORM SCQL OPERATION на операцию
DROP TABLE
7.4.4 Ответное сообщение
Таблица 14
Ответный APDU команды PERFORM SCQL OPERATION на операцию
DROP TABLE
7.4.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'88': Ссылочный объект не найден.
7.5.1 Определение и область применения
С помощью SCQL операции DROP VIEW может быть удалено представление.
7.5.2 Условия использования и защиты
Представление может быть удалено только его владельцем. Привилегии, связанные с представлением, должны быть удалены автоматически.
7.5.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
DROP VIEW <имя представления или имя словаря>
Таблица 15
Командный APDU команды PERFORM SCQL OPERATION на операцию
DROP VIEW
7.5.4 Ответное сообщение
Таблица 16
Ответный APDU команды PERFORM SCQL OPERATION на операцию
DROP VIEW
7.5.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'88': Ссылочный объект не найден.
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 <имя объекта> TO <получатель>
<привилегии> ::= <действие> [,<действие>... ]|ALL
<действие> ::= SELECT|INSERT|UPDATE|DELETE
<имя объекта> ::= <имя таблицы>|<имя представления>|<имя словаря>
<получатель> ::= <user id, см. 6.5>|*
*= все пользователи
Таблица 17
Командный APDU команды PERFORM SCQL OPERATION
на операцию GRANT
Таблица 18
7.6.4 Ответное сообщение
Таблица 19
Ответный APDU команды PERFORM SCQL OPERATION
на операцию GRANT
7.6.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A' с SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'84': Области памяти не достаточно;
'88': Ссылочный объект не найден.
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
7.7.4 Ответное сообщение
Таблица 21
Ответный APDU команды PERFORM SCQL OPERATION
на операцию REVOKE
7.7.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'88': Ссылочный объект не найден.
7.8.1 Определение и область применения
Курсор используется для указания строк в таблице или словаре. SCQL операция DECLARE CURSOR используется для объявления курсора.
7.8.2 Условия использования и защиты
Объявление курсора допускается, только если действующий пользователь авторизирован для доступа к ссылочной таблице, представлению или словарю. Пользователь должен быть владельцем ссылочного объекта или по крайней мере иметь одну привилегию для доступа к ссылочному объекту (о сравнении текущего идентификатора пользователя с идентификатором пользователя, находящимся в системной таблице *P, см. 6.5).
В каждый данный момент времени может существовать только один курсор, т.е. если объявляется новый курсор, то предыдущий больше недействителен.
7.8.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
DECLARE CURSOR FOR <выбор>
<выбор> ::= SELECT <список выбора> FROM <имя объекта> [WHERE <условие поиска> [AND <условие поиска>,...]]
<список выбора> ::= *|<имя столбца>[,<имя столбца>]
<имя объекта> ::= <имя таблицы>|<имя представления>|<имя словаря>
<условие поиска> ::= <имя столбца><оператор сравнения><строка>
<строка> ::= '<последовательность байтов>'
*= все столбцы
Примечание - Поскольку одновременно возможен только один курсор, имя курсора не используется.
Таблица 22
Командный APDU команды PERFORM SCQL OPERATION
на операцию REVOKE
Примечание - Если представлено несколько условий, то они неявно объединяются с помощью логической операции И.
7.8.4 Ответное сообщение
Таблица 23
Ответный APDU команды PERFORM SCQL OPERATION на операцию
DECLARE CURSOR
7.8.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'88': Ссылочный объект не найден.
7.9.1 Определение и область применения
SCQL операция OPEN открывает курсор, т.е. курсор позиционируется на первую строку, которая соответствует выбору, определенному ранее с помощью операции DECLARE CURSOR.
7.9.2 Условия использования и защиты
Курсор должен быть объявлен заранее.
7.9.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
OPEN
Таблица 24
Командный APDU команды PERFORM SCQL OPERATION
на операцию OPEN
7.9.4 Ответное сообщение
Таблица 25
Ответный APDU команды PERFORM SCQL OPERATION
на операцию OPEN
7.9.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '62', а байт с SW2 =
'82': Достигнут конец таблицы;
- если байт SW1 = '69', а байт SW2 =
'85': Необходимые команды или операции не выполнены ранее (не определен курсор).
7.10.1 Определение и область применения
SCQL операция NEXT устанавливает курсор на следующую строку согласно спецификации курсора.
7.10.2 Условия использования и защиты
Курсор должен быть предварительно открыт.
7.10.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
NEXT
Таблица 26
Командный APDU команды PERFORM SCQL OPERATION
на операцию NEXT
7.10.4 Ответное сообщение
Таблица 27
Ответный APDU команды PERFORM SCQL OPERATION
на операцию NEXT
7.10.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '62', а байт SW2 =
'82': Достигнут конец таблицы;
- если байт SW1 = '69', а байт SW2 =
'85': Необходимые команды или операции не выполнены ранее (не определен курсор).
7.11.1 Определение и область применения
SCQL операция FETCH позволяет вызвать строку или ее часть. Курсор должен указать на строку, которая должна быть выбрана.
7.11.2 Условия использования и защиты
Операция может быть выполнена только владельцем объекта или пользователем с привилегией SELECT. Курсор должен быть предварительно открыт.
7.11.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
FETCH
Таблица 28
Командный APDU команды PERFORM SCQL OPERATION
на операцию FETCH
7.11.4 Ответное сообщение
Таблица 29
Ответный APDU команды PERFORM SCQL OPERATION
на операцию FETCH
Примечание - Если используется протокол передачи T = 0, длина выбранных данных указывается в байтах состояния (SW1 - SW2 = '6Cxx', где xx означает число доступных байтов данных). Данные должны извлекаться с помощью повторной подачи той же команды со значением поля Le, указанным в SW2.
Если используется протокол передачи T = 1, данные передаются в ответном APDU на операцию FETCH.
7.11.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
'85': Необходимые команды или операции не выполнены ранее (курсор не определен)
7.12.1 Определение и область применения
SCQL операция FETCH NEXT должна использоваться для чтения логически следующей строки из позиции курсора. Курсор устанавливается на выбранную строку.
7.12.2 Условия использования и защиты
Операция может выполняться только владельцем объекта или пользователем с привилегией SELECT. Курсор должен быть предварительно открыт.
7.12.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
FETCH NEXT
Таблица 30
Командный APDU команды PERFORM SCQL OPERATION на операцию
FETCH NEXT
7.12.4 Ответное сообщение
Таблица 31
Ответный APDU команды PERFORM SCQL OPERATION на операцию
FETCH NEXT
7.12.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '62', а байт SW2 =
'82': Достигнут конец таблицы;
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
'85': Необходимые команды или операции не выполнены ранее (не определен курсор).
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
7.13.4 Ответное сообщение
Таблица 33
Ответный APDU команды PERFORM SCQL OPERATION
на операцию INSERT
7.13.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '62', а байт SW2 =
'82': Достигнут конец таблицы;
- если байт SW1 = '67', а байт SW2 =
'00': Неправильная длина;
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'84': Области памяти недостаточно;
'88': Ссылочный объект не найден;
'89': Объект уже существует (значение в столбце не уникально).
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
7.14.4 Ответное сообщение
Таблица 35
Ответный APDU команды PERFORM SCQL OPERATION
на операцию UPDATE
7.14.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '67', а байт SW2 =
'00': Неправильная длина;
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
'85': Необходимые команды или операции не выполнены ранее (не определен курсор);
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'84': Области памяти недостаточно;
'89': Объект уже существует (значение в столбце не уникально).
7.15.1 Определение и область применения
С помощью SQL операции DELETE из таблицы может быть удалена строка, на которую указывает курсор. Курсор перемещается на логически следующую строку.
7.15.2 Условия использования и защиты
Команда может выполняться только владельцем объекта или пользователем с привилегией DELETE для ссылочной таблицы.
7.15.3 Командное сообщение
Данная SCQL операция относится к следующему SQL оператору:
DELETE
Таблица 36
Командный APDU команды PERFORM SCQL OPERATION
на операцию DELETE
7.15.4 Ответное сообщение
Таблица 37
Ответный APDU команды PERFORM SCQL OPERATION
на операцию DELETE
7.15.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '62', а байт SW2 =
'82': Достигнут конец таблицы;
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
'85': Необходимые команды или операции не выполнены ранее (не определен курсор).
Транзакция в данном контексте - это процесс изменения в базе данных. Изменением может быть обновление или вставка одной или нескольких строк.
Команда PERFORM TRANSACTION OPERATION обеспечивает операции, необходимые для подтверждения или отмены транзакций.
Если эта команда не используется или не поддерживается, SCQL операция всегда выполняется как завершение транзакции, т.е. изменение, обусловленное операцией, немедленно вступает в силу.
8.2.1 BEGIN (НАЧАТЬ ТРАНЗАКЦИЮ)
8.2.1.1 Определение и область применения
Операция транзакции BEGIN выделяет область для копии содержимого памяти, например, строки.
8.2.1.2 Условия использования и защиты
Область памяти, которая предоставляется, зависит от реализации. Рекомендуется, чтобы выделяемая область памяти была достаточной для буферизации по крайней мере одной строки.
8.2.1.3 Командное сообщение
Таблица 38
Командный APDU команды PERFORM TRANSACTION OPERATION
на операцию BEGIN
8.2.1.4 Ответное сообщение
Таблица 39
Ответный APDU команды PERFORM TRANSACTION OPERATION
на операцию BEGIN
8.2.1.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '6A', а байт 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
8.2.2.4 Ответное сообщение
Таблица 41
Ответный APDU команды PERFORM TRANSACTION OPERATION
на операцию COMMIT
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
8.2.3.4 Ответное сообщение
Таблица 43
Ответный APDU команды PERFORM TRANSACTION OPERATION
на операцию ROLLBACK
8.2.3.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'85': Необходимые команды или операции не выполнены ранее (нет транзакции BEGIN).
Управление пользователями относится к:
- идентификации пользователя;
- аутентификации пользователя;
- авторизации пользователя;
- регистрации/отмене регистрации пользователя.
Для идентификации пользователя используется идентификатор пользователя, который может быть структурирован, как изложено в 6.5.
Если есть необходимость подтверждения, что представленный идентификатор пользователя принадлежит данному пользователю, то должна быть выполнена процедура аутентификации. Соответствующий механизм для аутентификации пользователя - это, например:
- механизм верификации по паролю;
- механизм биометрической верификации;
- криптографический механизм, базирующийся, например, на симметричном алгоритме или на системе с открытым ключом в комбинации с сертификатами.
В сертификате может быть представлен идентификатор пользователя, применимый для идентификации пользователя.
Авторизация пользователя имеет дело с правами пользователя на выполнение определенных операций или действий. В среде SCQL авторизация пользователя связана с:
- профилем пользователя (DB_O, DBOO или DBBU);
- привилегиями пользователя (см. табл. 18) и, необязательно, с
Регистрация пользователя охватывает регистрацию пользователя с его идентификатором (пользователя), профилем (пользователя) и, возможно, с его атрибутами секретности (см. 6.6). Отмена регистрации пользователя выполняется удалением регистрации.
В данном разделе определены следующие операции для идентификации пользователя, основанные на команде PERFORM USER OPERATION:
- PRESENT USER;
- CREATE USER;
- DELETE USER.
Команды и операции, относящиеся к процедуре аутентификации, не описываются в настоящем стандарте. Однако при создании пользователя с его идентификатором (пользователя) и с его профилем пользователя атрибуты секретности могут быть установлены и представлены соответствующими DO, связанными с защитой, определенными в других стандартах серии ИСО/МЭК 7816.
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
9.2.1.4 Ответное сообщение
Таблица 45
Ответный APDU команды PERFORM USER OPERATION на операцию
PRESENT USER
9.2.1.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '6A', а байт 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 может быть выполнена только пользователем с профилем DBO или 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
Примечание - Пользователь с профилем DB_O может быть вставлен в таблицу, описывающую пользователей, только во время фазы установки базы данных SCQL.
9.2.2.4 Ответное сообщение
Таблица 47
Ответный APDU команды PERFORM USER OPERATION на операцию
CREATE USER
9.2.2.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт 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
9.2.3.4 Ответное сообщение
Таблица 49
Ответный APDU команды PERFORM USER OPERATION на операцию
DELETE USER
9.2.3.5 Состояния после обработки
Могут возникать следующие специфические состояния ошибки:
- если байт SW1 = '69', а байт SW2 =
'82': Состояние защиты неудовлетворительное;
- если байт SW1 = '6A', а байт SW2 =
'80': Некорректный(ые) параметр(ы) в поле данных;
'88': Ссылочный объект (id пользователя) не найден.
(справочное)
В данном приложении приведены примеры использования и кодирования операции PRESENT USER и некоторых SCQL операций, когда кодирование размера D происходит в одном байте.
Используются следующие сокращения:
CH - заголовок команды (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'
СОЗДАТЬ ТАБЛИЦУ:
CREATE TABLE FLY ('DEP', 'ARR', 'F_NO.U', 'TIME', 'PRICE')
Примечание - F_NO.U означает, что значение в столбце F_NO должно быть уникальным.
СОЗДАТЬ ПРЕДСТАВЛЕНИЕ:
CREATE VIEW FLY_A AS SELECT ('DEP', 'ARR', 'F_NO', 'TIME') FROM FLY
НАЗНАЧИТЬ ПРИВИЛЕГИЮ (SELECT):
GRANT SELECT ON 'FLY_A' TO*
ВСТАВИТЬ:
INSERT INTO 'FLY' VALUES ('FRA', 'CDG', 'LH4711', '0115_10:20', '540DM')
ОБЪЯВИТЬ КУРСОР:
DECLARE CURSOR FOR SELECT * FROM 'FLY' WHERE 'ARR' = 'CDG'
Примечание - Оператор сравнения '3D' означает "равно".
(справочное)
НАЦИОНАЛЬНЫМ СТАНДАРТАМ
Таблица ДА.1
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/41/gost_97609.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||