pub struct PublicKeySet<G: Group> { /* private fields */ }
Expand description

Full public information about the participants of a threshold ElGamal encryption scheme after all participants’ commitments are collected.

Implementations§

source§

impl<G: Group> PublicKeySet<G>

source

pub fn new( params: Params, public_polynomial: Vec<G::Element>, proof_of_possession: &ProofOfPossession<G> ) -> Result<Self, Error>

Creates an instance based on information provided by the Dealer.

Errors

Returns an error if the information provided by the dealer is malformed.

source

pub fn from_participants( params: Params, participant_keys: Vec<PublicKey<G>> ) -> Result<Self, Error>

Creates a key set from the parameters and public keys of all participants.

Errors

Returns an error if the number of keys in participant_keys does not match the number of participants in params, or if participant_keys are inconsistent (do not correspond to a single shared key).

source

pub fn params(&self) -> Params

Returns parameters for this scheme.

source

pub fn shared_key(&self) -> &PublicKey<G>

Returns the shared public key used in this scheme.

source

pub fn participant_key(&self, index: usize) -> Option<&PublicKey<G>>

Returns the public key of a participant with the specified index. If index is out of bounds, returns None.

source

pub fn participant_keys(&self) -> &[PublicKey<G>]

Returns the slice with all participants’ public keys.

source

pub fn verify_participant( &self, index: usize, proof: &ProofOfPossession<G> ) -> Result<(), VerificationError>

Verifies a proof of possession of the participant’s secret key.

Proofs of possession for participants are not required for protocol correctness. Still, they can be useful to attribute failures or just as an additional safety mechanism; see the module docs for details.

Panics

Panics if index does not correspond to a participant.

Errors

Returns an error if the proof does not verify.

source

pub fn verify_share( &self, candidate_share: CandidateDecryption<G>, ciphertext: Ciphertext<G>, index: usize, proof: &LogEqualityProof<G> ) -> Result<VerifiableDecryption<G>, VerificationError>

Verifies a candidate decryption share for ciphertext provided by a participant with the specified index.

Errors

Returns an error if the proof does not verify.

Trait Implementations§

source§

impl<G: Clone + Group> Clone for PublicKeySet<G>

source§

fn clone(&self) -> PublicKeySet<G>

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<G: Debug + Group> Debug for PublicKeySet<G>

source§

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

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

impl<'de, G: Group> Deserialize<'de> for PublicKeySet<G>

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<G: Group> Serialize for PublicKeySet<G>

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

Auto Trait Implementations§

§

impl<G> RefUnwindSafe for PublicKeySet<G>where <G as ElementOps>::Element: RefUnwindSafe,

§

impl<G> Send for PublicKeySet<G>where <G as ElementOps>::Element: Send,

§

impl<G> Sync for PublicKeySet<G>where <G as ElementOps>::Element: Sync,

§

impl<G> Unpin for PublicKeySet<G>where <G as ElementOps>::Element: Unpin,

§

impl<G> UnwindSafe for PublicKeySet<G>where <G as ElementOps>::Element: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. 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 Twhere 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> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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 Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,