Expand description
§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 CurveGroup: += _mixed
function
if we had seperate types for affine points, but if doing so
improved performance enough then we instead suggest tweaking
CurveGroup::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
- Public
Key - BLS Public Key
- Secret
Key - Secret signing key that is split to provide side channel protection.
- Secret
KeyVT - Secret signing key lacking the side channel protections from key splitting. Avoid using directly in production.
- Signature
- because SecretKey is not canonically serializable and that we need to convert it to vartime first we need to manually re-implement this trait for secret keys Detached BLS Signature
- Signed
Message - Message with attached BLS signature