binius_field::binary_field

Trait TowerField

source
pub trait TowerField: BinaryField
where Self: From<Self::Canonical>, Self::Canonical: From<Self>,
{ type Canonical: TowerField + SerializeBytes + DeserializeBytes; const TOWER_LEVEL: usize = _; // Provided methods fn basis(iota: usize, i: usize) -> Result<Self, Error> { ... } fn mul_primitive(self, iota: usize) -> Result<Self, Error> { ... } }
Expand description

A binary field isomorphic to a binary tower field.

The canonical binary field tower construction is specified in DP23, section 2.3. This is a family of binary fields with extension degree $2^{\iota}$ for any tower height $\iota$. This trait can be implemented on any binary field isomorphic to the canonical tower field.

Provided Associated Constants§

source

const TOWER_LEVEL: usize = _

The level $\iota$ in the tower, where this field is isomorphic to $T_{\iota}$.

Required Associated Types§

source

type Canonical: TowerField + SerializeBytes + DeserializeBytes

The canonical field isomorphic to this tower field. Currently for every tower field, the canonical field is Fan-Paar’s binary field of the same degree.

Provided Methods§

source

fn basis(iota: usize, i: usize) -> Result<Self, Error>

source

fn mul_primitive(self, iota: usize) -> Result<Self, Error>

Multiplies a field element by the canonical primitive element of the extension $T_{\iota + 1} / T_{iota}$.

We represent the tower field $T_{\iota + 1}$ as a vector space over $T_{\iota}$ with the basis ${1, \beta^{(\iota)}_1}$. This operation multiplies the element by $\beta^{(\iota)}_1$.

§Throws
  • Error::ExtensionDegreeTooHigh if iota >= Self::TOWER_LEVEL

Object Safety§

This trait is not object safe.

Implementors§

source§

impl TowerField for AESTowerField8b

source§

impl TowerField for AESTowerField16b

source§

impl TowerField for AESTowerField32b

source§

impl TowerField for AESTowerField64b

source§

impl TowerField for AESTowerField128b

source§

impl TowerField for BinaryField128bPolyval

source§

impl TowerField for BinaryField1b

source§

impl TowerField for BinaryField2b

source§

impl TowerField for BinaryField4b

source§

impl TowerField for BinaryField8b

source§

impl TowerField for BinaryField16b

source§

impl TowerField for BinaryField32b

source§

impl TowerField for BinaryField64b

source§

impl TowerField for BinaryField128b