age-encryption
is a TypeScript implementation of the
age file encryption format.
All low-level cryptographic operations are implemented with libsodium.js.
npm install age-encryption
import age from "age-encryption"
// Initialize the library (calls sodium.ready).
const { Encrypter, Decrypter, generateIdentity, identityToRecipient } = await age()
// Encrypt and decrypt a file with a new recipient / identity pair.
const identity = generateIdentity()
const recipient = identityToRecipient(identity)
console.log(identity)
console.log(recipient)
const e = new Encrypter()
e.addRecipient(recipient)
const ciphertext = e.encrypt("Hello, age!")
const d = new Decrypter()
d.addIdentity(identity)
const out = d.decrypt(ciphertext, "text")
console.log(out)
// Encrypt and decrypt a file with a passphrase.
const e = new Encrypter()
e.setPassphrase("burst-swarm-slender-curve-ability-various-crystal-moon-affair-three")
const ciphertext = e.encrypt("Hello, age!")
const d = new Decrypter()
d.addPassphrase("burst-swarm-slender-curve-ability-various-crystal-moon-affair-three")
const out = d.decrypt(ciphertext, "text")
console.log(out)
The library can be bundled with esbuild and used in a browser.
To bundle, run the bundle command in the package.json:
npm run bundle
This will generate a bundle.js file under dist.
Just include bundle.js and have fun! Please look at examples/browser.html for an example.