ppad-secp256k1 0.5.6 → 0.5.7
raw patch · 3 files changed
+11/−10 lines, 3 filesdep ~ppad-fixedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: ppad-fixed
API changes (from Hackage documentation)
Files
- CHANGELOG +6/−0
- lib/Crypto/Curve/Secp256k1.hs +3/−8
- ppad-secp256k1.cabal +2/−2
CHANGELOG view
@@ -1,5 +1,11 @@ # Changelog +- 0.5.7 (2026-06-07)+ * Improves the performance of all wNAF-based signing & verification+ functions by about 1.5-2x, due to optimizations in 1) the+ constant-time wNAF scalar multiplication function, and 2) upstream+ modular field inversion (in ppad-fixed).+ - 0.5.6 (2026-06-07) * Improves the wall-clock performance of the constant-time, non-wNAF scalar multiplication function by about 35%. ECDH also speeds up
lib/Crypto/Curve/Secp256k1.hs view
@@ -612,8 +612,7 @@ | CT.decide (CT.not (ge# ls)) = (# () | #) | otherwise = let !(P zx zy zz) = _CURVE_ZERO- !(P gx gy gz) = _CURVE_G- in (# | loop 0 (# zx, zy, zz #) (# gx, gy, gz #) ls #)+ in (# | loop 0 (# zx, zy, zz #) ls #) where !one = (# Limb 1##, Limb 0##, Limb 0##, Limb 0## #) !wins = fi (256 `quot` ctxW + 1)@@ -622,7 +621,7 @@ !(GHC.Word.W# texW) = fi ctxW !(GHC.Word.W# mnum) = 1 .<<. ctxW - loop !j@(GHC.Word.W# w) !acc !f !n@(# Limb lo, _, _, _ #)+ loop !j !acc !n@(# Limb lo, _, _, _ #) | j == wins = acc | otherwise = let !(GHC.Word.W# off0) = j * size@@ -635,20 +634,16 @@ !abs_b = CT.select_word# b0 (Exts.minusWord# mnum b0) bor !is_zero = CT.from_word_eq# b0 0##- !c0 = CT.from_bit# (Exts.and# w 1##) !off_nz = Exts.minusWord# (Exts.plusWord# off0 abs_b) 1## !off = CT.select_word# off0 off_nz (CT.not is_zero) !pr = ct_index_proj# ctxArray off0 s off !neg_pr = neg# pr- !pt_zero = select_proj# pr neg_pr c0 !pt_nonzero = select_proj# pr neg_pr bor - !f_added = add_proj# f pt_zero !acc_added = add_proj# acc pt_nonzero !nacc = select_proj# acc_added acc is_zero- !nf = select_proj# f f_added is_zero- in loop (succ j) nacc nf n1+ in loop (succ j) nacc n1 {-# INLINE mul_wnaf# #-} -- retrieve a point (as an unboxed tuple) from a context array
ppad-secp256k1.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: ppad-secp256k1-version: 0.5.6+version: 0.5.7 synopsis: Schnorr signatures, ECDSA, and ECDH on the elliptic curve secp256k1 license: MIT@@ -38,7 +38,7 @@ , bytestring >= 0.9 && < 0.13 , ppad-hmac-drbg >= 0.3.1 && < 0.4 , ppad-sha256 >= 0.3.2 && < 0.4- , ppad-fixed >= 0.1.4 && < 0.2+ , ppad-fixed >= 0.1.5 && < 0.2 , primitive >= 0.8 && < 0.10 test-suite secp256k1-tests