[−][src]Struct bls_like::UsualBLS
Usual BLS variant with tiny 48 byte public keys and 96 byte signatures.
We favor this variant because verifiers always perform
O(signers)
additions on the PublicKeyGroup
, or worse 128 bit
scalar multiplications with delinearization.
We also orient this variant to match zcash's traits.
Trait Implementations
impl<E: Engine> EngineBLS for UsualBLS<E>
[src]
type Engine = E
type Scalar = <Self::Engine as ScalarEngine>::Fr
type PublicKeyGroup = E::G1
Group where BLS public keys live Read more
type SignatureGroup = E::G2
Group where BLS signatures live Read more
fn miller_loop<'a, I>(i: I) -> E::Fqk where
I: IntoIterator<Item = (&'a <E::G1Affine as CurveAffine>::Prepared, &'a <E::G2Affine as CurveAffine>::Prepared)>,
[src]
I: IntoIterator<Item = (&'a <E::G1Affine as CurveAffine>::Prepared, &'a <E::G2Affine as CurveAffine>::Prepared)>,
fn pairing<G1, G2>(p: G1, q: G2) -> E::Fqk where
G1: Into<E::G1Affine>,
G2: Into<E::G2Affine>,
[src]
G1: Into<E::G1Affine>,
G2: Into<E::G2Affine>,
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]
e: &<Self::Engine as Engine>::Fqk
) -> Option<<Self::Engine as Engine>::Fqk>
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]
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)>,
Implement verification equation for aggregate BLS signatures provided as prepared points Read more
impl<E: Default + Engine> Default for UsualBLS<E>
[src]
Auto Trait Implementations
impl<E> Sync for UsualBLS<E> where
E: Sync,
E: Sync,
impl<E> Unpin for UsualBLS<E> where
E: Unpin,
E: Unpin,
impl<E> Send for UsualBLS<E> where
E: Send,
E: Send,
impl<E> UnwindSafe for UsualBLS<E> where
E: UnwindSafe,
E: UnwindSafe,
impl<E> RefUnwindSafe for UsualBLS<E> where
E: RefUnwindSafe,
E: RefUnwindSafe,
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Same<T> for T
type Output = T
Should always be Self