packages feed

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 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