Модель безопасности 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.<имя выражения> (<параметр>)