Типы данных в языке PSL
Типы данных, поддерживаемые в языке PSL, приведены в таблице ниже.
Типы данных в языке PSL
Обозначения типов | Описание типов |
---|---|
| Беззнаковое целое число |
| Знаковое целое число |
| Логический тип Логический тип включает два значения: |
| Текстовый тип |
| Тип Тип |
| Текстовый литерал Текстовый литерал включает одно неизменяемое текстовое значение. Примеры определений текстовых литералов:
|
< | Целочисленный литерал Целочисленный литерал включает одно неизменяемое целочисленное значение. Примеры определений числовых литералов:
|
< | Вариантный тип Вариантный тип объединяет два и более типов и может выступать в роли любого из них. Примеры определений вариантных типов:
|
| Словарь Словарь состоит из полей одного или нескольких типов. Словарь может быть пустым. Примеры определений словарей:
|
| Кортеж Кортеж состоит из полей одного или нескольких типов, расположенных в порядке перечисления типов. Кортеж может быть пустым. Примеры определений кортежей:
|
| Множество Множество включает ноль и более уникальных элементов одного типа. Примеры определений множеств:
|
| Список Список включает ноль и более элементов одного типа. Примеры определений списков:
|
| Ассоциативный массив Ассоциативный массив включает ноль и более записей типа "ключ-значение" с уникальными ключами. Пример определения ассоциативного массива:
|
| Массив Массив включает заданное число элементов одного типа. Пример определения массива:
|
| Последовательность Последовательность включает от ноля до заданного числа элементов одного типа. Пример определения последовательности:
|
Псевдонимы некоторых типов PSL
В файле nk/base.psl
из состава KasperskyOS SDK определены типы данных, которые используются как типы параметров (или структурных элементов параметров) и возвращаемых значений для методов разных моделей безопасности. Псевдонимы и определения этих типов приведены в таблице ниже.
Псевдонимы и определения некоторых типов данных в языке PSL
Псевдоним типа | Определение типа |
---|---|
| Беззнаковое целое число
|
| Знаковое целое число
|
| Целое число
|
| Скалярный литерал
|
| Литерал
|
| Тип идентификатора безопасности SID
|
| Тип идентификатора безопасности SID
|
| Словарь, содержащий поля для SID и маски прав дескриптора
|
| Тип данных, принимаемых выражениями моделей безопасности, вызываемыми в конструкции
|
| Тип данных, задающих условия выполнения аудита безопасности
|
Отображение типов IDL на типы PSL
Для описания параметров интерфейсных методов используются типы данных языка IDL. Входные данные для методов моделей безопасности имеют типы из языка PSL. Набор типов данных в языке IDL отличается от набора типов данных в языке PSL. Поскольку параметры интерфейсных методов, передаваемые в IPC-сообщениях, могут использоваться как входные данные для методов моделей безопасности, разработчику описания политики нужно понимать, как типы IDL отображаются на типы PSL.
Целочисленные типы IDL отображаются на целочисленные типы PSL, а также на вариантные типы PSL, объединяющие эти целочисленные типы (в том числе с другими типами). Например, знаковые целочисленные типы IDL отображаются на тип Signed
в PSL, целочисленные типы IDL отображаются на тип ScalarLiteral
в PSL.
Тип Handle
в IDL отображается на тип HandleDesc
в PSL.
Объединения и структуры IDL отображаются на словари PSL.
Массивы и последовательности IDL отображаются на массивы и последовательности PSL соответственно.
Строковые буферы в IDL отображаются на текстовый тип PSL.
В настоящее время байтовые буферы в IDL не отображаются на типы PSL. Соответственно, данные, содержащиеся в байтовых буферах, не могут использоваться как входы для методов моделей безопасности.