noble cryptography is a high-security, easily auditable set of contained cryptographic libraries and tools with following features:
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.
There are 4 libraries right now, they are available on github, gitlab and NPM:
- No dependencies, tiny files
- Easily auditable TypeScript code
- Supported in all major browsers and stable node.js versions
- All releases are signed with PGP keys
- secp256k1 (GH, GL, NPM): RFC6979 deterministic ECDSA, BIP0340 Schnorr signatures, ECDH
- ed25519 (GH, GL, NPM): RFC8032 EDDSA, ristretto255 prime-order group
- bls12-381 (GH, GL, NPM): Boneh-Lynn-Shacham threshold signatures and pairings usable by zk-SNARKs
- hashes (GH, GL, NPM): SHA2, SHA3, RIPEMD, BLAKE2/3, HMAC, HKDF, PBKDF2 & Scrypt
Brief history of Noble
Demo 1: Elliptic curve calculator
This is a simple form that allows to calculate elliptic curve public keys and signatures with noble. “Random” button uses
crypto.getRandomValues, which is cryptographically secure RNG. We are converting EC x, y coordinates into base-16 form for compactness. The source code is available on GitHub.