2668555f38
* move test functions that differ from other ciphersuites to make gencode simpler to use (#364) * Refactored folder structure for ristretto255 (#364) * Add batch and signing tests folders to ristretto255 (#364) * Refactor test folders for ed25519 (#364) * Refactor test folders for ed448 (#364) * Refactor test folders for ed448 (#364) * Refactor test folders for secp256k1 (#364) * Refactor test folders for frost-core (#364) Update ciphersuites due to refactoring in core * Update coverage tool to exclude new test files (#364) * Rename signing_tests to ciphersuite_generic_tests to match frost-core (#364) * Set default branch as main in codecov (#364) * Fix incorrect file name in gencode (#364) * Remove test file targets in gencode and replace with only md files (#364) * Rename helper_functions to helpers (#364) Remove unecessary test traits * Rename ciphersuite tests (#364) * Rename test_helpers to helpers (#364) * move tests to integration_tests (#364) * Re-add dkg.rs and repairable.rs to gendoc (#364) * Refactored rest of ciphersuite integration tests (#364) * Fix fmt in gencode (#364) |
||
---|---|---|
.github | ||
book | ||
frost-core | ||
frost-ed448 | ||
frost-ed25519 | ||
frost-p256 | ||
frost-rerandomized | ||
frost-ristretto255 | ||
frost-secp256k1 | ||
gencode | ||
rfcs | ||
.gitignore | ||
.mergify.yml | ||
Cargo.toml | ||
LICENCE | ||
LICENCE.MIT | ||
LICENSE.Apache-2.0 | ||
README.md | ||
codecov.yml | ||
zcash-frost-audit-report-20210323.pdf |
README.md
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.
Status ⚠
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.
Usage
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
dependency.
Developer Information
Pre-commit checks
- Run tests
cargo test
- Run formatter
cargo fmt
- Check linter
cargo clippy --all-features --all-targets -- -D warnings
and if you want to automatically fix then runcargo clippy --fix
Coverage
Test coverage checks are performed in the pipeline. This is cofigured here: .github/workflows/coverage.yaml
To run these locally:
- Install coverage tool by running
cargo install cargo-llvm-cov
- Run
cargo llvm-cov --ignore-filename-regex '.*(tests).*|benches.rs|gencode|helpers.rs
(you may be asked if you want to installllvm-tools-preview
, if so typeY
)