noble cryptography is a high-security, easily auditable set of contained cryptographic libraries with following features:

  • Zero or minimal dependencies
  • Highly readable TypeScript / JS code
  • PGP-signed releases and transparent NPM builds

The idea was to: 1) improve knowledge of cryptography 2) improve supply chain security of JS ecosystem 3) provide libraries that could be used for learning, because other libs are too low-level / unfriendly to beginners.

Active projects:

  • ciphers (github, npm): cryptographic ciphers, including Salsa20, ChaCha, AES and FF1.
  • curves (github, npm): elliptic curve cryptography, including Weierstrass, Edwards, Montgomery curves, pairings, hash-to-curve, poseidon hash, schnorr, secp256k1, ed25519, ed448, p521, bn254, bls12-381 and others.
    • 4kb versions of curves with even better auditability and rarer update schedule: secp256k1 (github, npm) and ed25519 (github, npm)
  • hashes (github, npm): hash functions, MACs & KDFs, including SHA, RIPEMD, BLAKE, HMAC, HKDF, PBKDF & Scrypt
  • post-quantum (github, npm): post-quantum public key algorithms: ML-KEM, ML-DSA, SLH-DSA aka Kyber, Dilithium and SPHINCS+

The code is also available on gitlab and codeberg

History

scure

Noble’s non-cryptographic sister project. Audited micro-libraries:

  • Jan 2022: base base64, bech32…, bip32 hdkey, bip39 mnemonics
  • Feb 2023: btc-signer transactions, segwit, taproot, psbt, multisig
  • Sep 2023: starknet stark curve, pedersen and poseidon hash

Apps built with noble

GitHub exposes a graph of dependents that use noble. Check it out: ciphers, curves, hashes. Below are selected apps and libraries. To add your own, leave a comment.

Resources, articles, documentation

Demo

You can try out noble in the browser JS console of the webpage. There are 3 global variables: nobleCiphers, nobleCurves, nobleHashes. The webpage also has two demo apps:

  • App I: Elliptic curve calculator, calculate public keys and signatures
  • App II: Add, subtract, multiply points on the chosen elliptic curve