Crate frost_core

Source
Expand description

§FROST (Flexible Round-Optimised Schnorr Threshold signatures) Core

Base traits and types in Rust that implement ‘Two-Round Threshold Schnorr Signatures with FROST’ generically for Ciphersuite implementations.

For key generation, refer to the keys module. For round-specific types and functions, refer to the round1 and round2 modules. This module contains types and functions not directly related to key generation and the FROST rounds.

§Status ⚠

The FROST specification is not yet finalized, though no significant changes are expected at this point. This code base has been audited by NCC. The APIs and types in frost-core are subject to change during the release candidate phase, and will follow SemVer guarantees after 1.0.0.

§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, such as frost_ristretto255.

§Example

See ciphersuite-specific crates, e.g. frost_ristretto255.

§Features

  • std (enabled by default) — Enable standard library support.

  • internals — Expose internal types, which do not have SemVer guarantees. This is an advanced feature which can be useful if you need to build a modified version of FROST. The docs won’t list them, you will need to check the source code.

  • serde — Enable serde support for types that need to be communicated. You can use serde to serialize structs with any encoder that supports serde (e.g. JSON with serde_json).

Re-exports§

pub use serde;serde

Modules§

batch
Performs batch Schnorr signature verification.
keys
FROST keys, keygen, key shares
round1
FROST Round 1 functionality and types
round2
FROST Round 2 functionality and types, for signature share generation
serialization
Serialization support.

Structs§

BindingFactor
The binding factor, also known as rho (ρ)
Challenge
A type refinement for the scalar field element representing the per-message challenge.
GroupCommitment
The product of all signers’ individual commitments, published as part of the final signature.
Identifier
A FROST participant identifier.
Signature
A Schnorr signature over some prime order group (or subgroup).
SigningKey
A signing key for a Schnorr signature on a FROST Ciphersuite::Group.
SigningPackage
Generated by the coordinator of the signing operation and distributed to each signing party
VerifyingKey
A valid verifying key for Schnorr signatures over a FROST Ciphersuite::Group.

Enums§

Error
An error related to FROST.
FieldError
An error related to a scalar Field.
GroupError
An error related to a Group (usually an elliptic curve or constructed from one) or one of its Elements.

Traits§

Ciphersuite
A FROST ciphersuite specifies the underlying prime-order group details and cryptographic hash function.
Field
A prime order finite field GF(q) over which all scalar values for our prime order group can be multiplied are defined.
Group
A prime-order group (or subgroup) that provides everything we need to create and verify Schnorr signatures.

Functions§

aggregate
Aggregates the signature shares to produce a final signature that can be verified with the group public key.
verify_signature_share
Verify a signature share for the given participant identifier, verifying_share and signature_share; with the signing_package for which the signature share was produced and with the group’s verifying_key.

Type Aliases§

Element
An element of the Ciphersuite C’s Group.
Scalar
An element of the Ciphersuite C’s Group’s scalar Field.