Инициализация IPC-транспорта для обращения к модулю безопасности (transport-kos-security.h)

21 мая 2024

ID libkos_ipc_security_transport_api

API определен в заголовочном файле sysroot-*-kos/include/coresrv/nk/transport-kos-security.h из состава KasperskyOS SDK.

API позволяет инициализировать IPC-транспорт для обращения к модулю безопасности Kaspersky Security Module через интерфейс безопасности. Поверх IPC-транспорта работает транспортный код.

Сведения о функциях API приведены в таблице ниже.

В этом разделе приведен пример использования API. В этом примере программа, которая обращается к модулю безопасности, имеет следующую формальную спецификацию:

Verifier.edl

entity Verifier

security Approve

Approve.idl

package Approve

interface {

Check(in UInt32 port);

}

Фрагмент описания политики в примере:

security.psl

...

security src=Verifier, method=Check { assert (message.port > 80) }

...

Использование API

Чтобы инициализировать IPC-транспорт для обращения к модулю безопасности, нужно вызвать функцию NkKosSecurityTransport_Init().

Пример использования функции NkKosSecurityTransport_Init():

int main(void)

{

/* Объявить структуру с параметрами IPC-транспорта для обращения к

* модулю безопасности */

NkKosSecurityTransport security_transport;

/* Объявить прокси-объект. (Тип прокси-объекта является автоматически

* сгенерированным транспортным кодом.) */

struct Approve_proxy security_proxy;

/* Объявить структуры для сохранения фиксированной части IPC-запроса и IPC-ответа для

* метода интерфейса безопасности. (Типы структур являются автоматически сгенерированным

* транспортным кодом.) */

struct Approve_Check_req security_req;

struct Approve_Check_res security_res;

/* Инициализировать структуру с параметрами IPC-транспорта для обращения к

* модулю безопасности */

if (NkKosSecurityTransport_Init(&security_transport, NK_NULL, 0) == NK_EOK) {

/* Инициализировать прокси-объект. (Метод инициализации прокси-объекта и

* идентификатор интерфейса безопасности Verifier_securityIid

* являются автоматически сгенерированным транспортным кодом.) */

Approve_proxy_init(&security_proxy, &security_transport.base, Verifier_securityIid);

}

...

/* Вызвать метод интерфейса безопасности. (Метод является автоматически сгенерированным

* транспортным кодом. Метод не передает через параметр security_res никакие данные.

* Указать этот параметр нужно только потому, что этого требует реализация метода.) */

security_req.port = 80;

nk_err_t result = Approve_Check(&security_proxy.base, &security_req,

NULL, &security_res, NULL);

if (result == NK_EOK)

fprintf(stderr, "Granted");

if (result == NK_EPERM)

fprintf(stderr, "Denied");

else

fprintf(stderr, "Error");

return EXIT_SUCCESS;

}

Если процессу требуется использовать несколько интерфейсов безопасности, то нужно инициализировать столько же прокси-объектов, указав один и тот же IPC-транспорт и уникальные идентификаторы интерфейсов безопасности.

Сведения о функциях API

Функции transport-kos-security.h

Функция

Сведения о функции

NkKosSecurityTransport_Init()

Назначение

Инициализирует IPC-транспорт для обращения к модулю безопасности Kaspersky Security Module через интерфейс безопасности.

Параметры

  • [out] transport – указатель на структуру с параметрами IPC-транспорта для обращения к модулю безопасности.
  • [in] view – параметр, который должен иметь значение NK_NULL.
  • [in] size – параметр, который должен иметь значение 0.

Возвращаемые значения

В случае успеха возвращает NK_EOK, иначе возвращает код ошибки.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!