Go to file
dependabot[bot] 386de4de6f
Update visibility requirement from 0.0.1 to 0.1.0 (#518)
Updates the requirements on [visibility](https://github.com/danielhenrymantilla/visibility.rs) to permit the latest version.
- [Release notes](https://github.com/danielhenrymantilla/visibility.rs/releases)
- [Commits](https://github.com/danielhenrymantilla/visibility.rs/compare/v0.0.1...v0.1.0)

---
updated-dependencies:
- dependency-name: visibility
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 19:38:52 +00:00
.github ci: run tests with --release (#509) 2023-09-02 01:49:31 +00:00
book add support for deriving identifiers from arbitary strings (#418) 2023-06-30 15:45:46 +00:00
frost-core Update visibility requirement from 0.0.1 to 0.1.0 (#518) 2023-09-04 19:38:52 +00:00
frost-ed448 document features (#512) 2023-09-04 19:38:48 +00:00
frost-ed25519 document features (#512) 2023-09-04 19:38:48 +00:00
frost-p256 document features (#512) 2023-09-04 19:38:48 +00:00
frost-rerandomized document features (#512) 2023-09-04 19:38:48 +00:00
frost-ristretto255 document features (#512) 2023-09-04 19:38:48 +00:00
frost-secp256k1 document features (#512) 2023-09-04 19:38:48 +00:00
gencode fix clippy issues (#503) 2023-08-28 19:25:43 +00:00
.gitignore Update keygen_with_dealer to return a hashmap (#288) 2023-03-23 22:24:33 +00:00
.mergify.yml Update mergify yaml (#380) 2023-06-16 12:23:03 +02:00
Cargo.toml renamed gendoc to gencode; make it unpublishable (#260) 2023-03-02 21:19:53 +00:00
LICENCE Frost keygen with dealer (#47) 2021-02-25 09:06:54 -07:00
LICENCE.MIT Frost keygen with dealer (#47) 2021-02-25 09:06:54 -07:00
LICENSE.Apache-2.0 Frost keygen with dealer (#47) 2021-02-25 09:06:54 -07:00
README.md expand docs (#371) 2023-06-21 08:22:45 +00:00
codecov.yml Refactor test folders (#366) 2023-05-31 21:23:29 +00:00
performance.md ZF FROST Book text proof-read/review (#415) 2023-06-26 17:25:35 +00:00
plot.py Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
times-by-ciphersuite-and-function-10.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
times-by-ciphersuite-and-function-100.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
times-by-ciphersuite-and-function-1000.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
times-by-size-and-function-ristretto255-aggregated.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
times-by-size-and-function-ristretto255-all-shares.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
verify-aggregated-vs-all-shares-10.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
verify-aggregated-vs-all-shares-100.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
verify-aggregated-vs-all-shares-1000.png Benchmark plot script (#356) 2023-06-01 14:37:59 -04:00
zcash-frost-audit-report-20210323.pdf Remove `frost-redjubjub` (#246) 2023-02-16 22:44:12 +00:00

README.md

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.

Getting Started

Refer to the ZF FROST book.

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

  1. Run tests cargo test
  2. Run formatter cargo fmt
  3. Check linter cargo clippy --all-features --all-targets -- -D warnings and if you want to automatically fix then run cargo clippy --fix

Coverage

Test coverage checks are performed in the pipeline. This is cofigured here: .github/workflows/coverage.yaml To run these locally:

  1. Install coverage tool by running cargo install cargo-llvm-cov
  2. Run 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 Y)