[][src]Module bls_like::single

Unaggreagated BLS signatures

We simplify the code by using only the projective form as produced by algebraic operations, like aggregation, signing, and SecretKey::into_public, for both Signature and Group.

In principle, one benifits from an affine form in serialization, and pairings meaning signature verification, but the conversion from affine to projective is always free and the converion from projective to affine is free if we do no algebraic operations.
We thus expect the conversion to and from projective to be free in the case of verifications where staying affine yields the largest benifits.

We imagine this simplification helps focus on more important optimizations, like placing batch_normalization calls well. We could exploit CurveProjective::add_assign_mixed function if we had seperate types for affine points, but if doing so improved performance enough then we instead suggest tweaking CurveProjective::add_mixed to test for normalized points.

TODO: Add serde support for serialization throughout. See https://github.com/ebfull/pairing/pull/87#issuecomment-402397091 https://github.com/poanetwork/hbbft/blob/38178af1244ddeca27f9d23750ca755af6e886ee/src/crypto/serde_impl.rs#L95

Structs

Keypair

BLS Keypair

KeypairVT

BLS Keypair

PublicKey

BLS Public Key

SecretKey

Secret signing key that is split to provide side channel protection.

SecretKeyVT

Secret signing key lacking the side channel protections from key splitting. Avoid using directly in production.

Signature

Detached BLS Signature

SignedMessage

Message with attached BLS signature