npm / @noble/curves
@noble/curves
What changed in @noble/curves 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
6 breaking8 security1 new APIs and options8 performance1 behavior and defaults7 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@noble/curves 231 changes
Breaking changes 6
ECDH and ECDSA reject the identity even when the point type’s generic codec permits it.
FROST enforces RFC 9591 point validation for BLS and BN.
Non-canonical BLS signature encodings are now rejected.
Recovered ECDSA signatures are now bound to their recovery id.
ZIP215 mode is off by default, using stricter verification instead.
Empty DST or count now throws.
Security 8
ECDSA signature and INTEGER sizes are bounded before bigint conversion, limiting disproportionate parsing and allocation work from malformed inputs.
Round-one transcript substitution is hardened against, protecting users who do not preserve rounds as specified by FROST.
POPRF replaces inversion with a constant-time version.
Passed arguments are snapshotted so security-sensitive state cannot be mutated.
Secret-scalar operations now use blinding, un-precomputed points use constant-time fixed-window multiplication, and modular arithmetic helpers are hardened to provide actual constant-time guarantees.
FROST DKG round-2 retry handling was hardened.
getPublicKey and sign got slower after reducing the window size and hardening constant-time execution; long-running apps can restore 2.2.0-level speed with precompute(8).
X25519 was hardened against a remote timing attack that could reveal up to 4.036 bits of a long-term private key across many samples.
New APIs and options 1
Implements FROST threshold signatures from RFC 9591.
Performance 8
BLS signatures are 2× faster.
Verification of recovered signatures, pairing tower, FFT, Pippenger, and joint-MSM paths in FROST and OPRF were optimized.
ECDSA and EdDSA verification is up to 32% faster.
First getPublicKey or sign initialization is reduced by about 2× for ed25519, p256, p384, and p521.
Weierstrass ECDH is up to 19% faster.
x25519 getPublicKey is 2.7× faster.
BLS point decoding is improved.
Tree-shaking across modules was improved, resulting in smaller bundles.
Behavior and default changes 1
Curves that disallow infinity cannot encode it; opted-in curves use the canonical SEC 1 0x00 encoding.
Fixes and other changes 7
The Edwards-to-Montgomery and Montgomery-to-Edwards conversion helpers were corrected.
Uses the correct curve and curve parameters.
DER parsing is improved.
Fixes the Fp6 and Fp12 order for bls and bn.
Random values are reduced modulo N instead of causing an error.
Compilation issues on TypeScript v6 are fixed.
Byte array types work across TypeScript 5.6 and TypeScript 5.9+.