A Rust threshold signing library providing a unified, safe interface over production-grade implementations of FROST (RFC 9591) and DKLs23. Exposed via C ABI for consumption by Go (Linux), Rust, and React Native.
| # | Document | Description |
|---|---|---|
| 01 | Overview | Goals, architecture, and design philosophy |
| 02 | Threat Model | Security model, adversary capabilities, trust assumptions |
| 03 | API Design | Rust public API + C ABI surface + language binding patterns |
| 04 | FROST Integration | FROST protocol wrapping: ciphersuites, DKG, signing, tweaking |
| 05 | DKLs23 Integration | DKLs23 protocol wrapping: DKG, signing, OT internals |
| 06 | FFI Layer | C ABI design: functions, types, memory, build system |
| 07 | Key Management | BIP-32 derivation, share refresh, share repair |
| 08 | Serialization | Wire formats, encoding, versioning |
| 09 | Security Requirements | Constant-time ops, nonce safety, secret zeroing, input validation |
| 10 | Testing Strategy | Test vectors, fuzzing, cross-implementation validation |
| 11 | References | Papers, audits, known vulnerabilities, implementations, authors |
- Secrets stay in Rust -- all secret key material lives in Rust-managed memory with
zeroizeon drop - Consumers get opaque handles -- every language binding works with
uint64handle IDs, never raw key bytes - Unified API -- one consistent interface for both FROST (Schnorr) and DKLs23 (ECDSA)
- Transport-agnostic -- no network, no async runtime, no threads. Pure computation: bytes in, bytes out
- C ABI for universality -- standard
extern "C"functions consumable by Go (cgo), Rust (direct), and React Native (native modules) - Fail closed -- errors are explicit, panics never cross FFI, invalid inputs are rejected early