Skip to content

Instantly share code, notes, and snippets.

View ronnieroyston's full-sized avatar

Ronnie Royston ronnieroyston

View GitHub Profile
@ronnieroyston
ronnieroyston / jwe-a256kw.mjs
Created August 29, 2023 21:35
JSON Web Encryption (JWE) Token Key Wrapping AES256-KW w AES-GCM w Node.js Crypto Module
import { Buffer } from 'node:buffer';
import fs from "node:fs";
import url from 'node:url';
import path from "node:path";
const {createCipheriv, createDecipheriv, randomFill, generateKey} = await import('node:crypto');
var claims = {name:"Joe",roles:["member","admin"]};
var keyEncryptionKey;
var ivKEK;
var contentEncryptionKey;
@ronnieroyston
ronnieroyston / jws-es256.mjs
Last active August 23, 2023 03:36
JSON Web Signature (JWS) Token via Elliptic Curve Digital Signature Algorithm (ECDSA) Using P-256 and SHA-256 w Node.js Crypto Module
import { Buffer } from 'node:buffer';
import fs from "node:fs";
import url from 'node:url';
import path from "node:path";
const {createSign, createVerify, generateKeyPairSync} = await import('node:crypto');
var claims = {name:"Joe",roles:["member","admin"]};
var { privateKey, publicKey } = generateKeyPairSync("ec", {
namedCurve: 'secp256k1',
publicKeyEncoding: {
type: 'spki',
@ronnieroyston
ronnieroyston / jws-hs256.mjs
Last active August 23, 2023 02:33
JSON Web Signature (JWS) Token via HMAC using SHA-256 w Node.js Crypto Module
import { Buffer } from 'node:buffer';
import fs from "node:fs";
import url from 'node:url';
import path from "node:path";
const {createHmac, generateKey} = await import('node:crypto');
var claims = {name:"Joe",roles:["member","admin"]};
var secretKey;
(async function () {
secretKey = await generateSecretKey();
@ronnieroyston
ronnieroyston / jws-rs256.mjs
Last active August 22, 2023 21:51
JSON Web Signature (JWS) Token via Asymmetric RSA Key Pair (RSASSA-PKCS1-v1_5) Using Node.js Crypto Module
import { Buffer } from 'node:buffer';
import fs from "node:fs";
import url from 'node:url';
import path from "node:path";
const {createSign, createVerify, generateKeyPairSync} = await import('node:crypto');
var claims = {name:"Joe",roles:["member","admin"]};
var { privateKey, publicKey } = generateKeyPairSync("rsa", {
modulusLength: 2048,
publicKeyEncoding: {
type: 'spki',
@ronnieroyston
ronnieroyston / jwe-dir-a256gcm.mjs
Last active August 22, 2023 21:36
JSON Web Encryption (JWE) Token via Direct Encryption Using AES-GCM Secret Key w Node.js Crypto Module
import { Buffer } from 'node:buffer';
import fs from "node:fs";
import url from 'node:url';
import path from "node:path";
const {createCipheriv, createDecipheriv, createSecretKey, randomFill, generateKey} = await import('node:crypto');
var aesKey;
var claims = {name:"Joe",roles:["member","admin"]};
(async function () {
console.log("\x1b[31mInvalid Token")