Skip to content

Releases: paulmillr/noble-curves

1.9.6

30 Jul 02:48
1.9.6
095f1cb
Compare
Choose a tag to compare
  • edwards: expose nBitLength, nByteLength
  • Experimental CurveLengths interface: rename secret, public to secretKey, publicKey
  • Point precomputes: initialize calculation earlier, within weierstrass() method (still lazy, waits for first call)
  • bls: new internal tower from v2
  • ed448: Ensure there are two different Fn fields with different BITS length for ed448 / decaf448

Full Changelog: 1.9.5...1.9.6

1.9.5

29 Jul 05:01
1.9.5
8c6b548
Compare
Choose a tag to compare
  • Fix rollup warnings from gh-205
  • add back aliases for secp256r1 / secp384r1 / secp521r1 from gh-203
  • bring back CURVE.nByteLength from gh-202
  • More preparations and deprecations for future v2 release

Full Changelog: 1.9.4...1.9.5

1.9.4

17 Jul 12:50
1.9.4
9b007be
Compare
Choose a tag to compare
  • Fix gh-201: invalid renaming of ProjConstructor
  • Add more deprecations for the upcoming v2

Full Changelog: 1.9.3...1.9.4

1.9.3

16 Jul 17:05
1.9.3
6c616ce
Compare
Choose a tag to compare

The release contains bugfixes and a few improvements which pave the way for upcoming v2.0.

There are lots of renamings and API adjustments; but all old code would work as-is. The code would visually flagged as "deprecated" (using jsdoc flag) in typescript-supported code environments, which makes it easy to upgrade to new versions.

  • Rename *privateKey to *secretKey everywhere for consistency with post-quantum and non-noble libraries
  • Add keygen method to curves which creates both secret and public keys
  • weierstrass: make endomorphism generic and work for all Koblitz curves
  • weierstrass: add fromBytes and toBytes to Signature, deprecate fromDER, fromCompact, toDERRawBytes, toCompactRawBytes
  • edwards: move edwardsToMontgomery into utils.toMontgomery
  • decaf, ristretto: new interface which makes it more similar to other Points
  • ed448: add ED448_TORSION_GROUP
  • curve: add curve.info interface to all curves for better interop.
  • curve: change public wNAF API
  • modular: add sqrt9mod16
  • hash-to-curve: move all hashers into _hasher props. E.g. secp256k1_hasher
  • test: Add ACVP test vectors

Sensitive code changes

  • wNAF: mostly renamings
  • Field bound validation: for scalars (Fn) and curve fields (Fp)

Full Changelog: 1.9.2...1.9.3

1.9.2

05 Jun 13:58
1.9.2
7932e34
Compare
Choose a tag to compare

The release contains bugfixes and a few improvements which pave the way for upcoming v2.0.

  • edwards, weierstrass: big refactor, implement much simpler ECDSA / EdDSA API. #192
    • Old code is still working until v2
    • New API is experimental until next patch release
    • toRawBytes => toBytes
    • ExtendedPoint, ProjectivePoint => Point
    • Point now has Fp and Fn static properties which are its fields
  • weierstrass: add support for ECDSA with cofactor>1 curves
  • weierstrass: add support for points having x:0
  • bls: big refactor, improve types, add new bls.longSignatures and bls.shortSignatures APIs
    • Old code is still working until v2
    • New API is experimental until next patch release
  • utils: reuse noble-hashes utils
  • Use randomBytes and hmac from noble-hashes by default

Sensitive code changes

  • edwards, weierstrass: refactor logic for range checks
  • weierstrass: improve sign() logic for k generation
  • weierstrass: harden multiplyUnsafe, stop using multiplyAndAddUnsafe

New contributors

  • Add a test that BLS12-381 augmented signatures can be verified by @randombit in #191

Full Changelog: 1.9.1...1.9.2

1.9.1

14 May 09:59
1.9.1
ede19f4
Compare
Choose a tag to compare
  • abstract/fft - new experimental implementation of FFT (Fast Fourier Transform) / NTT
  • abstract/edwards: verify curve parameters (equation) on initialization
  • abstract/weierstrass: verify curve parameters (discriminant) on initialization
  • abstract/weierstrass: improve getSharedSecret arg validation for rare curves
  • abstract/weierstrass: fix invalid sig recovery decoding length for rare curves
  • abstract/modular: improve sqrt calculation
  • x25519, x448: accept more valid inputs for priv / pub keys
  • secp256k1: improve tree-shaking

Full Changelog: 1.9.0...1.9.1

1.9.0

23 Apr 00:50
1.9.0
3174fa8
Compare
Choose a tag to compare

The release contains bugfixes and a few improvements which pave the way for upcoming v2.0.

  • Modules are now available with .js extension
    • Old: @noble/curves/ed25519
    • New: @noble/curves/ed25519.js
    • Old path is still available
    • This simplifies working in browsers natively without transpilers
  • poseidon: add support for sponge, grain LFSR
  • p256, p384, p521: merge into new "nist" module
  • weierstrass: prohibit y=0 when initializing
  • hash-to-curve: use inv0 everywhere to ensure ZERO elements are returned in exceptional cases
  • modular: improve sqrt logic (tonelliShanks, legendre)
  • modular: fix FpInvertBatch creating arrays with holes instead of arrays with undefined
  • pasta: deprecate curves
  • update noble-hashes to 1.8.0

Full Changelog: 1.8.2...1.9.0

1.8.2

14 Apr 22:09
1.8.2
99d08ea
Compare
Choose a tag to compare
  • Important: this release adjusts wNAF scalar multiplication logic
    • The adjustment is small (deduplication), but wNAF is sensitive code handling private keys
    • Verify the change yourself #184
  • edwards: (ed25519, ed448) always use complete formula in add()
  • edwards: (ed25519, ed448) ban points with z=0 (zero points have z=1)
  • ed25519: use slower, but more precise CURVE.a definition
  • weierstrass: freeze Signature on creation
  • weierstrass: Fix curve in Palemoon browser #176
  • hash-to-curve: throw better error for 0 in mapToCurve
  • tower: fix wrong Fp12 fields type
  • misc: new module. Contains jubjub and babyjubjub.
  • utils: use built-in Uint8Array toHex / fromHex when available. Gives 13x speed-up on 256b arrays, 20x speed-up on 32kb arrays

Other changes

  • Update noble-hashes to 1.7.2
  • Reduce standalone file build size by 0.5kb
  • Standalone build files are now attested in CI. Check out README for verification guide
  • Typescript source can now be used without compilation in node.js v24, due to erasableSyntaxOnly

New Contributors

Acknowledgments

Thanks to @ChALkeR for spotting edwards bug.

Full Changelog: 1.8.1...1.8.2

1.8.1

18 Jan 09:16
1.8.1
57a2404
Compare
Choose a tag to compare
  • Use typescript verbatimModuleSyntax to support future node.js type stripping
  • Update noble-hashes to 1.7.1
  • Improve docs

Full Changelog: 1.8.0...1.8.1

1.8.0

03 Jan 01:14
1.8.0
615dd18
Compare
Choose a tag to compare
  • The package is now available on JSR.
  • Use isolatedDeclarations typescript option, which massively simplifies documentation auto-gen, and more
    • Check out JSR page for one example
  • Add tons of comments everywhere to improve autocompletion, LLM code gen, and basic code understanding.
  • modular: fix isLE logic bug, reverse mapHashToField
  • Upgrade hashes to v1.7.0

Full Changelog: 1.7.0...1.8.0