CHANGELOG (3882B)
1 # Changelog 2 3 - 0.5.8 (2026-08-01) 4 * Addresses a number of minor issues found by an LLM scan: 5 6 * Fixes potential out-of-bounds reads that could occur if anyone 7 used the _no_hash-suffixed ECDSA internal entry points on invalid 8 digest inputs. 9 10 * Removes an entry point for the EC monoidal identity / point at 11 infinity to make it into both the ECDSA and Schnorr signature 12 machinery. 13 14 * Fixes a validation lapse in sign_ecdsa, which previously e.g. 15 accepted an invalid secret key of zero. 16 17 * Fixes other minor spec conformance and testing issues. 18 19 - 0.5.7 (2026-06-07) 20 * Improves the performance of all wNAF-based signing & verification 21 functions by about 1.5-2x, due to optimizations in 1) the 22 constant-time wNAF scalar multiplication function, and 2) upstream 23 modular field inversion (in ppad-fixed). 24 25 - 0.5.6 (2026-06-07) 26 * Improves the wall-clock performance of the constant-time, non-wNAF 27 scalar multiplication function by about 35%. ECDH also speeds up 28 proportionally as a direct result. 29 30 - 0.5.5 (2026-05-22) 31 * Adds no-hash ECDSA signature verification utilities that skip the 32 internal SHA256 step. 33 34 - 0.5.4 (2026-02-04) 35 * Nonce generation for ECDSA is now more secure due to recent 36 improvements in ppad-hmac-drbg. The DRBG state is now guaranteed 37 to live in only one location on the heap, and it is now wiped 38 explicitly after use. 39 40 * ECDSA signing now allocates about 1.5 orders of magnitude less than 41 it did previously. 42 43 - 0.5.3 (2026-01-10) 44 * Bumps the ppad-sha256 and ppad-hmac-drbg dependencies. 45 46 - 0.5.2 (2025-12-28) 47 * Adds an explicit 64-bit architecture constraint. 48 * Tests on GHC.10.3. 49 50 - 0.5.1 (2025-12-27) 51 * Improves the constant-time semantics in wNAF scalar multiplication, 52 replacing "indexing via a constant-time selected value" by performing 53 a full window scan and selecting via mask. 54 55 - 0.5.0 (2025-12-21) 56 * We get a significant upgrade to all functionality by pulling in the 57 ppad-fixed library for large unsigned and Montgomery-form integers. 58 Constant-time and allocation properties are made much more rigorous 59 across the board, as we no longer depend on 'Integer' whatsoever. 60 61 This version also improves performance radically throughout. A 62 summary of the speedups achieved: 63 64 sign_schnorr: ~7.1x speedup 65 verify_schnorr: ~4.5x speedup 66 sign_ecdsa: ~1.5x speedup 67 verify_ecdsa: ~4.5x speedup 68 69 - 0.4.0 (2025-06-21) 70 * Scalar multiplication, signing, verifying, and ECHD functions are now 71 all total, returning 'Nothing' when supplied with invalid inputs. 72 * Adds a group element check to 'mul_wnaf'. 73 74 - 0.3.0 (2025-03-14) 75 * Adds 'ecdh' for computing ECDH secrets, any given secret being the 76 SHA256 hash of the x-coordinate of the appropriate secp256k1 point. 77 78 - 0.2.2 (2025-02-16) 79 * Exports the secp256k1 "point at infinity" as _CURVE_ZERO. 80 81 - 0.2.1 (2024-12-18) 82 * Adds 'serialize_point' for compressed-format serialization of 83 secp256k1 points. 84 85 - 0.2.0 (2024-11-08) 86 * Adds wNAF ("w-ary non-adjacent form") scalar multiplication, as 87 well as fast 'sign' and 'verify' variants for Schnorr and ECDSA 88 (disambiguated by a trailing apostrophe) that make use of it. 89 90 Each wNAF-powered function requires a 'Context' consisting of 91 precomputed secp256k1 generator multiples; one can be gotten via 92 'precompute'. 93 94 Note that the non-wNAF-powered sign and verify functions have 95 incurred a slight performance decrease (on the order of tens to 96 hundreds of microseconds) as a result. 97 98 * Adds 'parse_sig' for parsing compact signatures. 99 100 * Adds a dependency on the 'primitive' library (already transitively required 101 via 'ppad-hmac-drbg'). 102 103 - 0.1.0 (2024-10-19) 104 * Initial release, supporting public key derivation and Schnorr & 105 ECDSA signatures on secp256k1. 106