ZF FROST (Flexible Round-Optimised Schnorr Threshold signatures)
Rust implementations of 'Two-Round Threshold Schnorr Signatures with FROST'.
Unlike signatures in a single-party setting, threshold signatures require cooperation among a threshold number of signers, each holding a share of a common private key. The security of threshold schemes in general assume that an adversary can corrupt strictly fewer than a threshold number of participants.
'Two-Round Threshold Schnorr Signatures with FROST' presents a variant of a Flexible Round-Optimized Schnorr Threshold (FROST) signature scheme originally defined in FROST20. FROST reduces network overhead during threshold signing operations while employing a novel technique to protect against forgery attacks applicable to prior Schnorr-based threshold signature constructions. This variant of FROST requires two rounds to compute a signature, and implements signing efficiency improvements described by Schnorr21. Single-round signing with FROST is not implemented here.
Refer to the ZF FROST book.
The FROST specification is not yet finalized, and this codebase has not yet been audited or
released. The APIs and types in
frost-core are subject to change.
frost-core implements the base traits and types in a generic manner, to enable top-level
implementations for different ciphersuites / curves without having to implement all of FROST from
scratch. End-users should not use
frost-core if they want to sign and verify signatures, they
should use the crate specific to their ciphersuite/curve parameters that uses
frost-core as a
- Run tests
- Run formatter
- Check linter
cargo clippy --all-features --all-targets -- -D warningsand if you want to automatically fix then run
cargo clippy --fix
Test coverage checks are performed in the pipeline. This is cofigured here:
To run these locally:
- Install coverage tool by running
cargo install cargo-llvm-cov
cargo llvm-cov --ignore-filename-regex '.*(tests).*|benches.rs|gencode|helpers.rs(you may be asked if you want to install
llvm-tools-preview, if so type