@peculiar/jose
About
@peculiar/jose
implements Javascript Object Signing and Encryption (jose).
Installation
npm install @peculiar/jose
Usage
Browser
TODO: Setup browser compiler and add unpkg link
NodeJS
import * as jose from "@peculiar/jose";
NOTE: For WebCrypto implementation in NodeJS use third-party modules (eg @peculiar/webcrypto
).
Examples
Create JWS
const alg = {
name: "ECDSA",
hash: "SHA-384",
namedCurve: "P-384",
};
const keys = await crypto.subtle.generateKey(alg, false, ["sign", "verify"]);
const jws = new jose.JsonWebSignature({}, crypto);
jws.setProtected({
jwk: await crypto.subtle.exportKey("jwk", keys.publicKey),
nonce: "nonce_value",
url: "http://test.url",
});
jws.setPayload({
value: "hello world"
});
await jws.sign({ ...alg, hash: "SHA-384" }, keys.privateKey);
console.log("Compact:", jws.toString(true));
Verify JWS
const jws = new jose.JsonWebSignature({}, crypto);
jws.parse("eyJqd2siOnsia3R5IjoiRUMiLCJjcnYiOi...vfZo3c_EVDje7ckgprp5NPvkQUODOub9k");
const ok = await jws.verify();