Expand description
This crate implements BLS signatures according to the IETF latest draft
for the Proof of Possession Cipher Suite
Since BLS signatures can use either G1 or G2 fields, there are two types of public keys and signatures.
Re-exports§
pub use vsss_rs;
Modules§
- inner_
types - The inner representation types
Structs§
- Bls12381
G1Hasher - The BLS12381 G1 hash to public key group
- Bls12381
G1Impl - Represents BLS signatures on the BLS12-381 curve where Signatures are in G1 and Public Keys are in G2 or i.e. signatures are small and public keys are large
- Bls12381
G2Hasher - The BLS12381 G1 hash to public key group
- Bls12381
G2Impl - Represents BLS signatures on the BLS12-381 curve where Signatures are in G2 and Public Keys are in G1 or i.e. signatures are large and public keys are small
- BlsSignature
- A BLS signature implementation
- ElGamal
Ciphertext - An ElGamal ciphertext
- ElGamal
Decryption Key - An ElGamal decryption key where the secret key is hidden or combined from shares that can decrypt ciphertext
- ElGamal
Decryption Share - A public key share is a point on the curve Must be combined with other public key shares in order to decrypt a ciphertext
- ElGamal
Proof - A Discrete Log Proof tied to a specific ElGamal ciphertext
- Inner
Point Share G1 - The share type for points in G1
- Inner
Point Share G2 - The share type for points in G2
- Multi
Public Key - An accumulated public key
- Proof
Commitment Challenge - The proof of knowledge challenge value generated by the server in step 2 of the proof generation process
- Proof
Commitment Secret - A commitment secret used to create the proof of knowledge
- Proof
OfKnowledge Timestamp - A signature proof of knowledge based on a timestamp
- Proof
OfPossession - A proof of possession of the secret key
- Public
Key - A BLS public key
- Public
KeyShare - A public key share is point on the curve. See Section 4.3 in https://eprint.iacr.org/2016/663.pdf Must be combined with other public key shares to produce the completed key, or used for creating partial signatures which can be combined into a complete signature
- Secret
Key - The secret key is field element 0 <
x
<r
wherer
is the curve order. See Section 4.3 in https://eprint.iacr.org/2016/663.pdf - Secret
KeyShare - A secret key share is field element 0 <
x
<r
wherer
is the curve order. See Section 4.3 in https://eprint.iacr.org/2016/663.pdf Must be combined with other secret key shares to produce the completed key, or used for creating partial signatures which can be combined into a complete signature - Sign
Crypt Ciphertext - The ciphertext output from sign crypt encryption
- Sign
Crypt Decryption Key - A Signcrypt decryption key where the secret key is hidden or combined from shares that can decrypt ciphertext
- Sign
Decryption Share - A public key share is point on the curve. See Section 4.3 in https://eprint.iacr.org/2016/663.pdf Must be combined with other public key shares to produce the completed key, or used for creating partial signatures which can be combined into a complete signature
- Time
Crypt Ciphertext - The ciphertext output from time lock encryption
Enums§
- Aggregate
Signature - Represents a BLS signature for multiple signatures that signed different messages
- Bls12381
- A convenience wrapper for the two BLS signature implementations that doesn’t require specifying the generics and can be used in trait object like situations.
- BlsError
- The error types generated by this library
- Multi
Signature - Represents a BLS signature for multiple signatures that signed different messages
- Proof
Commitment - The commitment portion of the signature proof of knowledge
- Proof
OfKnowledge - A signature proof of knowledge
- Secret
KeyEnum - A BLS secret key implementation that doesn’t expose the underlying curve
and signature scheme and can be used in situations where the specific
implementation is not known at compile time and where trait objects
are desirable but can’t be used due to the lack of
Sized
trait. The downside is the type is now indicated with a byte or string for serialization and deserialization. If this is not desirable, then useSecretKey<C>
instead. - Signature
- A BLS signature wrapped in the appropriate scheme used to generate it
- Signature
Schemes - The BLS signature algorithm schemes
- Signature
Share - Represents a share of a signature
Constants§
- SECRET_
KEY_ BYTES - Number of bytes needed to represent the secret key
Traits§
- BlsEl
Gamal - The methods for implementing ElGamal encryption and derived ZKPs
- BlsMulti
Key - A trait that defines the BLS schemes that support multi-signatures
- BlsMulti
Signature - A trait that defines the BLS schemes that support multi-signatures
- BlsSerde
- Serialization trait for inner types
- BlsSign
Crypt - The methods for implementing SignCryption as described in https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.119.1717&rep=rep1&type=pdf
- BlsSignature
Basic - BLS signature basic trait
- BlsSignature
Core - The core methods used by BLS signatures
- BlsSignature
Impl - Types that implement BLS signatures
- BlsSignature
Message Augmentation - BLS signature augmentation trait
- BlsSignature
Pop - BLS signature proof of possession trait
- BlsSignature
Proof - Methods for creating a signature proof of knowledge as in https://miracl.com/assets/pdf-downloads/mpin4.pdf
- BlsTime
Crypt - Implement time lock encryption
- Hash
ToPoint - The hash to curve point methods
- Hash
ToScalar - The hash to scalar methods
- Pairing
- Operations that support pairing trait
Type Aliases§
- Bls12381
G1 - A BLS signature implementation using G1 for signatures and G2 for public keys
- Bls12381
G2 - A BLS signature implementation using G2 for signatures and G1 for public keys
- BlsResult
- The result type generated by this library