ppad-secp256k1 0.5.5 → 0.5.6
raw patch · 3 files changed
+10/−7 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG +5/−0
- lib/Crypto/Curve/Secp256k1.hs +4/−6
- ppad-secp256k1.cabal +1/−1
CHANGELOG view
@@ -1,5 +1,10 @@ # Changelog +- 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+ proportionally as a direct result.+ - 0.5.5 (2026-05-22) * Adds no-hash ECDSA signature verification utilities that skip the internal SHA256 step.
lib/Crypto/Curve/Secp256k1.hs view
@@ -567,18 +567,16 @@ mul# (# px, py, pz #) s | CT.decide (CT.not (ge# s)) = (# () | #) | otherwise =- let !(P gx gy gz) = _CURVE_G- !(C.Montgomery o) = C.one- in loop (0 :: Int) (# Z, o, Z #) (# gx, gy, gz #) (# px, py, pz #) s+ let !(C.Montgomery o) = C.one+ in loop (0 :: Int) (# Z, o, Z #) (# px, py, pz #) s where- loop !j !a !f !d !_SECRET+ loop !j !a !d !_SECRET | j == _CURVE_Q_BITS = (# | a #) | otherwise = let !nd = double# d !(# nm, lsb_set #) = W.shr1_c# _SECRET !nacc = select_proj# a (add_proj# a d) lsb_set- !nf = select_proj# (add_proj# f d) f lsb_set- in loop (succ j) nacc nf nd nm+ in loop (succ j) nacc nd nm {-# INLINE mul# #-} mul_vartime# :: Proj -> Limb4 -> (# () | Proj #)
ppad-secp256k1.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: ppad-secp256k1-version: 0.5.5+version: 0.5.6 synopsis: Schnorr signatures, ECDSA, and ECDH on the elliptic curve secp256k1 license: MIT