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
Функция |
Сведения о функции |
---|---|
|
Назначение Инициализирует IPC-транспорт для обращения к модулю безопасности Kaspersky Security Module через интерфейс безопасности. Параметры
Возвращаемые значения В случае успеха возвращает |