Expand description
FROST is a threshold signature scheme that allows a group of signers to
produce a single signature on a message. The signature is valid if and only
if at least threshold of the signers have signed the message.
FROST is based on the FROST paper
and the FROST RFC.
This crate centers around picking a signature scheme and generating the
necessary keys to use FROST. The signature scheme is defined by the
Scheme enum. All other types in this crate are data objects that support
the signature schemes.
FROST requires 2 rounds to complete a signature. The first round is
performed by the signers to generate SigningNonces and
SigningCommitments. Signers can either generate these values
in advance using Scheme::pregenerate_signing_nonces or generate them
on the fly using Scheme::signing_round1. Scheme::signing_round1 only generates
one nonce and commitment to will be used immediately.
The second round is performed by the signers to generate a
SignatureShare. Scheme::signing_round2 performs the second round of the
signing protocol and generates a SignatureShare.
The SignatureShares can then be aggregated into a single
Signature using Scheme::aggregate by the signature recipient.
The Signature can then be verified using Scheme::verify by anyone.
SigningShares are generated using distributed key generation (DKG) and
help privately by each signer. SigningNonces must also be treated as
secret values known by the signers and used only once per signing operation.
SigningShares can be converted from the most popular libraries using
the From trait.
Re-exports§
pub use lit_rust_crypto;pub use lit_rust_crypto::curve25519_dalek;pub use lit_rust_crypto::decaf377;pub use lit_rust_crypto::ed448_goldilocks;pub use lit_rust_crypto::jubjub;pub use lit_rust_crypto::k256;pub use lit_rust_crypto::p256;pub use lit_rust_crypto::p384;pub use lit_rust_crypto::vsss_rs;pub use ed25519_dalek;pub use schnorrkel;
Structs§
- Identifier
- A FROST participant identifier.
- KeyPackage
- The frost keys used for signing generated during the DKG.
- Signature
- A Schnorr signature
- Signature
Share - A participant’s signature share, which is aggregated with all other signer’s shares into the joint signature.
- Signing
Commitments - Published by each participant in the first round of the signing protocol.
- Signing
Nonces - Comprised of hiding and binding nonces
- Signing
Share - A secret scalar value representing a signer’s share of the group secret.
- Verifying
Key - A valid verifying key for Schnorr signatures
- Verifying
Share - A public group element that represents a single signer’s public verification share.
Enums§
- Byte
Order - The byte order for the ciphersuite
- Error
- Errors generated from this library
- Scheme
- The FROST supported signature schemes
Functions§
- red_
jubjub_ generator - Export the RedJubJub Generator point
Type Aliases§
- Frost
Result - Results generated by this library