Back to Explore

paulmillr/noble-curves

GitHub
1 updates · last 90 days1 watchersOpen source

Last release: 1 month ago

Audited, minimal JavaScript implementation of elliptic curve cryptography, including key operations like ECDSA, EdDSA, Schnorr signatures, ECDH, and related building blocks such as hash-to-curve and OPRFs. Useful for developers who need tree-shakeable, TypeScript/JavaScript-friendly curve code with cross-library tests and fuzzing for correctness.

Project status

  • The repository appears actively maintained, with a recent upstream push on 2026-05-14 and feature and hardening updates published on 2026-04-12 (v2.2.0).
  • Apparent update cadence is moderately paced, with updates spaced months apart (v2.0.0 on 2025-08-25, v2.0.1 on 2025-09-22, then v2.2.0 on 2026-04-12).

AI summary generated Today

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • 2.2.0

    1 month ago

    Release 2.2.0 focuses on hardening and type-level compatibility improvements across the library, while adding FROST threshold signatures (RFC 9591). It also introduces additional strictness around ZIP-215 decoding/verification, hash-to-curve edge cases, and various parsing and math routines.

    BreakingSecurityFeatures
  • 2.0.1

    8 months ago

    Release 2.0.1 focuses on packaging and API surface adjustments, plus a small behavioral hardening in BLS verification and extra runtime metadata for FFT roots of unity. It also updates @noble/hashes to 2.0.1 and adds explicit submodule exports in package.json to improve TypeScript autocompletion.

    BreakingFeatures
  • 2.0.0

    9 months ago

    Release 2.0.0 of noble-curves is a major refactor that makes the package ESM-only, tightens input validation, and reorganizes many curve and signature APIs around Uint8Array-first interfaces. The release notes describe extensive breaking changes for ECDSA and BLS, along with module renames, removals, and stricter formatting rules for signatures and points.

    BreakingSecurityFeatures
  • 1.9.7

    9 months ago

    v1.9.7 mainly performs API renames and deprecation work in the EdDSA and Weierstrass abstractions. The release notes explicitly call out an Edwards experimental helper rename, and a Weierstrass type compatibility change, while the code diff also shows a larger refactor to the abstract utils re-exports.

    BreakingFeatures
  • 1.9.6

    10 months ago

    Version 1.9.6 focuses on internal curve implementation updates, plus an API surface change to curve length metadata. It adds earlier point precomputations for Weierstrass curves, refactors BLS tower arithmetic, and adjusts Ed448 field configuration to use different bit lengths for ed448 versus decaf448.

    Breaking
  • 1.9.5

    10 months ago

    Release 1.9.5 focuses on fixing build/rollup warnings and restoring some previously changed curve aliases (secp256r1, secp384r1, secp521r1). It also mentions additional preparations and deprecations for the future v2 release, including bringing back CURVE.nByteLength.

    Features
  • 1.9.4

    10 months ago

    Release 1.9.4 primarily updates TypeScript typings around legacy curve exports. It includes a fix for gh-201 related to `ProjConstructor`, and it adds more deprecation JSDoc annotations ahead of a future v2 cleanup.

  • 1.9.3

    10 months ago

    Release 1.9.3 is primarily a set of renamings and API adjustments intended to ease migration toward upcoming v2.0, with most backwards behavior preserved via deprecations. It includes curve API improvements like adding `keygen`, enhancing weierstrass endomorphism support, signature coder changes, and a new `curve.info` interface, along with additional test vectors (ACVP).

    Features
  • 1.9.2

    6/5/2025

    Release 1.9.2 focuses on bugfixes and preparatory refactors for upcoming v2.0. It introduces major internal API/type changes for EdDSA/ECDSA and BLS signatures, and it adds curve/multiplication hardening improvements plus some utilities refactoring.

    BreakingSecurityFeatures
  • 1.9.1

    5/14/2025

    Release 1.9.1 adds a new experimental FFT/NTT implementation under abstract/fft, and strengthens curve parameter validation during initialization for Edwards and Weierstrass curves. It also adjusts x25519 and x448 input handling to accept more valid key encodings, improves sqrt calculations in abstract/modular, and includes a secp256k1 tree-shaking optimization.

    Features