Expand description
Two-round 2PC ECDSA at the cost of one OLE (secp256k1).
Modules§
- arith
- Big-number arithmetic used by the protocols.
- curve
- Elliptic-curve helpers over secp256k1.
- df
- Damgård–Fujisaki commitments
∏ base_i^{x_i}overZ*_N̂. - error
- Crate-wide error type.
- hd
- BIP32 non-hardened public derivation for the 2-of-2 key (the same scheme as the reference
implementation): the client adds
δto its share, soX' = X + δ·Gand the server share stays unchanged.δis the sum of the BIP32 tweaks along the path and is computed from the public key and the chain code only, so both parties get the same value. - keygen
- Distributed key generation (Protocol 2, spec §6.2): four messages, S–C.
- messages
- Wire envelope and message bodies (spec §10.5).
- paillier
- Paillier encryption with
g = 1 + Nand small randomizersρ^λ. - params
- Security parameters (spec §5). Every size used by the protocols comes from here.
- rsa
- Tough-RSA modulus generation (Algorithm 3).
- setup
- Server setup and client verification (paper Algorithm 4, spec §6.1 FR-S1..S8).
- sign
- Threshold signing (Protocol 3, spec §6.3): two rounds, S → C → S.
- ssid
- Session identifiers (spec §10.4): always the first item of every transcript and RO.
- store
- Persistence of secrets is the application’s job (Keychain / Secure Enclave / HSM); the crate only describes what it needs (spec §1, §8.4).
- transcript
- Fiat–Shamir transcript with domain separation (spec §10.1) and challenge derivation (§10.3).
- zk
- Non-interactive zero-knowledge proofs (spec §7): Fiat–Shamir over the transcript module.
Constants§
- PROTOCOL_
VERSION - Wire protocol version, written into every message envelope.