Skip to content

BoldBitcoinWallet/libtss

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Overview

libtss is a Rust library that unifies FROST (RFC 9591) threshold Schnorr and DKLs23 threshold ECDSA behind a single API, exposed via C ABI for multi-language consumption.

Key Features

  • Unified session API — protocol-agnostic new()next() loop for DKG, signing, and refresh
  • Protocol selection by ciphersuite — FROST for Schnorr/BIP-340/Taproot; DKLs23 for ECDSA
  • C ABI + language bindings — Go (cgo), React Native, WASM, .NET, Python
  • Transport-agnostic — pure computation, bytes in/bytes out, no network or async runtime
  • Secret safety — all key material in Rust memory with zeroize-on-drop; consumers get opaque handles

Supported Protocols

Protocol Curves Use Cases
FROST (RFC 9591) secp256k1-TR, secp256k1, Ed25519, P-256, ristretto255, Ed448 Bitcoin Taproot, Solana, TLS/WebAuthn
DKLs23 secp256k1, secp256r1 Ethereum, Bitcoin, Cosmos, TRON, NEO3, Sui

Getting Started

Installation

  1. Install Rust using rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. Clone the repository:
git clone https://github.com/0xCarbon/libtss
cd libtss
  1. Build:
cargo build --workspace
  1. Run tests:
cargo test --workspace

Architecture

Applications (Go, Rust, React Native, WASM, .NET, Python)
    │
    ▼
Thin Language Bindings (libtss-go, libtss-rn, libtss-wasm, ...)
    │
    ▼
C ABI (libtss.h — stable header, generated by cbindgen)
    │
    ▼
libtss (Rust crate — unified API, handle registry, error mapping)
    │
    ├── frost-*  (ZCash Foundation FROST, 7 ciphersuites)
    └── dkls23-* (0xCarbon DKLs23, secp256k1 + secp256r1)

See spec/ for the full design specification.

Language Bindings

Binding Language Description
libtss-ffi C ABI FFI layer (cbindgen)
libtss-go Go cgo binding
libtss-wasm JavaScript / TypeScript WebAssembly (wasm-bindgen)
libtss-rn React Native iOS & Android
libtss-python Python ctypes binding
libtss-node TypeScript (Node.js / Bun) koffi FFI binding
libtss-dotnet C# / .NET P/Invoke binding

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details on how to get started.

Security

For information on how to report security vulnerabilities, please see our SECURITY.md.

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

License

This project is licensed under either of

at your option.

Authors

See the list of contributors who participated in this project.

About

Threshold signing library — FROST (RFC 9591) & DKLs23 behind a unified API with C ABI for Go, Node.js, Python, .NET, WASM, and React Native

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Rust 52.3%
  • C# 11.0%
  • Python 10.0%
  • TypeScript 9.5%
  • Go 7.0%
  • C++ 3.2%
  • Other 7.0%