[][src]Struct bls_like::pop::CountPoPSignedMessage

pub struct CountPoPSignedMessage<E: EngineBLS, POP: ProofsOfPossession<E>> {
    pub max_duplicates: usize,
    // some fields omitted
}

One individual message with attached aggreggate BLS signatures from signers for whom we previously checked proofs-of-possession, and with the singers presented as a compact bitfield.

We may aggregage any number of duplicate signatures per signer here, unlike CountPoPSignedMessage, but our serialized signature costs one 96 or or 48 bytes compressed curve point, plus the size of ProofsOfPossession::Signers times log of the largest duplicate count.

You must provide a ProofsOfPossession for this, likely by implementing it for your own data structures.

Fields

max_duplicates: usize

Errors if a duplicate signature count would exceed this number.
We suggest rounding up to the nearest power of two.

Methods

impl<E, POP> CountPoPSignedMessage<E, POP> where
    E: EngineBLS,
    POP: ProofsOfPossession<E>, 
[src]

pub fn new(
    proofs_of_possession: POP,
    message: Message
) -> CountPoPSignedMessage<E, POP>
[src]

pub fn add(&mut self, signed: &SignedMessage<E>) -> Result<(), PoPError>[src]

Include one signed message, after testing for message and proofs-of-possession table agreement, and disjoint publickeys.

pub fn add_bitpop(
    &mut self,
    other: &BitPoPSignedMessage<E, POP>
) -> Result<(), PoPError>
[src]

pub fn merge(
    &mut self,
    other: &CountPoPSignedMessage<E, POP>
) -> Result<(), PoPError>
[src]

Merge two CountPoPSignedMessage, after testing for message and proofs-of-possession table agreement, and disjoint publickeys.

Trait Implementations

impl<'a, E, POP> Signed for &'a CountPoPSignedMessage<E, POP> where
    E: EngineBLS,
    POP: ProofsOfPossession<E>, 
[src]

type E = E

type M = Message

type PKG = PublicKey<E>

type PKnM = Once<(Message, PublicKey<E>)>

Iterator over messages and public key reference pairs.

impl<'a, E, POP> Clone for CountPoPSignedMessage<E, POP> where
    E: EngineBLS,
    POP: ProofsOfPossession<E> + Clone
[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl<E, POP> Sync for CountPoPSignedMessage<E, POP> where
    POP: Sync,
    <E as EngineBLS>::SignatureGroup: Sync,
    <POP as ProofsOfPossession<E>>::Signers: Sync

impl<E, POP> Unpin for CountPoPSignedMessage<E, POP> where
    POP: Unpin,
    <E as EngineBLS>::SignatureGroup: Unpin,
    <POP as ProofsOfPossession<E>>::Signers: Unpin

impl<E, POP> Send for CountPoPSignedMessage<E, POP> where
    POP: Send,
    <E as EngineBLS>::SignatureGroup: Send,
    <POP as ProofsOfPossession<E>>::Signers: Send

impl<E, POP> UnwindSafe for CountPoPSignedMessage<E, POP> where
    POP: UnwindSafe,
    <E as EngineBLS>::SignatureGroup: UnwindSafe,
    <POP as ProofsOfPossession<E>>::Signers: UnwindSafe

impl<E, POP> RefUnwindSafe for CountPoPSignedMessage<E, POP> where
    POP: RefUnwindSafe,
    <E as EngineBLS>::SignatureGroup: RefUnwindSafe,
    <POP as ProofsOfPossession<E>>::Signers: RefUnwindSafe

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self