A public-key signature system based on Ed25519 for the NATS ecosystem in javascript
npm install nkeys.jsA public-key signature system based on Ed25519 for the
NATS ecosystem system for JavaScript.




The nkeys.js library works in Deno, Node.js, and the browser!
For your Deno projects:
``javascript`
import {
createUser,
fromPublic,
fromSeed,
} from "https://deno.land/x/nkeys.js/modules/esm/mod.ts";
On node, and browsers you can get a build from npm:
`bash`
npm install nkeys.js
In your node projects:
`javascript`
const { createUser, fromSeed, fromPublic } = require("nkeys.js");
On your browser projects, make available the node/nkeys.js/nkeys.mjs, and then
`javascript`
import { createUser, fromPublic, fromSeed } from "https://host/path/nkeys.mjs";
`typescript
// create an user nkey KeyPair (can also create accounts, operators, etc).
const user = createUser();
// A seed is the public and private keys together.
const seed: Uint8Array = user.getSeed();
// Seeds are encoded into Uint8Array, and start with
// the letter 'S'. Seeds need to be kept safe and never shared
console.log(seeds start with s: ${seed[0] === "S".charCodeAt(0)});
// A seed's second letter encodes it's type:
// U for user,A
// for account,O
// for operatorsnkey is for a user? ${seed[1] === "U".charCodeAt(0)}
console.log();
// To view a seed, simply decode it:
console.log(new TextDecoder().decode(seed));
// you can recreate the keypair with its seed:
const priv = fromSeed(seed);
// Using the KeyPair, you can cryptographically sign content:
const data = new TextEncoder().encode("Hello World!");
const sig = priv.sign(data);
// and verify a signature:
const valid = user.verify(data, sig);
if (!valid) {
console.error("couldn't validate the data/signature against my key");
} else {
console.error("data was verified by my key");
}
// others can validate using your public key:
const publicKey = user.getPublicKey();
const pub = fromPublic(publicKey);
if (!pub.verify(data, sig)) {
console.error(couldn't validate the data/signature with ${publicKey});data was verified by ${publicKey}
} else {
console.info();
}
// when extracting with seeds or private keys
// you should clear them when done:
seed.fill(0);
// you should also clear the keypairs:
user.clear();
priv.clear();
``
Our support policy for Nodejs versions follows
Nodejs release support. We will support and
build nkeys.js on even-numbered Nodejs versions that are current or in LTS.
Unless otherwise noted, the NATS source files are distributed under the Apache
Version 2.0 license found in the LICENSE file.