Crate lit_frost

Crate lit_frost 

Source
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
SignatureShare
A participant’s signature share, which is aggregated with all other signer’s shares into the joint signature.
SigningCommitments
Published by each participant in the first round of the signing protocol.
SigningNonces
Comprised of hiding and binding nonces
SigningShare
A secret scalar value representing a signer’s share of the group secret.
VerifyingKey
A valid verifying key for Schnorr signatures
VerifyingShare
A public group element that represents a single signer’s public verification share.

Enums§

ByteOrder
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§

FrostResult
Results generated by this library