Releases: fystack/tss-lib
Releases · fystack/tss-lib
v3.0.1 - EdDSA Child Key Derivation
Highlights
This release adds EdDSA Child Key Derivation (CKD) so HD-wallet–style key
derivation works for Ed25519-based chains (e.g. Solana), and restores
pre-v3.0.0 CKD behavior needed for Edwards curves.
Features
- EdDSA signing with HD key derivation —
eddsa/signingcan now sign with
a derived child key. Addskey_derivation_util.go
(UpdatePublicKeyAndAdjustBigXj), wires the derivation delta into the local
party andround_1, and adds an end-to-end test
(TestE2EConcurrentWithHDDerive). Ported fromfystack/tss-libonto
bnb-chain v3.0.0; the unrelated range-proof / Feldman-VSS changes and the
ExtendedKeyrefactor from upstream were intentionally dropped, since v3.0.0
already handles multi-curve internally viacrypto.NewECPoint.
Fixes
- CKD: reduce
ILmoduloNbefore the range check — restores the
pre-v3.0.0 behavior of applyingilNum.Mod(N)before the range check in
DeriveChildKey. v3.0.0 made the check strict per BIP-32, which mandates
retrying with the next index whenIL >= N. This library does not implement
retry, and on Edwards curvesN ≈ 2^252so ~94% of raw 256-bit HMAC outputs
exceedN— the strict check made EdDSA CKD effectively unusable.
Trade-off: introduces a ~2^-4 modular bias on derived child public keys; the
bias is washed out on private shares by the uniform parent share, so it does
not enable key recovery or forgery, and it preserves address compatibility
with wallets derived under prior library versions.
Maintenance
gofmtformatting fixes incommon/constant_time.goand
crypto/paillier/paillier.go.
Verification
crypto/ckd: PASS (BIP-32 test vectors for secp256k1)eddsa/signingTestE2EConcurrentWithHDDerive: PASSecdsa/signingTestE2EWithHDKeyDerivation: PASS
Commits
26baa22add ecdsa derive signing logical2f5ab80change priv version9751c3ackd: reduce IL modulo N before range check8146a64Fix format
EDdSA child key derivation
Merge pull request #3 from fystack/revert Restore Security Checks Removed in EdDSA CKD Commits