Struct AggregateSignature

Source
pub struct AggregateSignature<D: Clone + Digest + FixedOutput> {
    pub batch_proof: MerkleBatchPath<D>,
    /* private fields */
}
Expand description

AggregateSignature uses the “concatenation” proving system (as described in Section 4.3 of the original paper.) This means that the aggregated signature contains a vector with all individual signatures. BatchPath is also a part of the aggregate signature which covers path for all signatures.

Fields§

§batch_proof: MerkleBatchPath<D>

The list of unique merkle tree nodes that covers path for all signatures.

Implementations§

Source§

impl<D: Clone + Digest + FixedOutput + Send + Sync> AggregateSignature<D>

Source

pub fn verify( &self, msg: &[u8], avk: &AggregateVerificationKey<D>, parameters: &Parameters, ) -> Result<(), StmAggregateSignatureError<D>>

Verify aggregate signature, by checking that

  • each signature contains only valid indices,
  • the lottery is indeed won by each one of them,
  • the merkle tree path is valid,
  • the aggregate signature validates with respect to the aggregate verification key (aggregation is computed using functions MSP.BKey and MSP.BSig as described in Section 2.4 of the paper).
Source

pub fn batch_verify( stm_signatures: &[Self], msgs: &[Vec<u8>], avks: &[AggregateVerificationKey<D>], parameters: &[Parameters], ) -> Result<(), StmAggregateSignatureError<D>>

Batch verify a set of signatures, with different messages and avks.

Source

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

Convert multi signature to bytes

§Layout
  • Aggregate signature type (u8)
  • Number of the pairs of Signatures and Registered Parties (SigRegParty) (as u64)
  • Pairs of Signatures and Registered Parties (prefixed with their size as u64)
  • Batch proof
Source

pub fn from_bytes( bytes: &[u8], ) -> Result<AggregateSignature<D>, StmAggregateSignatureError<D>>

Extract a AggregateSignature from a byte slice.

Trait Implementations§

Source§

impl<D: Clone + Clone + Digest + FixedOutput> Clone for AggregateSignature<D>

Source§

fn clone(&self) -> AggregateSignature<D>

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<D: Debug + Clone + Digest + FixedOutput> Debug for AggregateSignature<D>

Source§

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

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

impl<'de, D: Clone + Digest + FixedOutput> Deserialize<'de> for AggregateSignature<D>
where MerkleBatchPath<D>: Deserialize<'de>,

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<D: Clone + Digest + FixedOutput> Serialize for AggregateSignature<D>
where MerkleBatchPath<D>: Serialize,

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<D> Freeze for AggregateSignature<D>

§

impl<D> RefUnwindSafe for AggregateSignature<D>
where D: RefUnwindSafe,

§

impl<D> Send for AggregateSignature<D>
where D: Send,

§

impl<D> Sync for AggregateSignature<D>
where D: Sync,

§

impl<D> Unpin for AggregateSignature<D>
where D: Unpin,

§

impl<D> UnwindSafe for AggregateSignature<D>
where D: 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> Same for T

Source§

type Output = T

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