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