Описания интерфейсов сущности (EDL, CDL, IDL)

Для контроля взаимодействий между сущностями необходимо, чтобы структура пересылаемых IPC-сообщений была прозрачна для модуля безопасности. В KasperskyOS это достигается с помощью статического декларирования интерфейсов сущностей. Для этого используются специальные языки: Entity Definition Language (EDL), Component Definition Language (CDL) и Interface Definition Language (IDL). Если IPC-сообщение не соответствует описанию интерфейса, оно будет отклонено модулем безопасности.

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

Виды статических описаний

Описание интерфейсов сущности строится по модели "сущность-компонент-интерфейс":

Пример

Ниже приведены статические описания решения, состоящего из сущности Client, не реализующей ни одного интерфейса, и сущности Server, реализующей интерфейс FileOps.

Client.edl

// Статическое описание состоит только из имени сущности

entity Client

Server.edl

// Сущность Server содержит экземпляр компонента Operations

entity Server

components {

OpsComp: Operations

}

Operations.cdl

// Компонент Operations реализует интерфейс FileOps

component Operations

interfaces {

FileOpsImpl: FileOps

}

FileOps.idl

package FileOps

// Объявление пользовательского типа String

typedef array <UInt8, 256> String;

// Интерфейс FileOps содержит единственный метод Open с входным аргументом name и выходным аргументом h

interface {

Open(in String name, out UInt32 h);

}

См. подробнее о синтаксисе статических описаний.

В начало