pub trait Share: Sized + Clone + Eq + PartialEq {
type Identifier: ShareIdentifier;
// Required methods
fn empty_share_with_capacity(size_hint: usize) -> Self;
fn is_zero(&self) -> Choice;
fn identifier(&self) -> Self::Identifier;
fn identifier_mut(&mut self) -> &mut Self::Identifier;
fn value(&self, buffer: &mut [u8]) -> VsssResult<()>;
fn value_mut(&mut self, buffer: &[u8]) -> VsssResult<()>;
fn value_vec(&self) -> Vec<u8>;
// Provided methods
fn with_identifier_and_value(
identifier: Self::Identifier,
value: &[u8]
) -> Self { ... }
fn as_group_element<G: GroupEncoding>(&self) -> VsssResult<G> { ... }
fn from_group_element<G: GroupEncoding>(
identifier: Self::Identifier,
group: G
) -> VsssResult<Self> { ... }
fn as_field_element<F: PrimeField>(&self) -> VsssResult<F> { ... }
fn from_field_element<F: PrimeField>(
identifier: Self::Identifier,
field: F
) -> VsssResult<Self> { ... }
}
Expand description
The methods necessary for a secret share
Required Associated Types§
sourcetype Identifier: ShareIdentifier
type Identifier: ShareIdentifier
The identifier type
Required Methods§
Create a new share with space equal to or greater than the size hint
sourcefn identifier(&self) -> Self::Identifier
fn identifier(&self) -> Self::Identifier
The identifier for this share
sourcefn identifier_mut(&mut self) -> &mut Self::Identifier
fn identifier_mut(&mut self) -> &mut Self::Identifier
The mutable identifier for this share
sourcefn value(&self, buffer: &mut [u8]) -> VsssResult<()>
fn value(&self, buffer: &mut [u8]) -> VsssResult<()>
The raw byte value of the share excluding the identifier is written to the buffer
sourcefn value_mut(&mut self, buffer: &[u8]) -> VsssResult<()>
fn value_mut(&mut self, buffer: &[u8]) -> VsssResult<()>
The writeable raw byte value of the share excluding the identifier
Provided Methods§
sourcefn with_identifier_and_value(identifier: Self::Identifier, value: &[u8]) -> Self
fn with_identifier_and_value(identifier: Self::Identifier, value: &[u8]) -> Self
Create a new share with the given identifier and value
sourcefn as_group_element<G: GroupEncoding>(&self) -> VsssResult<G>
fn as_group_element<G: GroupEncoding>(&self) -> VsssResult<G>
Convert this share into a group element
sourcefn from_group_element<G: GroupEncoding>(
identifier: Self::Identifier,
group: G
) -> VsssResult<Self>
fn from_group_element<G: GroupEncoding>( identifier: Self::Identifier, group: G ) -> VsssResult<Self>
Convert group element into a share
sourcefn as_field_element<F: PrimeField>(&self) -> VsssResult<F>
fn as_field_element<F: PrimeField>(&self) -> VsssResult<F>
Convert this share into a prime field element
sourcefn from_field_element<F: PrimeField>(
identifier: Self::Identifier,
field: F
) -> VsssResult<Self>
fn from_field_element<F: PrimeField>( identifier: Self::Identifier, field: F ) -> VsssResult<Self>
Convert field element into a share
Object Safety§
This trait is not object safe.