KasperskyOS Community Edition 1.3

Модель безопасности Math

Объект модели безопасности Math

В файле basic.psl содержится декларация, которая создает объект модели безопасности Math с именем math. Соответственно, включение файла basic.psl в описание политики безопасности решения обеспечивает создание объекта модели безопасности Math по умолчанию.

Объект модели безопасности Math не имеет параметров и не может быть покрыт аудитом безопасности.

Создавать дополнительные объекты модели безопасности Math не требуется.

Методы модели безопасности Math

Модель безопасности Math содержит выражения, которые выполняют операции целочисленной арифметики, побитовые операции и операции приведения целочисленных типов. Для вызова части этих выражений нужно использовать следующие арифметические операторы:

  • <Number> + <Number> – "сложение". Возвращает значения типа Number.
  • <Number> - <Number> – "вычитание". Возвращает значения типа Number.
  • <Number> * <Number> – "умножение". Возвращает значения типа Number.
  • <Number> | <Number> – "побитовое ИЛИ". Возвращает значения типа Number.
  • <Number> & <Number> – "побитовое И". Возвращает значения типа Number.
  • ~ <Number> – "побитовое отрицание". Возвращает значения типа Number.

Другая часть включает следующие выражения:

  • neg (<Signed>) – "изменение знака числа". Возвращает значения типа Signed.
  • abs (<Signed> ) – "получение модуля числа". Возвращает значения типа Signed.
  • sum (<List<Number>>) – "сложение чисел из списка". Возвращает значения типа Number. Если передать через параметр пустой список значений ([]), возвращает 0.
  • product (<List<Number>>) – "перемножение чисел из списка". Возвращает значения типа Number. Если передать через параметр пустой список значений ([]), возвращает 1.
  • uint64 (<Unsigned>) – "приведение к типу UInt64".
  • uint32 (<UInt8 | UInt16 | UInt32>) – "приведение к типу UInt32".
  • uint16 (<UInt8 | UInt16>) – "приведение к типу UInt16".
  • sint64 (<Signed | UInt8 | UInt16 | UInt32>) – "приведение к типу SInt64".
  • sint32 (<SInt8 | SInt16 | SInt32 | UInt8 | UInt16>) – "приведение к типу SInt32".
  • sint16 (<SInt8 | SInt16 | UInt8>) – "приведение к типу SInt16".
  • signedToUInt64 (<Signed>) – "приведение к типу UInt64". Отрицательные числа преобразуются в положительные вычитанием из 2^64. Например, -1 преобразуется в 2^64-1.
  • signedToUInt32 (<SInt8 | SInt16 | SInt32>) – "приведение к типу UInt32". Отрицательные числа преобразуются в положительные вычитанием из 2^32. Например, -3 преобразуется в 2^32-3.
  • signedToUInt16 (<SInt8 | SInt16>) – "приведение к типу UInt16". Отрицательные числа преобразуются в положительные вычитанием из 2^16. Например, -5 преобразуется в 2^16-5.
  • signedToUInt8 (<SInt8>) – "приведение к типу UInt8". Отрицательные числа преобразуются в положительные вычитанием из 2^8. Например, -7 преобразуется в 2^8-7.

Для вызова этих выражений нужно использовать следующую конструкцию:

math.<имя выражения> (<параметр>)