[][src]Struct bls_like::TinyBLS

pub struct TinyBLS<E: Engine>(pub E);

Infrequently used BLS variant with tiny 48 byte signatures and 96 byte public keys,

We recommend gainst this variant by default because verifiers always perform O(signers) additions on the PublicKeyGroup, or worse 128 bit scalar multiplications with delinearization. Yet, there are specific use cases where this variant performs better. We swapy two group roles relative to zcash here.

Trait Implementations

impl<E: Engine> EngineBLS for TinyBLS<E>[src]

type Engine = E

type Scalar = <Self::Engine as ScalarEngine>::Fr

type PublicKeyGroup = E::G2

Group where BLS public keys live Read more

type SignatureGroup = E::G1

Group where BLS signatures live Read more

fn generate<R: Rng>(rng: &mut R) -> Self::Scalar[src]

Generate a random scalar for use as a secret key.

fn hash_to_signature_curve<M: Borrow<[u8]>>(message: M) -> Self::SignatureGroup[src]

Hash one message to the signature curve.

fn final_exponentiation(
    e: &<Self::Engine as Engine>::Fqk
) -> Option<<Self::Engine as Engine>::Fqk>
[src]

Perform final exponentiation on the result of a Miller loop.

fn verify_prepared<'a, I>(
    signature: &'a <<Self::SignatureGroup as CurveProjective>::Affine as CurveAffine>::Prepared,
    inputs: I
) -> bool where
    I: IntoIterator<Item = (&'a <<Self::PublicKeyGroup as CurveProjective>::Affine as CurveAffine>::Prepared, &'a <<Self::SignatureGroup as CurveProjective>::Affine as CurveAffine>::Prepared)>, 
[src]

Implement verification equation for aggregate BLS signatures provided as prepared points Read more

impl<E: Default + Engine> Default for TinyBLS<E>[src]

Auto Trait Implementations

impl<E> Sync for TinyBLS<E> where
    E: Sync

impl<E> Send for TinyBLS<E> where
    E: Send

impl<E> Unpin for TinyBLS<E> where
    E: Unpin

impl<E> RefUnwindSafe for TinyBLS<E> where
    E: RefUnwindSafe

impl<E> UnwindSafe for TinyBLS<E> where
    E: UnwindSafe

Blanket Implementations

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

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

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> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<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