Struct polyval::backend::soft::U64x2

source ·
struct U64x2(u64, u64);
Expand description

2 x u64 values

Tuple Fields§

§0: u64§1: u64

Trait Implementations§

source§

impl Add for U64x2

source§

fn add(self, rhs: Self) -> Self::Output

Adds two POLYVAL field elements.

source§

type Output = U64x2

The resulting type after applying the + operator.
source§

impl Clone for U64x2

source§

fn clone(&self) -> U64x2

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for U64x2

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for U64x2

source§

fn default() -> U64x2

Returns the “default value” for a type. Read more
source§

impl From<&GenericArray<u8, <Polyval as BlockSizeUser>::BlockSize>> for U64x2

source§

fn from(bytes: &Block) -> U64x2

Converts to this type from the input type.
source§

impl From<u128> for U64x2

source§

fn from(x: u128) -> Self

Converts to this type from the input type.
source§

impl Mul for U64x2

source§

fn mul(self, rhs: Self) -> Self

Computes carryless POLYVAL multiplication over GF(2^128) in constant time.

Method described at: https://www.bearssl.org/constanttime.html#ghash-for-gcm

POLYVAL multiplication is effectively the little endian equivalent of GHASH multiplication, aside from one small detail described here:

https://crypto.stackexchange.com/questions/66448/how-does-bearssls-gcm-modular-reduction-work/66462#66462

The product of two bit-reversed 128-bit polynomials yields the bit-reversed result over 255 bits, not 256. The BearSSL code ends up with a 256-bit result in zw[], and that value is shifted by one bit, because of that reversed convention issue. Thus, the code must include a shifting step to put it back where it should

This shift is unnecessary for POLYVAL and has been removed.

source§

type Output = U64x2

The resulting type after applying the * operator.
source§

impl PartialEq for U64x2

source§

fn eq(&self, other: &U64x2) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for U64x2

source§

impl Eq for U64x2

source§

impl StructuralPartialEq for U64x2

Auto Trait Implementations§

§

impl Freeze for U64x2

§

impl RefUnwindSafe for U64x2

§

impl Send for U64x2

§

impl Sync for U64x2

§

impl Unpin for U64x2

§

impl UnwindSafe for U64x2

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.