Expand description
Binary tower field implementations for use in Binius.
This library implements binary tower field arithmetic. 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$. Mathematically, we label these sets $T_{\iota}$.
Re-exports§
pub use arithmetic_traits::WideMul;pub use field::Field;pub use field::FieldOps;pub use packed::PackedField;pub use sliced_packed_field::SlicedPackedField;pub use transpose::square_transpose;pub use aes_field::*;pub use binary_field::*;pub use extension::*;pub use ghash::*;pub use ghash_sq::*;pub use packed_aes::*;pub use packed_binary_field::*;pub use packed_extension::*;
Modules§
- aes_
field - arch
- arithmetic_
traits - binary_
field - extension
- field
- ghash
- Binary field implementation of GF(2^128) with a modulus of X^128 + X^7 + X^2 + X + 1. This is the GHASH field used in AES-GCM.
- ghash_
sq - Binary field implementation of GF(2^256) as a degree-two extension of the GHASH field.
- linear_
transformation - packed
- Traits for packed field elements which support SIMD implementations.
- packed_
aes - packed_
binary_ field - packed_
extension - sliced_
packed_ field - A packed extension field in a sliced (struct-of-arrays) memory layout.
- transpose
- util
Macros§
Structs§
- Ghash
SqInvert InvertOrZerostrategy forPackedGhashSq1x256b.- Ghash
SqSquare Squarestrategy forPackedGhashSq1x256b.- Sliced
Ghash SqWide - The unreduced product of two GHASH² elements, as three separate GHASH products.
Traits§
- Divisible
- Divides an underlier type into smaller underliers in memory and iterates over them.
- Maskable
- Branchless conditional lane selection for fields and packed fields.
- Random
- A value that can be randomly generated
- Underlier
Type - Primitive integer underlying a binary field or packed binary field implementation. Note that this type is not guaranteed to be POD, U1, U2 and U4 have some unused bits.
- With
Underlier - A type that is transparently backed by an underlier.
Type Aliases§
- Packed
Binary Ghash1x128b - Packed
Binary Ghash2x128b - Packed
Binary Ghash4x128b - Packed
Ghash Sq1x256b - Packed
Ghash Sq2x256b - Sliced
Ghash Sq1x256b - Packed
GhashSq256bholding one extension scalar (the degenerate width-one packing). - Sliced
Ghash Sq2x256b - Packed
GhashSq256bholding two extension scalars. - Sliced
Ghash Sq4x256b - Packed
GhashSq256bholding four extension scalars. - Sliced
Ghash Sq256b - A GHASH² packing whose two GHASH coordinates pack into
PackedPrimitiveType<U, Ghash128b>.