Skip to main content

Crate tecdsa_core

Crate tecdsa_core 

Source
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} over Z*_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, so X' = X + δ·G and 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 + N and 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.