@noble/curves
An audited, dependency-minimal JavaScript library implementing elliptic curve cryptography for signatures, key exchange, and pairings.
Repository Health
Technical Analysis
@noble/curves implements elliptic curve cryptography in pure JavaScript/TypeScript with no dependencies beyond its sibling @noble/hashes package. It covers the curves used across modern cryptography and blockchain protocols — secp256k1 (Bitcoin/Ethereum), ed25519/ed448 (EdDSA signatures), the NIST P-256/P-384/P-521 curves, X25519 key exchange, and pairing-friendly curves like BLS12-381 and bn254 used in threshold signatures and zero-knowledge systems.
The library has been independently security-audited multiple times and is built with constant-time operations where it matters to resist timing side-channels, while staying small enough to tree-shake into browser bundles. It’s part of the broader @noble family (alongside @noble/hashes and @noble/ciphers) that many high-profile JS crypto and wallet libraries build on top of.
What You Get
- secp256k1 with ECDSA and Schnorr signatures for Bitcoin/Ethereum-compatible applications
- ed25519 and ed448 EdDSA signature schemes plus X25519 key exchange
- NIST P-256, P-384, and P-521 curves for standards-compliant ECDSA
- Pairing-friendly curves (BLS12-381, bn254/alt_bn128) for threshold signatures and zk-SNARK systems
- Low-level curve-building abstractions (
abstract/) for defining custom Weierstrass, Edwards, or Montgomery curves - Optional WebCrypto-backed implementations for environments that prefer native crypto primitives
Common Use Cases
- Signing and verifying Bitcoin or Ethereum transactions with secp256k1 in a JS/TS wallet or node
- Implementing EdDSA (ed25519) signatures for SSH keys, Signal Protocol-style messaging, or Tor-adjacent tooling
- Building BLS threshold signature schemes or zk-SNARK-adjacent pairing operations with BLS12-381
- Adding standards-compliant P-256/P-384 ECDSA to a Node.js or browser app without a native crypto binding
Under The Hood
Architecture The library separates a generic abstract/ layer defining Weierstrass, Edwards/twisted-Edwards, and Montgomery curve math (point arithmetic, scalar multiplication, field arithmetic) from concrete curve modules (secp256k1.ts, ed25519.ts, nist.ts, bls12-381.ts, bn254.ts) that instantiate specific named curves and expose signature/key-exchange APIs on top. Tech Stack It’s a TypeScript library with a single runtime dependency on @noble/hashes for the hash functions curves need internally (SHA-256, SHA-512, Keccak, etc.), compiled to both CommonJS and ESM with full type declarations, and designed to tree-shake cleanly into browser bundles. Code Quality The project has been independently audited multiple times (audit reports are linked from the README), maintains extensive test vectors against reference implementations for each curve, and shows very active, consistent maintenance with frequent releases. API Design Each curve module exposes a consistent shape — key generation, sign/verify or key-exchange functions, and point serialization — so switching between curves (e.g. secp256k1 to ed25519) requires learning the pattern once; the abstract/ layer additionally lets advanced users define entirely custom curves using the same primitives.
Used by 2 apps in this directory
Hoppscotch
Developer Tools
A lightweight, offline-capable API development ecosystem for testing HTTP, GraphQL, WebSocket, MQTT, and SSE endpoints across web, desktop, and CLI.
Vibe Kanban
AI Agents · AI Code Assistants · Project Management
A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.