pub struct Pedersen<F: PedersenParams<P>, P: CurveConfig>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,{ /* private fields */ }Expand description
Pedersen hash.
Implementations§
Source§impl<F: PedersenParams<P>, P: CurveConfig> Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
impl<F: PedersenParams<P>, P: CurveConfig> Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
Sourcepub fn hash<T>(&self, x: T, y: T) -> Option<P::BaseField>
pub fn hash<T>(&self, x: T, y: T) -> Option<P::BaseField>
Computes the Starkware version of the Pedersen hash of x and y.
The hash is defined by:
PedersenParams::P_0 + x_low * PedersenParams::P_1 +
x_high * PedersenParams::P_2 + y_low * PedersenParams::P_3 +
y_high * PedersenParams::P_4
where x_low is the 248 low bits of x, x_high is the 4 high bits of
x and similarly for y. PedersenParams::P_0,
PedersenParams::P_1, PedersenParams::P_2,
PedersenParams::P_3, PedersenParams::P_4 are constant points
generated from the digits of pi.
§Arguments
&self- Pedersen hasher instance.x- The x coordinate of the point to hash.y- The y coordinate of the point to hash.
Trait Implementations§
Source§impl<F: Clone + PedersenParams<P>, P: Clone + CurveConfig> Clone for Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
impl<F: Clone + PedersenParams<P>, P: Clone + CurveConfig> Clone for Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
Source§impl<F: Debug + PedersenParams<P>, P: Debug + CurveConfig> Debug for Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
impl<F: Debug + PedersenParams<P>, P: Debug + CurveConfig> Debug for Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
Source§impl<F: PedersenParams<P>, P: CurveConfig> Default for Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
impl<F: PedersenParams<P>, P: CurveConfig> Default for Pedersen<F, P>where
<P as CurveConfig>::BaseField: PrimeField,
F::AffineRepr: AffineRepr<Config = P, BaseField = P::BaseField, ScalarField = P::ScalarField>,
Auto Trait Implementations§
impl<F, P> Freeze for Pedersen<F, P>
impl<F, P> RefUnwindSafe for Pedersen<F, P>where
<F as PedersenParams<P>>::AffineRepr: Sized,
<P as CurveConfig>::BaseField: Sized,
F: RefUnwindSafe,
P: RefUnwindSafe,
impl<F, P> Send for Pedersen<F, P>
impl<F, P> Sync for Pedersen<F, P>
impl<F, P> Unpin for Pedersen<F, P>where
<F as PedersenParams<P>>::AffineRepr: Sized,
<P as CurveConfig>::BaseField: Sized,
F: Unpin,
P: Unpin,
impl<F, P> UnwindSafe for Pedersen<F, P>where
<F as PedersenParams<P>>::AffineRepr: Sized,
<P as CurveConfig>::BaseField: Sized,
F: UnwindSafe,
P: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more