Struct AuthenticatedDensePoly

Source
pub struct AuthenticatedDensePoly<C: CurveGroup> {
    pub coeffs: Vec<AuthenticatedScalarResult<C>>,
}
Expand description

An authenticated polynomial; i.e. a polynomial in which the coefficients are secret shared between parties

This is modeled after the ark_poly::DensePolynomial source

Fields§

§coeffs: Vec<AuthenticatedScalarResult<C>>

A vector of coefficients, the coefficient for x^i is stored at index i

Implementations§

Source§

impl<C: CurveGroup> AuthenticatedDensePoly<C>

Source

pub fn from_coeffs(coeffs: Vec<AuthenticatedScalarResult<C>>) -> Self

Constructor

Source

pub fn zero(fabric: &MpcFabric<C>) -> Self

Allocate the zero polynomial (additive identity) in the given fabric

Source

pub fn one(fabric: &MpcFabric<C>) -> Self

Allocate the one polynomial (multiplicative identity) in the given fabric

Source

pub fn degree(&self) -> usize

Get the degree of the represented polynomial

Source

pub fn random(d: usize, fabric: &MpcFabric<C>) -> Self

Sample a random polynomial of given degree

Source

pub fn fabric(&self) -> &MpcFabric<C>

Get the fabric underlying the polynomial

Source

pub fn eval(&self, x: &ScalarResult<C>) -> AuthenticatedScalarResult<C>

Evaluate the polynomial at a given point

TODO: Opt for a more efficient implementation that allocates fewer gates, i.e. by awaiting all results then creating the evaluation

Source

pub fn open(&self) -> DensePolynomialResult<C>

Open the polynomial to the base type DensePolynomial

Source

pub fn open_authenticated(&self) -> AuthenticatedDensePolyOpenResult<C>

Open the polynomial and authenticate the shares

Source§

impl<C: CurveGroup> AuthenticatedDensePoly<C>

Inversion and division helpers

Source

pub fn mod_xn(&self, n: usize) -> Self

Reduce a given polynomial mod x^n

For a modulus of this form, this is equivalent to truncating the coefficients

Source

pub fn rev(&self) -> Self

Reverse the coefficients of the polynomial and return a new polynomial

This is useful when implementing division between authenticated polynomials as per: https://iacr.org/archive/pkc2006/39580045/39580045.pdf Effectively, for a given polynomial a(x), the operation rev(a) returns the polynomial: rev(a)(x) = x^deg(a) * a(1/x) which is emulated by reversing the coefficients directly.

See the division docstring below for a more detailed explanation

Source

pub fn random_polynomial(n: usize, fabric: &MpcFabric<C>) -> Self

Get a random, shared masking polynomial of degree n

Source

pub fn mul_inverse_mod_t(&self, t: usize) -> Self

Compute the multiplicative inverse of a polynomial in the quotient ring F[x] / (x^t)

Uses an extension of the inverse method defined in: https://dl.acm.org/doi/pdf/10.1145/72981.72995

Trait Implementations§

Source§

impl<C: CurveGroup> Add<&AuthenticatedDensePoly<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &AuthenticatedDensePoly<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a AuthenticatedDensePoly<C>> for &'a DensePolynomial<C::ScalarField>

lhs borrowed, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a AuthenticatedDensePoly<C>> for &'a DensePolynomialResult<C>

lhs borrowed, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a AuthenticatedDensePoly<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a AuthenticatedDensePoly<C>> for DensePolynomial<C::ScalarField>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a AuthenticatedDensePoly<C>> for DensePolynomialResult<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add<&DensePolynomial<<C as Group>::ScalarField>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &DensePolynomial<C::ScalarField>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a DensePolynomial<<C as Group>::ScalarField>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a DensePolynomial<C::ScalarField>) -> Self::Output

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add<&DensePolynomialResult<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &DensePolynomialResult<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<&'a DensePolynomialResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: &'a DensePolynomialResult<C>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<AuthenticatedDensePoly<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<AuthenticatedDensePoly<C>> for &'a DensePolynomial<C::ScalarField>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<AuthenticatedDensePoly<C>> for &'a DensePolynomialResult<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add<AuthenticatedDensePoly<C>> for DensePolynomial<C::ScalarField>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add<AuthenticatedDensePoly<C>> for DensePolynomialResult<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<DensePolynomial<<C as Group>::ScalarField>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: DensePolynomial<C::ScalarField>) -> Self::Output

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add<DensePolynomial<<C as Group>::ScalarField>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: DensePolynomial<C::ScalarField>) -> Self::Output

Performs the + operation. Read more
Source§

impl<'a, C: CurveGroup> Add<DensePolynomialResult<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add<DensePolynomialResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<C: CurveGroup> Add for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the + operator.
Source§

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

Performs the + operation. Read more
Source§

impl<C: Clone + CurveGroup> Clone for AuthenticatedDensePoly<C>

Source§

fn clone(&self) -> AuthenticatedDensePoly<C>

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<C: Debug + CurveGroup> Debug for AuthenticatedDensePoly<C>

Source§

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

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

impl<C: Default + CurveGroup> Default for AuthenticatedDensePoly<C>

Source§

fn default() -> AuthenticatedDensePoly<C>

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

impl<C: CurveGroup> Div<&AuthenticatedDensePoly<C>> for &AuthenticatedDensePoly<C>

Authenticated division, i.e. division in which the divisor is a secret shared polynomial

We follow the approach of: https://iacr.org/archive/pkc2006/39580045/39580045.pdf (Section 4)

To see why this method holds, consider the rev operation for a polynomial a(x): rev(a) = x^deg(a) * a(1/x) Note that this operation is equivalent to reversing the coefficients of a(x) For f(x) / g(x) where deg(f) = n, deg(g) = m, the objective of a division with remainder algorithm is to solve: f(x) = g(x)q(x) + r(x) for q(x), r(x) uniquely where deg(r) < deg(g).

We could solve for q(x) easily if: 1. We could “mod out” r(x) and 2. If g^{-1}(x) exists The rev operator provides a transformation that makes both of these true: rev(f) = rev(g) * rev(q) + x^{n - m + 1} * rev(r) Again, we have used the rev operator to reverse the coefficients of each polynomial so that the leading coefficients are those of r(x). Now we can “mod out” the highest terms to get: rev(f) = rev(g) * rev(q) mod x^{n - m + 1} And now that we are working in the quotient ring F[x] / (x^{n - m + 1}), we can be sure that rev(g)^{-1}(x) exists if its lowest degree coefficient (constant coefficient) is non-zero. For random (blinded) polynomials, this is true with probability 1 - 1/p.

So we: 1. apply the rev transformation, 2. mod out rev{r} and solve for rev(q) 3. undo the rev transformation to get q(x) 4. solve for r(x) = f(x) - q(x)g(x), though for floor division we skip this step

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: &AuthenticatedDensePoly<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<'a, C: CurveGroup> Div<&'a AuthenticatedDensePoly<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<C: CurveGroup> Div<&DensePolynomialResult<C>> for &AuthenticatedDensePoly<C>

Given a public divisor b(x) and shared dividend a(x) = a_1(x) + a_2(x) for party shares a_1, a_2 We can divide each share locally to obtain a secret sharing of \floor{a(x) / b(x)}

To see this, consider that a_1(x) = q_1(x)b(x) + r_1(x) and a_2(x) = q_2(x)b(x) + r_2(x) where: - deg(q_1) = deg(a_1) - deg(b) - deg(q_2) = deg(a_2) - deg(b) - deg(r_1) < deg(b) - deg(r_2) < deg(b) The floor division operator for a(x), b(x) returns q(x) such that there exists r(x): deg(r) < deg(b) where a(x) = q(x)b(x) + r(x) Note that a_1(x) + a_2(x) = (q_1(x) + q_2(x))b(x) + r_1(x) + r_2(x), where of course deg(r_1 + r_2) < deg(b), so \floor{a(x) / b(x)} = q_1(x) + q_2(x); making q_1, q_2 additive secret shares of the result as desired

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: &DensePolynomialResult<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<'a, C: CurveGroup> Div<&'a DensePolynomialResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: &'a DensePolynomialResult<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<'a, C: CurveGroup> Div<AuthenticatedDensePoly<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<'a, C: CurveGroup> Div<DensePolynomialResult<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: DensePolynomialResult<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<C: CurveGroup> Div<DensePolynomialResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: DensePolynomialResult<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<C: CurveGroup> Div for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the / operator.
Source§

fn div(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the / operation. Read more
Source§

impl<C: CurveGroup> Mul<&AuthenticatedDensePoly<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for &'a AuthenticatedScalarResult<C>

lhs borrowed, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for &'a DensePolynomialResult<C>

lhs borrowed, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for &'a ScalarResult<C>

lhs borrowed, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for &'a Scalar<C>

lhs borrowed, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for AuthenticatedScalarResult<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for DensePolynomialResult<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for ScalarResult<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedDensePoly<C>> for Scalar<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<&AuthenticatedScalarResult<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &AuthenticatedScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a AuthenticatedScalarResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a AuthenticatedScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<&DensePolynomial<<C as Group>::ScalarField>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &DensePolynomial<C::ScalarField>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<&DensePolynomialResult<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &DensePolynomialResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a DensePolynomialResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a DensePolynomialResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<&ResultHandle<C, Scalar<C>>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &ScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a ResultHandle<C, Scalar<C>>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a ScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<&Scalar<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &Scalar<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<&'a Scalar<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: &'a Scalar<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for &'a AuthenticatedScalarResult<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for &'a DensePolynomialResult<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for &'a ScalarResult<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for &'a Scalar<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for AuthenticatedScalarResult<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for DensePolynomialResult<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for ScalarResult<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<AuthenticatedDensePoly<C>> for Scalar<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<AuthenticatedScalarResult<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<AuthenticatedScalarResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: AuthenticatedScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<DensePolynomialResult<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: DensePolynomialResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<DensePolynomialResult<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: DensePolynomialResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<ResultHandle<C, Scalar<C>>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: ScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<ResultHandle<C, Scalar<C>>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: ScalarResult<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<'a, C: CurveGroup> Mul<Scalar<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Scalar<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Mul<Scalar<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Scalar<C>) -> Self::Output

Performs the * operation. Read more
Source§

impl<C: CurveGroup> Neg for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<C: CurveGroup> Neg for AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
Source§

impl<C: CurveGroup> Sub<&AuthenticatedDensePoly<C>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &AuthenticatedDensePoly<C>) -> Self::Output

Performs the - operation. Read more
Source§

impl<'a, C: CurveGroup> Sub<&'a AuthenticatedDensePoly<C>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &'a AuthenticatedDensePoly<C>) -> Self::Output

Performs the - operation. Read more
Source§

impl<C: CurveGroup> Sub<&DensePolynomial<<C as Group>::ScalarField>> for &AuthenticatedDensePoly<C>

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &DensePolynomial<C::ScalarField>) -> Self::Output

Performs the - operation. Read more
Source§

impl<'a, C: CurveGroup> Sub<&'a DensePolynomial<<C as Group>::ScalarField>> for AuthenticatedDensePoly<C>

lhs owned, rhs borrowed

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: &'a DensePolynomial<C::ScalarField>) -> Self::Output

Performs the - operation. Read more
Source§

impl<'a, C: CurveGroup> Sub<AuthenticatedDensePoly<C>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the - operation. Read more
Source§

impl<'a, C: CurveGroup> Sub<DensePolynomial<<C as Group>::ScalarField>> for &'a AuthenticatedDensePoly<C>

lhs borrowed, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: DensePolynomial<C::ScalarField>) -> Self::Output

Performs the - operation. Read more
Source§

impl<C: CurveGroup> Sub<DensePolynomial<<C as Group>::ScalarField>> for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: DensePolynomial<C::ScalarField>) -> Self::Output

Performs the - operation. Read more
Source§

impl<C: CurveGroup> Sub for AuthenticatedDensePoly<C>

lhs owned, rhs owned

Source§

type Output = AuthenticatedDensePoly<C>

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: AuthenticatedDensePoly<C>) -> Self::Output

Performs the - operation. Read more

Auto Trait Implementations§

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, dest: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more