1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! # tsslib
//!
//! Easy-to-use threshold signature schemes in pure Rust. This crate is a port
//! of the broker-based protocols from the Go [`tss-lib`] and aims to be **wire-
//! and save-data-compatible** with it: messages serialized by one
//! implementation are consumed by the other, and persisted key shares
//! round-trip across both.
//!
//! [`tss-lib`]: https://github.com/KarpelesLab/tss-lib
//!
//! ## Protocols
//!
//! | Module | Scheme | Output |
//! |----------------------------|------------------------------------------|-------------------------|
//! | [`frosttss`] | FROST(Ed25519, SHA-512), RFC 9591 | Ed25519 signatures |
//! | [`frostristretto255tss`] | FROST(ristretto255, SHA-512), RFC 9591 | Ristretto255 signatures |
//! | [`mldsatss`] | Threshold ML-DSA-44 (FIPS 204) | ML-DSA signatures |
//! | [`dklstss`] | Threshold ECDSA / secp256k1 (DKLs23) | ECDSA signatures |
//!
//! Each protocol is gated behind a like-named cargo feature (all enabled by
//! default).
//!
//! ## Core
//!
//! The [`tss`] module holds the transport-agnostic core shared by every
//! protocol: [`tss::PartyId`], the rich [`tss::TssError`], and the JSON
//! message/broker plumbing ([`tss::JsonMessage`], [`tss::MessageBroker`]).
//!
//! ## Cryptography
//!
//! Low-level group, scalar, and lattice arithmetic is provided by the
//! [`purecrypto`](https://github.com/KarpelesLab/purecrypto) crate. This crate
//! contains no hand-rolled field arithmetic of its own.