Crate aries_bbssignatures

Source
Expand description

Implements the BBS+ signature as defined in https://eprint.iacr.org/2016/663.pdf in Section 4.3. Also included is ability to do zero-knowledge proofs as described in Section 4.4 and 4.5.

The BBS+ signature is a pairing-based ECC signature that signs multiple messages instead of just one. The signature and messages can be used to create signature proofs of knowledge in zero-knowledge proofs in which the signature is not revealed and messages can be selectively disclosed––some are revealed and some remain hidden.

The signature also supports separating the signer and signature holder where the holder creates commitments to messages which are hidden from the signer and a signature blinding factor which is retained. The holder sends the commitment to the signer who completes the signing process and sends the blinded signature back. The holder can then un-blind the signature finishing a 2-PC computation

BBS+ signatures can be used for TPM DAA attestations or Verifiable Credentials.

Modules§

errors
The errors that BBS+ throws
issuer
Represents steps taken by the issuer to create a BBS+ signature whether its 2PC or all in one
keys
BBS+ key classes
messages
Proof messages
pok_sig
Methods and structs for creating signature proofs of knowledge
pok_vc
Macros and classes used for creating proofs of knowledge Proof of knowledge of committed values in a vector Pedersen commitment––Commit and Prove scheme.
prelude
Convenience importer
prover
Represents steps taken by the prover to receive a BBS+ signature and generate ZKPs
signature
Methods and structs for creating signatures
verifier
Represents steps taken by the verifier to request signature proofs of knowledge and selective disclosure proofs

Macros§

pm_hidden
Creates a proof message that is hidden based on the number of parameters One means hidden and only used in this proof Two means hidden but can be used in other proofs
pm_hidden_raw
Wrap a raw message in its respective hidden
pm_revealed
Creates a proof message to be revealed
pm_revealed_raw
Wrap a raw message in a revealed enum
sm_map
Creates the BTreeMap used for blind signing

Structs§

BlindSignatureContext
Contains the data used for computing a blind signature and verifying proof of hidden messages from a prover
Commitment
The type for creating commitments to messages that are hidden during issuance.
CommitmentBuilder
Convenience wrapper for creating commitments
GeneratorG1
Wrapper for G1
GeneratorG2
Wrapper for G2
ProofChallenge
The Fiat-Shamir Challenge in proofs
ProofNonce
The type for nonces
ProofRequest
Contains the data from a verifier to a prover
SignatureBlinding
The type for blinding factors
SignatureMessage
The type for messages
SignatureProof
Contains the data from a prover to a verifier

Constants§

FR_COMPRESSED_SIZE
Number of bytes in scalar compressed form
FR_UNCOMPRESSED_SIZE
Number of bytes in scalar uncompressed form
G1_COMPRESSED_SIZE
Number of bytes in G1 X coordinate
G1_UNCOMPRESSED_SIZE
Number of bytes in G1 X and Y coordinates
G2_COMPRESSED_SIZE
Number of bytes in G2 X (a, b) coordinate
G2_UNCOMPRESSED_SIZE
Number of bytes in G2 X(a, b) and Y(a, b) coordinates

Traits§

HashElem
Struct can be generated from hashing
RandomElem
Struct can be generated randomly
ToVariableLengthBytes
Trait for structs that have variable length bytes but use compressed Bls12 elements