Skip to main content

Randomizer

Struct Randomizer 

Source
pub struct Randomizer<C: Ciphersuite>(/* private fields */);
Expand description

A randomizer. A random scalar which is used to randomize the key.

Implementations§

Source§

impl<C> Randomizer<C>

Source

pub fn new<R: RngCore + CryptoRng>( rng: R, signing_package: &SigningPackage<C>, ) -> Result<Self, Error<C>>

👎Deprecated: switch to new_from_commitments(), passing the commitments from SigningPackage

Create a new random Randomizer using a SigningPackage for randomness.

The SigningPackage must be the signing package being used in the current FROST signing run. It is hashed into the randomizer calculation, which binds it to that specific package.

Source

pub fn new_from_commitments<R: RngCore + CryptoRng>( rng: R, signing_commitments: &BTreeMap<Identifier<C>, SigningCommitments<C>>, ) -> Result<(Self, Vec<u8>), Error<C>>

Create a new random Randomizer using SigningCommitments for randomness.

The SigningCommitments map must be the one being used in the current FROST signing run (built by the Coordinator after receiving from Participants). It is hashed into the randomizer calculation, which binds it to that specific commitments.

Returns the Randomizer and the generate randomizer seed. Both can be used to regenerate the Randomizer with Self::regenerate_from_seed_and_commitments().

Source

pub fn regenerate_from_seed_and_commitments( randomizer_seed: &[u8], signing_commitments: &BTreeMap<Identifier<C>, SigningCommitments<C>>, ) -> Result<Randomizer<C>, Error<C>>

Regenerates a Randomizer generated with Self::new_from_commitments(). This can be used by Participants after receiving the randomizer seed and commitments in Round 2. This is better than the Coordinator simply generating a Randomizer and sending it to Participants, because in this approach the participants don’t need to fully trust the Coordinator’s random number generator (i.e. even if the randomizer seed was not randomly generated the randomizer will still be).

This should be used exclusively with the output of Self::new_from_commitments(); it is strongly suggested to not attempt generating the randomizer seed yourself (even if the point of this approach is to hedge against issues in the randomizer seed generation).

Source§

impl<C> Randomizer<C>
where C: Ciphersuite,

Source

pub fn from_scalar(scalar: Scalar<C>) -> Self

Create a new Randomizer from the given scalar. It MUST be randomly generated.

It is not recommended to use this method unless for compatibility reasons with specifications on how the randomizer must be generated. Use Randomizer::new() instead.

Source

pub fn serialize(&self) -> Vec<u8>

Serialize the identifier using the ciphersuite encoding.

Source

pub fn deserialize(buf: &[u8]) -> Result<Self, Error<C>>

Deserialize an Identifier from a serialized buffer. Returns an error if it attempts to deserialize zero.

Trait Implementations§

Source§

impl<C: Clone + Ciphersuite> Clone for Randomizer<C>

Source§

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

Returns a duplicate 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 for Randomizer<C>
where C: Ciphersuite,

Source§

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

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

impl<'de, C> Deserialize<'de> for Randomizer<C>
where C: Ciphersuite,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<C: PartialEq + Ciphersuite> PartialEq for Randomizer<C>

Source§

fn eq(&self, other: &Randomizer<C>) -> 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<C> Serialize for Randomizer<C>
where C: Ciphersuite,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<C: Copy + Ciphersuite> Copy for Randomizer<C>

Source§

impl<C: Eq + Ciphersuite> Eq for Randomizer<C>

Source§

impl<C: Ciphersuite> StructuralPartialEq for Randomizer<C>

Auto Trait Implementations§

§

impl<C> Freeze for Randomizer<C>
where <<<C as Ciphersuite>::Group as Group>::Field as Field>::Scalar: Freeze,

§

impl<C> RefUnwindSafe for Randomizer<C>
where <<<C as Ciphersuite>::Group as Group>::Field as Field>::Scalar: RefUnwindSafe,

§

impl<C> Send for Randomizer<C>

§

impl<C> Sync for Randomizer<C>

§

impl<C> Unpin for Randomizer<C>
where <<<C as Ciphersuite>::Group as Group>::Field as Field>::Scalar: Unpin,

§

impl<C> UnwindSafe for Randomizer<C>
where <<<C as Ciphersuite>::Group as Group>::Field as Field>::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
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, 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> 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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,