Skip to main content

SsaBuilder

Struct SsaBuilder 

Source
pub struct SsaBuilder<S: PixSpec> {
    pub full_commitment: PixGroup<S>,
    num_polys: usize,
    target_useful_shares: u64,
    builder: PixScalar<S>,
    received_indices: HashSet<PolynomialIndex>,
    early_notified: bool,
}
Expand description

Reconstruct a single SSA from a set of SSA parts recovered from polynomials.

Fields§

§full_commitment: PixGroup<S>§num_polys: usize§target_useful_shares: u64

Carried from the negotiated PixParams rather than recomputed. See SsaCommitmentBuilder::target_useful_shares.

§builder: PixScalar<S>§received_indices: HashSet<PolynomialIndex>§early_notified: bool

Implementations§

Source§

impl<S: PixSpec> SsaBuilder<S>

Source

pub fn new( full_commitment: PixGroup<S>, exit_secret_scalar: PixScalar<S>, num_polys: usize, target_useful_shares: u64, ) -> Self

Source

pub fn target_useful_shares(&self) -> u64

Useful shares that constitute full recovery, as negotiated.

Source

pub fn num_polys(&self) -> usize

Number of polynomials this SSA is composed of.

Source

pub fn check_early_threshold(&mut self, threshold: f64) -> bool

Returns true once, when the number of received polynomial parts reaches ceil(threshold * num_polys) for the first time. Subsequent calls return false (idempotent guard — fires at most once per SSA lifecycle).

threshold is assumed finite, which validate_early_recovery_threshold is what makes true — SsaReconstructorConfig is the only source of it, and its constructor validates. The cast below is why that matters rather than being a formality: NaN survives the multiply and the ceil, then saturates to 0, so an unvalidated threshold fires this on the first part instead of the configured fraction of them.

Source

pub fn add_recovered_ssa_part( &mut self, index: PolynomialIndex, sub_secret: PixScalar<S>, ) -> Result<Option<PixScalar<S>>, S::Pseudonym>

Auto Trait Implementations§

§

impl<S> Freeze for SsaBuilder<S>
where <<S as PixSpec>::Curve as CurveArithmetic>::ProjectivePoint: Freeze, <<S as PixSpec>::Curve as CurveArithmetic>::Scalar: Freeze,

§

impl<S> RefUnwindSafe for SsaBuilder<S>
where <<S as PixSpec>::Curve as CurveArithmetic>::ProjectivePoint: RefUnwindSafe, <<S as PixSpec>::Curve as CurveArithmetic>::Scalar: RefUnwindSafe,

§

impl<S> Send for SsaBuilder<S>

§

impl<S> Sync for SsaBuilder<S>

§

impl<S> Unpin for SsaBuilder<S>
where <<S as PixSpec>::Curve as CurveArithmetic>::ProjectivePoint: Unpin, <<S as PixSpec>::Curve as CurveArithmetic>::Scalar: Unpin,

§

impl<S> UnsafeUnpin for SsaBuilder<S>
where <<S as PixSpec>::Curve as CurveArithmetic>::ProjectivePoint: UnsafeUnpin, <<S as PixSpec>::Curve as CurveArithmetic>::Scalar: UnsafeUnpin,

§

impl<S> UnwindSafe for SsaBuilder<S>
where <<S as PixSpec>::Curve as CurveArithmetic>::ProjectivePoint: UnwindSafe, <<S as PixSpec>::Curve as CurveArithmetic>::Scalar: UnwindSafe,

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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