Модель безопасности 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.
Для вызова этих выражений нужно использовать следующую конструкцию: